判断语句失效

请问老师,为什么没有限制在32到 64的bar之间开仓,这个判断条件没有起作用?

 

 


Params 

Vars

    Integer lots_num;
    
    
Events

    OnBar(ArrayRef<Integer> indexs)
    {    
        Commentary("BarsSinceToday:"+Text(BarsSinceToday));

        lots_num=1;
        //做多
        if(MarketPosition == 0)
        {
            if(BarsSinceToday >=32 And BarsSinceToday < 64)
            {
                Buy(lots_num,Close);
            }
        }
        //做空
        if(MarketPosition == 0)
        {
            if(BarsSinceToday >=32 And BarsSinceToday < 64)
            {
                SellShort(lots_num,Close);
            }
        }

        //平仓
        Commentary("MarketPosition = " + Text(MarketPosition));
        if(BarsSinceToday == 67 and MarketPosition > 0)
        {
            Commentary("MarketPosition = " + Text(MarketPosition));
            Sell(0, Close[1]);
        }
        if(BarsSinceToday == 67 And MarketPosition < 0)
        {
            Commentary("MarketPosition = " + Text(MarketPosition));
            BuyToCover(0, Close[1]);
        }
    }

请教版主关于判断语句异常执行的问题
关于条件语句判断与实际交易不符的问题
请教版主关于判断语句容纳条件数量的问题
不要在条件语句、条件语句的判断表达式、循环语句中使用序列函数
请教多图层的判断语句
FileDelete是否失效?
程序化模型失效的风险
关于分支条件判断语句结构与执行效率的问题
指标失效
关于if语句使用的相关问题

我不知道你想表达的是什么

在我看来 

你的开仓条件是 当前bar是今天的第32到63根bar之间的任意一根,并且当前没有持仓,那么开多(开空条件是无法满足的)

当前bar是今天第67根bar的时候,平仓。

我看了一下图上信号是符合这个逻辑的,我不知道你在问什么