代码中我用print打印self.pos出来,不知道为何self.pos的值有点不按常理出牌。头一次打印是 -1, 于是我cover short order了,随后建了一个buy order。第二次on_bar,再次打印self.pos,不知怎么就变成3 了?按道理不是应该是 1 么?
代码中我用print打印self.pos出来,不知道为何self.pos的值有点不按常理出牌。头一次打印是 -1, 于是我cover short order了,随后建了一个buy order。第二次on_bar,再次打印self.pos,不知怎么就变成3 了?按道理不是应该是 1 么?
这个需要自己排查一下代码,进行委托下单操作时,订单数量是否为1。或者两个k线推送之间是否有其他下单逻辑。可以在on_trade下打印trade,看一下具体时什么时候达成的成交和成交的具体信息
用tick数据成交容易出现此问题,原因是你的buy委托单还没有成交的时候下一个TICK又来了,系统又重复下单。解决办法是下了委托单设置一个判断条件,禁止下重复委托单,成交后在on_trade里面取消禁止条件。