在策略中,都是用self.pos>0或self.pos<0或self.pos == 0来作为判断开仓的条件,但如果是在on_tick中开仓的话,会因on_tick推送太快,self.pos状态未能及时改变而导致重复下单的情况发生,请懂的朋友指点一下,如何解决这个问题,是否需要在on_order或on_trade中再加上判断条件,如何来做呢?
在策略中,都是用self.pos>0或self.pos<0或self.pos == 0来作为判断开仓的条件,但如果是在on_tick中开仓的话,会因on_tick推送太快,self.pos状态未能及时改变而导致重复下单的情况发生,请懂的朋友指点一下,如何解决这个问题,是否需要在on_order或on_trade中再加上判断条件,如何来做呢?
可参考微信公众号(vnpy-community)里的进阶课程→CTA策略→第29节委托控制。
不要用self.pos作为判断开仓的条件,可以设置一个open_flag,close_flag这样的标志变量,发单后把flag置为1
要保证交易信号生成机制与交易执行机制的一致性: