From e99afe7597630a92bf0db40aff3148f3843fb411 Mon Sep 17 00:00:00 2001 From: Ramon Bastiaans Date: Mon, 5 Feb 2018 22:38:33 +0100 Subject: [PATCH] Include transaction fees into balance check determination of being able to trade --- freqtrade/main.py | 11 ++++++++--- freqtrade/tests/test_main.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index 6a1109d2c..a5b06928a 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -435,10 +435,15 @@ def create_trade(stake_amount: float, interval: int) -> bool: stake_amount ) whitelist = copy.deepcopy(_CONF['exchange']['pair_whitelist']) - # Check if stake_amount is fulfilled - if exchange.get_balance(_CONF['stake_currency']) < stake_amount: + + # We need minimum funds of: stake amount + 2x transaction (buy+sell) fee to create a trade + min_required_funds = stake_amount + (stake_amount * (exchange.get_fee() * 2)) + + # Check if we have enough funds to be able to trade + if exchange.get_balance(_CONF['stake_currency']) < min_required_funds: raise DependencyException( - 'stake amount is not fulfilled (currency={})'.format(_CONF['stake_currency']) + 'not enough funds to create trade (balance={}, required={})'.format( + _CONF['stake_currency'], min_required_funds) ) # Remove currently opened and latest pairs from whitelist diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py index 134f912e7..62ccd2d5c 100644 --- a/freqtrade/tests/test_main.py +++ b/freqtrade/tests/test_main.py @@ -220,7 +220,7 @@ def test_create_trade_no_stake_amount(default_conf, ticker, mocker): get_ticker=ticker, buy=MagicMock(return_value='mocked_limit_buy'), get_balance=MagicMock(return_value=default_conf['stake_amount'] * 0.5)) - with pytest.raises(DependencyException, match=r'.*stake amount.*'): + with pytest.raises(DependencyException, match=r'.*not enough funds.*'): create_trade(default_conf['stake_amount'], int(default_conf['ticker_interval']))