` def cross_stop_order(self):
"""
Cross stop order with last bar/tick data.
"""
if self.mode == BacktestingMode.BAR:
long_cross_price = self.bar.high_price
short_cross_price = self.bar.low_price
long_best_price = self.bar.open_price
short_best_price = self.bar.open_price
else:
long_cross_price = self.tick.last_price
short_cross_price = self.tick.last_price
long_best_price = long_cross_price
short_best_price = short_cross_price
for stop_order in list(self.active_stop_orders.values()):
# Check whether stop order can be triggered.
long_cross = (
stop_order.direction == Direction.LONG
and stop_order.price <= long_cross_price
)
short_cross = (
stop_order.direction == Direction.SHORT
and stop_order.price >= short_cross_price
)
`
这里是cta engine里面检查cross_stop_order的函数,这里可以看到每一根bar都会在这里把所有的stop order 都遍历一篇,每一个 stop order 都会推送orderData 和 tradeData出去,但是如果我在处理第一个trade data的时候发现满足条件,想停止遍历后一个stop order就做不到了,因为已经缓存下来并且会继续遍历下去,请问怎么样设计才能实现这个逻辑呢?