为何信号始终为FASLE

Params Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9);Vars Numeric MACDDiff; Numeric AvgMACD; Numeric MACDValue; Series<Bool> upcross(False); Events OnBar(ArrayRef<Integer> indexs) { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff,MACDLength); if (CrossOver(MACDDiff,AvgMACD)) { upcross=True; }Else { upcross=upcross[1]; } if (CrossUnder(MACDDiff,AvgMACD)) { upcross=false; }Else { upcross=upcross[1]; }  Commentary(\"upcross = \" + IIFString(upcross,\"True\",\"False\")); }//为何向上突破成功,但信号始终为false?

你自己的逻辑错误下半部分,你的逻辑是,如果死叉,upcross就是false。如果不死叉,upcross就是上一根bar的值。注意,金叉也属于没有死叉,那么金叉的bar上就会进入else分支执行upcross=upcross[1];那么上一根bar的upcross是false,自然就被crossunder这分支重新洗回false状态了本来crossover分支已经判断成功了,upcross已经是true了结果又被你下半部分crossunder分支给洗回false状态了