请问,跨周期策略,DATA0是1分钟,DATA1是1秒,以下写法,是否会出现信号消失的情况?
range[0:0]
{
upband = High > A[1]; //A为指标值,向前回溯一根
Buycond = CrossOver(High,B[1]); //B为指标值,向前回溯一根
}
range[1:1]
{
upband=data[0].upband;
Buycond = data[0].Buycond;
if (upband and Buycond)
{
status=1;
D=A1-100;
}
if(status==1 and low<= D)
{
buy(1,D);
}
}
请教:
1、上述写法,是把信号写在DATA[1]这个小周期上,但指标计算都在DATA[0]这个大周期上,因此DATA[1]的买入条件直接调用DATA[0]大周期的指标,但 low<= D这里的low仍然是小周期即DATA[1]这个图层的,请问这样写行吗?会不会出现DATA[0]和DATA[1]由于TICK数据不完全同步,造成信号消失的问题?
2、如果上述这种写法有问题,应该如何改呢?特别是CrossOver这个函数,因为它要同时用到当下BAR和往前一根BAR的价格数据,因此不能直接在DATA[1]这个小周期图层上直接写Buycond = CrossOver(High,B[1]);因为DATA[1]回溯一根的最高价即High[1]并非DATA[0]回溯一根的最高价,计算起来会失真。
因为策略出现了疑似信号消失的情况,实盘和回测偶尔不一致(比如回测模式下有图表信号但实盘模式下没有图表信号且不报单),排查到这里有疑问。谢谢
当期变量你不能保证不变的情况,就必须回溯一个周期
你的问题感觉绕进去了,没有那么复杂。
可以通过保证CrossOver的结果不变,也可以通过保证CrossOver里面的两个参数不变(或者不可逆)来实现
简单的问,想要哪两个交叉,更简单
跨周期我都是建议是小周期在上,大周期在下,不要打乱顺序