在多品种数据引用时,金字塔软件的内部机制会出现一些处理错误。举例来说:
在一个算法中,同时使用上证指数的5分钟K线和股指期货的5分钟K线,主图为股指期货,则在固定轮询高频刷新模式下,上证指数每6秒1个tick,而股指期货每1秒2个tick,则会存在一种情况是,股指期货产生了一个新的5分钟K线时,上证指数还没有产生新的K线,那么在这么一个很短的时间,算法就会出现错误。
举例说明一个很简单的公式,当上证指数当前K线的最低点,低于上证指数前1根k线开盘价和收盘价之和的一半时,在股指期货上开空。则回测时完全没有问题,但是在实盘中,问题就来了:
会出现每个股指期货K线一开始就开始做空。因为这时候,股指刚产生新的K线,而上证还没有产生新的K线,此时引用的最低点,是上证指数对应着股指期货来说,上1周期的最低点,而上一个周期最低点肯定小于开盘价和收盘价之和的一半。
代码表示即
lowy:=callstock('sh000001',vtlow,-1,0);
则在股指期货的新K线产生而上证的新K线未产生的一瞬间,出现lowy=ref(lowy,1);的错误。
其核心原因就是:多品种引用时,由于股票和期货的tikc频率不同,在K线切分上,会引起上证和股指期货的K线不一致。
建议在下一个版本中,增加一个多品种K线同步的判断,只在多品种的K线同步时,刷新公式。
感谢您的建议。
从帖子来看,您用的是固定时间间隔吧。
暂时的方法,你可以把固定时间间隔改成6秒就同步啦。
股票的数据少,如果引用来做开平仓条件的话,是会有上面说的现象.
推荐,暂时用,固定时间间隔:6秒刷新一次,看能不能解决以上问题.