开拓者期货期权程序化系统交易论坛

标题: 请教编程问题 [打印本页]

作者: hill_Luo    时间: 2019-11-7 15:33:37     标题: 请教编程问题

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));
           COMMENTARY("VALLY_S="+text(Vally_S));
           PlotBool("TEST1",TEST1);
           PlotBool("TEST2",TEST2);
           PlotBool("TEST3",TEST3);
           PlotBool("TEST4",TEST4);
        }

以上程序中,当test2 为true, test3为true,写成test4也是ture。但是test1的表达式却是false。为什么?请教了。有知道的指点下,不胜感谢!
作者: hill_Luo    时间: 2019-11-8 12:01:43

小米版主,能帮忙指点一下吗?谢谢了。
作者: 小米    时间: 2019-11-8 14:41:41

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

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

所以,只test234的写法才能确保每一个必要的数据都有被正确计算。





欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2