我用的是5分钟的k线进行回测发现的一些问题
大概描述下: 比如我现在已经有多单一手,当时间在9:10 的时候满足我平仓的条件,触发平仓,但是没有成交。然后在9:15 又触发我另外一个平仓条件,但是也是没有立刻成交。 在9:20 分的时候,我在on_trade 函数下看到打印的两个成交记录。此时self.pos 变成了-1。 这个是不是有问题啊?
第一,我没有下空单, 第二 即使我平仓了两次,但是第二次平仓应该是在我第一次平仓后看下当前的仓位,没有仓位,硬生生的减了1.
求高人指点下
我用的是5分钟的k线进行回测发现的一些问题
大概描述下: 比如我现在已经有多单一手,当时间在9:10 的时候满足我平仓的条件,触发平仓,但是没有成交。然后在9:15 又触发我另外一个平仓条件,但是也是没有立刻成交。 在9:20 分的时候,我在on_trade 函数下看到打印的两个成交记录。此时self.pos 变成了-1。 这个是不是有问题啊?
第一,我没有下空单, 第二 即使我平仓了两次,但是第二次平仓应该是在我第一次平仓后看下当前的仓位,没有仓位,硬生生的减了1.
求高人指点下
在回测时使用self.pos来管理仓位的,采用净仓位模式来近似。在实盘则采用的是交易所的规则。所以在两次平仓后仓位就为-1了。在策略中每次收到5分钟k线回报时,首先应该先cancel_all(),把所有未成交的订单全部撤掉,然后再进行下一轮的操作,这样就不会在9:20时成交9:10的订单了。
郭易燔 wrote:
在回测时使用self.pos来管理仓位的,采用净仓位模式来近似。在实盘则采用的是交易所的规则。所以在两次平仓后仓位就为-1了。在策略中每次收到5分钟k线回报时,首先应该先cancel_all(),把所有未成交的订单全部撤掉,然后再进行下一轮的操作,这样就不会在9:20时成交9:10的订单了。
也就是说,实盘不会有问题。会报一个仓位不足,回测的时候,当根k线没有成交,就取消order。 但是有新问题?比如我下单之后,就是允许等上15分钟,如果15分钟内没成交的话,就会有别的平仓指令并存的情况。
下单后会返回orderid,可以用这个订单号来指定订单进行撤单。可以考虑写个计数器,以五分钟k线等15分钟的话就是计算3次的时候撤指定的单。
好的