From 71636e8326131ffde0023cbc49aba12f8c791fd5 Mon Sep 17 00:00:00 2001 From: Ramon Bastiaans Date: Sun, 4 Feb 2018 23:43:30 +0100 Subject: [PATCH] Don't cancel partial filled buy orders that leave unsellable amount --- freqtrade/main.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index b9150f1dc..6a1109d2c 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -165,7 +165,20 @@ def handle_timedout_limit_buy(trade: Trade, order: Dict) -> bool: # if trade is partially complete, edit the stake details for the trade # and close the order - trade.amount = order['amount'] - order['remaining'] + + new_trade_amount = order['amount'] - order['remaining'] + (min_qty, max_qty, step_qty) = exchange.get_trade_qty(trade.pair) + + if min_qty: + # Remaining amount must be exchange minimum order quantity to be able to sell it + if new_trade_amount < min_qty: + logger.info('Wont cancel partial filled buy order that timed out for {}:'.format( + trade) + + 'remaining amount {} too low for new order '.format(new_trade_amount) + + '(minimum order quantity: {})'.format(new_trade_amount, min_qty)) + return False + + trade.amount = new_trade_amount trade.stake_amount = trade.amount * trade.open_rate trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade)