added partial fills for dry run

If we buy 2 coins at $2.5 and in order book only 1 coin is left for $2.5 and then the order should be partially filled. Previously it would be fully filled.
This commit is contained in:
மனோஜ்குமார் பழனிச்சாமி
2022-04-03 17:47:33 +05:30
parent ddb0254999
commit 177ebb743b
6 changed files with 105 additions and 52 deletions

View File

@@ -713,7 +713,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None:
'filled': 0.0,
}
),
_is_dry_limit_order_filled=MagicMock(return_value=True),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_: _[-2:]),
get_fee=fee,
)
mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=1000)
@@ -751,7 +751,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None:
freqtradebot.state = State.RUNNING
assert cancel_order_mock.call_count == 0
mocker.patch(
'freqtrade.exchange.Exchange._is_dry_limit_order_filled', MagicMock(return_value=False))
'freqtrade.exchange.Exchange._fill_dry_limit_order', MagicMock(side_effect=lambda *_: (None, 0)),)
freqtradebot.enter_positions()
# make an limit-buy open trade
trade = Trade.query.filter(Trade.id == '3').first()

View File

@@ -1103,7 +1103,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets):
fetch_ticker=ticker,
get_fee=fee,
markets=PropertyMock(return_value=markets),
_is_dry_limit_order_filled=MagicMock(return_value=False),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_ :(None, 0)),
)
patch_get_signal(ftbot)

View File

@@ -301,7 +301,7 @@ def test_status_handle(default_conf, update, ticker, fee, mocker) -> None:
'freqtrade.exchange.Exchange',
fetch_ticker=ticker,
get_fee=fee,
_is_dry_limit_order_filled=MagicMock(return_value=True),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_: _[-2:]),
)
status_table = MagicMock()
mocker.patch.multiple(
@@ -1004,7 +1004,7 @@ def test_telegram_forcesell_handle(default_conf, update, ticker, fee,
'freqtrade.exchange.Exchange',
fetch_ticker=ticker,
get_fee=fee,
_is_dry_limit_order_filled=MagicMock(return_value=True),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_: _[-2:]),
)
freqtradebot = FreqtradeBot(default_conf)
@@ -1065,7 +1065,7 @@ def test_telegram_forcesell_down_handle(default_conf, update, ticker, fee,
'freqtrade.exchange.Exchange',
fetch_ticker=ticker,
get_fee=fee,
_is_dry_limit_order_filled=MagicMock(return_value=True),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_: _[-2:]),
)
freqtradebot = FreqtradeBot(default_conf)
@@ -1128,7 +1128,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None
'freqtrade.exchange.Exchange',
fetch_ticker=ticker,
get_fee=fee,
_is_dry_limit_order_filled=MagicMock(return_value=True),
_fill_dry_limit_order=MagicMock(side_effect=lambda *_: _[-2:]),
)
default_conf['max_open_trades'] = 4
freqtradebot = FreqtradeBot(default_conf)