跨周期程序序列变量引发的交易信号混乱
2023-09-10 14:43

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) 似乎跨周期策略存在序列变量,就容易出现问题。

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

评论区
顶部