打印本文打印本文 关闭窗口关闭窗口

请教编程问题

作者:开拓者 TB 来源:cxh99.com 发布时间:2022年02月25日
  • 咨询内容: Params
            Numeric Length1(10);
            Numeric Length2(30);
            Numeric Length3(60);

    Vars
            //此处添加变量
        Numeric Dea;
            Numeric Diff;
            Numeric MACD;
            Numeric MA10;
            Numeric MA30;
            Numeric MA60;
            Numeric Peakval;
            Numeric Vallyval;
            Numeric ExtreV;
            Numeric EVP;
            Numeric Peak_s;
            Numeric Vally_s;
           
            BOOL    SIT_P;
            BOOL    SIT_v;
            BOOL    TEST1;
            BOOL    TEST2;
            BOOL    TEST3;
            BOOL    TEST4;
    Events
            OnBar(ArrayRef<Integer> indexs)
            {
            Diff = XAverage( Close, 12) - XAverage( Close,26) ;       
                Dea = XAverage(Diff,9);
                MACD = 2*(Diff - Dea);
                MA10 = AverageFC(Close,Length1);
                MA30 = AverageFC(Close,Length2);
                MA60 = AverageFC(Close,Length3);
                
                PlotNumeric("MA10",AverageFC(Close,Length1),red);
                PlotNumeric("MA60",AverageFC(Close,Length3),blue);
                
                      
               SIT_P = ((NthCon(Dea<0 && MA10<MA60,1) == 0 && NthCon(Dea<0 && MA10<MA60,2)>1 && CountIf(Dea>0 && MA10>MA60,NthCon(Dea<0 && MA10<MA60,2))>1));
               TEST1 = ((NthCon(Dea<0 && MA10<MA60,1) == 0) && (NthCon(Dea<0 && MA10<MA60,2)>1));
               test2 = NthCon(Dea<0 && MA10<MA60,2)>1;
               test3 = NthCon(Dea<0 && MA10<MA60,1) == 0;
               test4 = test2 && test3;
             
               COMMENTARY("nthcon"+text(NthCon(Dea<0 && MA10<MA60,1)));
               COMMENTARY("nthcon"+text(NthCon(Dea<0 && MA10<MA60,2)));
               COMMENTARY("VALLYVAL="+text(Vallyval));            PlotBool("TEST2",TEST2);
               PlotBool("TEST3",TEST3);
               PlotBool("TEST4",TEST4);
            }

    以上程序中,当test2 为true, test3为true,写成test4也是ture。但是test1的表达式却是false。为什么?请教了。有知道的指点下,不胜感谢!

     

     来源:CXH99.COM

  • TB技术人员: 小米版主,能帮忙指点一下吗?谢谢了。

     

  • TB客服:
    hill_Luo 发表于 2019-11-8 12:01
    小米版主,能帮忙指点一下吗?谢谢了。

    正确的写法就是test2,test3,test4这个步骤。。。
    nthcon的计算判断并非只要当前bar的数据就可以计算出来的,也需要历史K线上的相关数据才能计算出来。
    在Test1语句中,前一个判断的满足与否会影响后一个判断式是否进行计算。如果前一个判断为否,则后一个根本不计算了。如果历史中的相关值没有计算到,那也没法在当前K线得出正确的结果。。

    所以,只test234的写法才能确保每一个必要的数据都有被正确计算。
打印本文打印本文 关闭窗口关闭窗口