@@ -67,9 +67,10 @@ def _create_hit_events(self, price_events_manager, new_price, new_price_time):
67
67
:param price_events_manager: the price events manager to use
68
68
:param new_price: the new trailing price
69
69
"""
70
+ self .origin_stop_price = self ._calculate_stop_price (new_price )
70
71
if self .trailing_stop_price_hit_event is None :
71
72
self .trailing_stop_price_hit_event = price_events_manager .new_event (
72
- self ._calculate_stop_price ( new_price ) , new_price_time ,
73
+ self .origin_stop_price , new_price_time ,
73
74
self .side is enums .TradeOrderSide .BUY , self .allow_instant_fill )
74
75
if self .trailing_price_hit_event is None :
75
76
# don't allow instant fill since this event should only be triggered by next recent trades and prices
@@ -143,17 +144,24 @@ async def _on_price_hit(self):
143
144
f"replacing stop..." )
144
145
await self ._reset_events (decimal .Decimal (str (prices_manager .mark_price )), prices_manager .mark_price_set_time )
145
146
147
+ def on_fill_actions (self ):
148
+ self .filled_price = self .origin_stop_price
149
+ self .filled_quantity = self .origin_quantity
150
+ self ._update_total_cost ()
151
+ order_class .Order .on_fill_actions (self )
152
+
146
153
async def on_filled (self ):
147
154
"""
148
155
Create an artificial when trailing stop is filled
149
156
"""
150
157
await order_class .Order .on_filled (self )
151
- # TODO replace with chained order ?
152
- await self .trader .create_artificial_order (enums .TraderOrderType .SELL_MARKET
153
- if self .side is enums .TradeOrderSide .SELL
154
- else enums .TraderOrderType .BUY_MARKET ,
155
- self .symbol , self .origin_stop_price ,
156
- self .origin_quantity , self .origin_stop_price )
158
+ if not self .trader .simulate and self .is_self_managed ():
159
+ # TODO replace with chained order ?
160
+ await self .trader .create_artificial_order (enums .TraderOrderType .SELL_MARKET
161
+ if self .side is enums .TradeOrderSide .SELL
162
+ else enums .TraderOrderType .BUY_MARKET ,
163
+ self .symbol , self .origin_stop_price ,
164
+ self .origin_quantity , self .origin_stop_price )
157
165
158
166
def _clear_event_and_tasks (self ):
159
167
"""
0 commit comments