split update_trade
This commit is contained in:
@@ -1870,15 +1870,23 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
|
|
||||||
trade.update_trade(order_obj)
|
trade.update_trade(order_obj)
|
||||||
|
|
||||||
if order.get('status') in constants.NON_OPEN_EXCHANGE_STATES:
|
trade = self._update_trade_after_fill(trade, order_obj)
|
||||||
|
Trade.commit()
|
||||||
|
|
||||||
|
self.order_close_notify(trade, order_obj, stoploss_order, send_msg)
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _update_trade_after_fill(self, trade: Trade, order: Order) -> Trade:
|
||||||
|
if order.status in constants.NON_OPEN_EXCHANGE_STATES:
|
||||||
# If a entry order was closed, force update on stoploss on exchange
|
# If a entry order was closed, force update on stoploss on exchange
|
||||||
if order.get('side') == trade.entry_side:
|
if order.ft_order_side == trade.entry_side:
|
||||||
trade = self.cancel_stoploss_on_exchange(trade)
|
trade = self.cancel_stoploss_on_exchange(trade)
|
||||||
if not self.edge:
|
if not self.edge:
|
||||||
# TODO: should shorting/leverage be supported by Edge,
|
# TODO: should shorting/leverage be supported by Edge,
|
||||||
# then this will need to be fixed.
|
# then this will need to be fixed.
|
||||||
trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True)
|
trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True)
|
||||||
if order.get('side') == trade.entry_side or (trade.amount > 0 and trade.is_open):
|
if order.ft_order_side == trade.entry_side or (trade.amount > 0 and trade.is_open):
|
||||||
# Must also run for partial exits
|
# Must also run for partial exits
|
||||||
# TODO: Margin will need to use interest_rate as well.
|
# TODO: Margin will need to use interest_rate as well.
|
||||||
# interest_rate = self.exchange.get_interest_rate()
|
# interest_rate = self.exchange.get_interest_rate()
|
||||||
@@ -1903,11 +1911,7 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
after_fill=True)
|
after_fill=True)
|
||||||
# Updating wallets when order is closed
|
# Updating wallets when order is closed
|
||||||
self.wallets.update()
|
self.wallets.update()
|
||||||
Trade.commit()
|
return trade
|
||||||
|
|
||||||
self.order_close_notify(trade, order_obj, stoploss_order, send_msg)
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def order_close_notify(
|
def order_close_notify(
|
||||||
self, trade: Trade, order: Order, stoploss_order: bool, send_msg: bool):
|
self, trade: Trade, order: Order, stoploss_order: bool, send_msg: bool):
|
||||||
|
|||||||
Reference in New Issue
Block a user