关于一段代码,无法PlotBool的问题,看了两个小时也没明白
2021-11-23 21:44

请教一下各位老师,条件1倒是可以顺利打印,为什条件2中,

无论是写成PlotBool("condition2",condition2,Low-100);

还是写成PlotBool("condition2",condition2,Low);

或者是写成PlotBool("condition2",condition2,Low+500);都无法在图标上标记笑脸。

附上源码:

Params
    Numeric Strengthb(8);
    Numeric strengths(8);

Vars
    bool condition1;
    bool condition2;
    series<bool> var0b2(false);
    series<bool> var0b(false);
    Series<Numeric> var2b( 0 );
    Series<Numeric> var1b( 0 );
    bool var0s(false);
    Series<Numeric>  var1s(0) ;
    Numeric minpoint;
    
Events
    OnInit()
    {
        //=========数据源相关设置==============
        AddDataFlag(Enum_Data_RolloverBackWard());    //设置后复权

        AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格

        AddDataFlag(Enum_Data_AutoSwapPosition());    //设置自动换仓

        //AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());    //设置忽略换仓信号计算
    }
    
    OnBar(ArrayRef<Integer> indexs)
    {
        Minpoint = MinMove* PriceScale;
        //条件1*************************************************************************
        condition1 = SwingHigh(1, High, Strengthb, Strengthb + 1 ) <> -1 ;
        if (condition1)
        {
            var0b = true ;
            var1b = High[Strengthb];

        }
        Else
        {
            condition1 = ((var0b) and (High >= var1b + 1*Minpoint)) ;
            if (condition1)
            {
                var0b = false ;
                PlotBool("condition1",condition1,High+100);
                Commentary("var1b:"+Text(var1b));
            }

        }
        
        //条件2*************************************************************************
        condition2 = Swinglow(1, low, Strengths, Strengths + 1 ) <> -1 ;
        if (condition2)
        {
            var0s = true ;
            var1s = low[Strengthb];
            
        }
        Else
        {
            condition2 = ((var0s) and (low <= var1s - 1*Minpoint)) ;
            if (condition2)
            {
                var0s = false ;
            PlotBool("condition2",condition2,Low-100);
            Commentary("var1s:"+Text(var1s));
                
            }
            
        }
    }

 

评论区
yjf10123

其实两个参数就是个常量,数值也都一样,不过刚才您的回答应该是正确的,非常感谢!

2021-11-24 14:56
yjf10123

嗯嗯 ,好的,明白了,谢谢

2021-11-24 14:56
yjf10123

condition2这段代码的逻辑是:

if这段先找出符合要求的波谷,

else这段是找到符合if条件的波谷以后,再寻找突破波谷的bar,

condition2并不是重复或重新定义,而是在找到波谷后,在非波谷的bar上寻找再次突破波谷的bar(在满足if条件后再次迭代),if和else中间通过var0s开关来控制,var0s只有在找到波谷后才变为True,变为True后,找到向下突破的bar,然后又变为False

而且,condition1是找波峰的,这个逻辑在condition1可以找到波峰并且向上突破的bar,为什么condition2找波谷,再找向下突破的bar就无法找到呢?

2021-11-24 12:49
顶部