@@ -103,11 +103,12 @@ def on_order_status_changed(self, t: Target, data):
103
103
104
104
def validate_target_orders (self , force_cancel_open_orders = False ):
105
105
NEW_STATUSES = [FXConnector .ORDER_STATUS_NEW , FXConnector .ORDER_STATUS_PARTIALLY_FILLED ]
106
- has_open_orders = False
107
- exchange_orders = {}
106
+
107
+ open_exchange_orders = {}
108
+ recent_orders = {}
108
109
try :
109
- exchange_orders = self .fx .get_all_orders (self .symbol ())
110
- has_open_orders = any ([ eo [ 'status' ] in NEW_STATUSES for eo in exchange_orders . values ()])
110
+ recent_orders = self .fx .get_all_orders (self .symbol ())
111
+ open_exchange_orders = { k : v for k , v in recent_orders . items () if ( v [ 'status' ] in NEW_STATUSES )}
111
112
112
113
except BinanceAPIException as bae :
113
114
self .logError (str (bae ))
@@ -117,37 +118,23 @@ def validate_target_orders(self, force_cancel_open_orders=False):
117
118
118
119
update_required = False
119
120
120
- if has_open_orders and len (exchange_orders ) > 0 :
121
- for active_trade_target in active_trade_targets :
122
-
123
- if active_trade_target .id not in exchange_orders :
124
- active_trade_target .set_canceled ()
125
- update_required = True
126
- else :
127
- s = exchange_orders [active_trade_target .id ]['status' ]
128
- if s in NEW_STATUSES :
129
-
130
- # check if price in file is the same as on the exchange
131
- # trade_prices = {self.exchange_info.adjust_price(active_trade_target.price)}
132
- # if active_trade_target.is_smart():
133
- # trade_prices.add(self.exchange_info.adjust_price(active_trade_target.best_price))
134
121
135
- # exchange_prices = {float(exchange_orders[active_trade_target.id]['price']),
136
- # float(exchange_orders[active_trade_target.id]['stop_price'])}
137
-
138
- # if not PriceHelper.is_float_price(active_trade_target.price) or len(
139
- # trade_prices & exchange_prices) == 0:
140
- # self.logInfo('Target price changed: {}'.format(active_trade_target))
141
- self .fx .cancel_order (self .symbol (), active_trade_target .id )
122
+ for active_trade_target in active_trade_targets :
123
+ if active_trade_target .id not in open_exchange_orders :
124
+ active_trade_target .set_canceled ()
125
+ update_required = True
126
+ else :
127
+ self .fx .cancel_order (self .symbol (), active_trade_target .id )
142
128
143
- active_trade_target .set_canceled ()
129
+ active_trade_target .set_canceled ()
144
130
145
- if active_trade_target .is_smart ():
146
- active_trade_target .best_price = 0
131
+ if active_trade_target .is_smart ():
132
+ active_trade_target .best_price = 0
147
133
148
- update_required = True
134
+ update_required = True
149
135
150
- update_required |= self ._update_trade_target_status_change (active_trade_target , s )
136
+ update_required |= self ._update_trade_target_status_change (
137
+ active_trade_target , recent_orders .get (active_trade_target .id , {}).get ('status' , 'UNKNOWN' ))
151
138
152
139
if force_cancel_open_orders :
153
140
self .cancel_all_open_orders ()
0 commit comments