跨周期程序序列变量引发的交易信号混乱

If(data1.MACDDiff>data1.AvgMACD)//第一句

   {

    buySetup=True;

   }

Bool macdxc4=data0.MACDDiff>data0.AvgMACD and data0.MACDDiff[1]<data0.MACDDiff;

If(MarketPosition ==0 and macdxc4 and buySetup)

   {

    buy(1,Close);

buySetup=False;  

   }

Bool macdxc5=data0.MACDDiff[1]>data0.MACDDiff;

If(MarketPosition<>0 And BarsSinceEntry >1 and macdxc5)

   {

    Sell(0,Open);

}

 

(1) 上述程序执行正常,在一分钟图层产生正确交易信号,五分钟图层没有出现交易信号。

(2) 但是把第一句改成if(data1.MACDDiff[1]<data1.MACDDiff)后,程序发生了重大的变化,在一分钟图层上原来存在的交易信号消失,而五分钟图层新产生了交易信号。

(3) 此外,buy(1,Close);此语句前面加上data0.后,出现开仓信号完全突破MarketPosition ==0,原本只能开仓一手,变成开仓很多手。

(4) 似乎跨周期策略存在序列变量,就容易出现问题。

请问老师,这是什么原因造成的?

序列变量和全局变量区别
关于IF或者循环程序体内不能用序列变量的疑问
自定义序列变量赋值失败的问题
序列变量
关于序列变量的问题
序列变量求解
策略单元中使用跨周期程序,出现的问题。
跨周期全局数组变量应用
是否可跨周期引用交易信号?这个问题对于你是不难回答吧?
关于序列变量函数和if

哪个图层是几分钟

不要贴部分代码,没办法调试

(2)你都改了条件 程序为什么不能发生变化

(3) 非全局,图层变量都是独立的,系统marketposition也是