请教老师;我在模型运行中出现信号漂移问题,模型在30分钟周期上运行,9.30分时出信号开仓下单,10,00时信号漂移至10.00的K线上,模型又一次开仓下单,我的交易指令是这样编写的;IF SELLSHORT4 THEN BEGIN 平空:SELLSHORT(1,0),ORDERQUEUE;
开多:BUY(HOLDING=0,ORDVOL,MARKET);
HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价
END
我的问题是9,30分开仓后,仓位大于0的情况下(HOLDING=0),应该是不会开仓的,为什么还是开仓了?谢谢
其他的应该没问题,就是一个跨周期MACD指标在30分钟周期引用了45分钟周期上的数据,我知道这个是造成信号漂移的原因,我的模型是一开一平,没有加仓模式,我想解决的问题是在
平空:SELLSHORT(1,0),ORDERQUEUE; 开多:BUY(HOLDING=0,ORDVOL,MARKET);这样的交易指令中,在已经有多单的情况下是不是不应该再开多单?请老师解惑。谢谢!
交易语句没问题,问题还是在信号闪烁上。
9:30那个K出现过信号,但是后来信号消失,虚拟持仓会恢复为0.所以10点的K才会再次开仓。 每次分笔来的时候,指标每次都会从第一个K开始计算,10点的时候9:30的K上是没信号的,所以虚拟持仓的计算结果在9:30点的K上就是holding=0 了,到10点,自然就开仓了。 你需要理解的是虚拟持仓和实际账号持仓是独立的,单向的关系。不会因为实际账号有持仓,使得holding发生变化。而且指标里的虚拟持仓,最新K上也是在不断计算中变化的,历史K是稳定的。
1.图表是一个独立的系统,图表是无法获取真实仓位持仓情况的 。实际账号是跟随图表信号进行下单操作的,但是这是个单向关系,图表系统收不到实际账户的反馈的。 holding=0不是没有意义,只是你用的固定轮询情况下,不太好避免闪烁。
2.可以考虑使用持仓同步的功能。它会根据你虚拟仓位和实际账户的仓位对比来进行调整。