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

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) 似乎跨周期策略存在序列变量,就容易出现问题。请问老师,这是什么原因造成的?

哪个图层是几分钟不要贴部分代码,没办法调试(2)你都改了条件 程序为什么不能发生变化(3) 非全局,图层变量都是独立的,系统marketposition也是