如果我开仓后同时挂止盈和止损,那么止损的时候得先撤销止盈单,这个怎么处理呢?刚撤销也不一定马上就能平仓吧?有反应时间。
如果我开仓后同时挂止盈和止损,那么止损的时候得先撤销止盈单,这个怎么处理呢?刚撤销也不一定马上就能平仓吧?有反应时间。
可以试试本地停止单
收到撤单的on_order回报后,再发出平仓委托
现有的样例策略中on_order的很少,帮忙补几句on_order代码吧,谢谢了
def on_tick(self, tick: TickData):
# 止损后马上撤止盈单
if (self.pos > 0 and tick.last_price < self.long_stop_loss):
for orderid in self.profit_sell_orderids :
self.cancel_order(orderid)
def on_order(self, order: OrderData):
# 查profit_sell_orderids 的回报,如果是撤销状态,则强平
# 不确定是不是这样写
if order.status == Status.CANCELLED and order.vt_orderid in self.profit_sell_orderids:
# 强平多单,强平的价格:order.price不行吧?这是撤单
def on_trade(self, trade: TradeData):
# 多单成交后马上挂止盈单
if trade.direction == Direction.LONG and trade.offset == Offset.OPEN:
# 止损(不可以用本地止损单)
# self.stop_sell_orderids = self.sell(self.long_stop_loss, abs(self.pos), True)
# 止盈
self.profit_sell_orderids = self.sell(self.long_take_profit, abs(self.pos), False)