Skip to content

Commit bf5fc1a

Browse files
committed
Fixed Trade update and cancellation of open limit orders
Added extra info for Entry target
1 parent 745a8c6 commit bf5fc1a

File tree

4 files changed

+37
-34
lines changed

4 files changed

+37
-34
lines changed

Bot/Strategy/TradingStrategy.py

+17-30
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,12 @@ def on_order_status_changed(self, t: Target, data):
103103

104104
def validate_target_orders(self, force_cancel_open_orders=False):
105105
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 = {}
108109
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)}
111112

112113
except BinanceAPIException as bae:
113114
self.logError(str(bae))
@@ -117,37 +118,23 @@ def validate_target_orders(self, force_cancel_open_orders=False):
117118

118119
update_required = False
119120

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))
134121

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)
142128

143-
active_trade_target.set_canceled()
129+
active_trade_target.set_canceled()
144130

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
147133

148-
update_required = True
134+
update_required = True
149135

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'))
151138

152139
if force_cancel_open_orders:
153140
self.cancel_all_open_orders()

admin/src/app/trade-details.ts

+3
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ export class EntryTarget {
138138
Object.assign(this, init);
139139
}
140140

141+
id: number;
142+
date: string;
143+
best_price: string;
141144
status: TradeStatus;
142145
price: string;
143146
vol: string;

admin/src/app/trade-details/entry-details.component.html

+13
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@
3131
<input matInput type="text" id="targetVol" name="targetVol" [(ngModel)]="entryTarget.vol" disabled="{{entryTarget.isCompleted()}}">
3232
</mat-form-field>
3333
</td>
34+
<td>
35+
<mat-form-field class="full-width exit-target-input" appearance="standard">
36+
<mat-label>Status</mat-label>
37+
<input matInput type="text" id="status" name="status" [(ngModel)]="entryTarget.status" disabled>
38+
</mat-form-field>
39+
</td>
40+
<td>
41+
<mat-form-field class="full-width exit-target-input" appearance="standard">
42+
<mat-label>Order ID</mat-label>
43+
<input matInput type="text" id="id" name="id" [(ngModel)]="entryTarget.id" disabled>
44+
<mat-hint *ngIf="entryTarget.id && entryTarget.best_price" matTooltip="Trigger Price">tp: {{entryTarget.best_price | number: '1.0-8'}}</mat-hint>
45+
</mat-form-field></td>
46+
<td>
3447
<td>
3548
</td>
3649
<td>

admin/src/app/trade-details/exit-details.component.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<mat-form-field class="full-width exit-target-input" appearance="standard">
4040
<mat-label>Volume</mat-label>
4141
<input matInput type="text" id="targetPrice" name="targetPrice" [(ngModel)]="exitTarget.vol">
42-
<mat-hint>{{exitTarget.calculated_volume}}</mat-hint>
42+
<mat-hint *ngIf="exitTarget.calculated_volume">{{exitTarget.calculated_volume | number: '1.0-8'}}</mat-hint>
4343
</mat-form-field>
4444
</td>
4545
<td>
@@ -48,19 +48,19 @@
4848
<td>
4949
<mat-form-field class="full-width exit-target-input" appearance="standard">
5050
<mat-label>Stop Loss</mat-label>
51-
<input matInput type="text" id="targetPrice" name="targetPrice" [(ngModel)]="exitTarget.sl">
51+
<input matInput type="text" id="sl" name="sl" [(ngModel)]="exitTarget.sl">
5252
</mat-form-field>
5353
</td>
5454
<td>
5555
<mat-form-field class="full-width exit-target-input" appearance="standard">
5656
<mat-label>Status</mat-label>
57-
<input matInput type="text" id="targetPrice" name="targetPrice" [(ngModel)]="exitTarget.status" disabled>
57+
<input matInput type="text" id="status" name="status" [(ngModel)]="exitTarget.status" disabled>
5858
</mat-form-field>
5959
</td>
6060
<td>
6161
<mat-form-field class="full-width exit-target-input" appearance="standard">
6262
<mat-label>Order ID</mat-label>
63-
<input matInput type="text" id="targetPrice" name="targetPrice" [(ngModel)]="exitTarget.id" disabled>
63+
<input matInput type="text" id="id" name="id" [(ngModel)]="exitTarget.id" disabled>
6464
<mat-hint *ngIf="exitTarget.id && exitTarget.best_price" matTooltip="Trigger Price">tp: {{exitTarget.best_price | number: '1.0-8'}}</mat-hint>
6565
</mat-form-field></td>
6666
<td>

0 commit comments

Comments
 (0)