On_stop_order里面分成两步骤做了一些处理,但是感觉第一个步骤处理完的变量并没有被缓存下来,第二个步骤条件不可能被满足。能否解答?
`
def on_stop_order(self, stop_order: StopOrder):
# 只处理撤销或者触发的停止单委托
if stop_order.status == StopOrderStatus.WAITING:
return
# 移除已经结束的停止单委托号
for buf_orderids in [
self.buy_vt_orderids,
self.sell_vt_orderids,
self.short_vt_orderids,
self.cover_vt_orderids
]:
if stop_order.stop_orderid in buf_orderids:
buf_orderids.remove(stop_order.stop_orderid) # 为什么是在这个临时list中remove,没有去各个orderids的list中remove?
# 发出新的委托
# Q:这部分代码真的会被执行吗?
if self.pos == 0:
if not self.buy_vt_orderids:
if self.buy_price:
self.buy_vt_orderids = self.buy(self.buy_price, self.fixed_size, True)
self.buy_price = 0
# 没有再做遍历撤单了,因为锁仓交易可能把一笔拆成好几笔,不做额外的撤单操作
if not self.short_vt_orderids:
if self.short_price:
self.short_vt_orderids = self.short(self.short_price, self.fixed_size, True)
self.short_price = 0
elif self.pos > 0:
if not self.sell_vt_orderids:
if self.sell_price:
self.sell_vt_orderids = self.sell(self.sell_price, abs(self.pos), True)
self.sell_price = 0
else:
if not self.cover_vt_orderids:
if self.cover_price:
self.cover_vt_orderids = self.cover(self.cover_price, abs(self.pos), True)
self.cover_price = 0`