全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
为何信号始终为FASLE
loafertb 分享到
2024-07-30 10:43

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?

kyover

你自己的逻辑错误

data-href=

下半部分,你的逻辑是,如果死叉,upcross就是false。如果不死叉,upcross就是上一根bar的值。

注意,金叉也属于没有死叉,那么金叉的bar上就会进入else分支执行upcross=upcross[1];

那么上一根bar的upcross是false,自然就被crossunder这分支重新洗回false状态了

本来crossover分支已经判断成功了,upcross已经是true了

结果又被你下半部分crossunder分支给洗回false状态了

2024-07-30 11:22
您未登录,请先 登录注册 后发表评论
顶部