请看问题在哪?开仓即平仓

Params
    //此处添加参数
    Numeric Length(35);
    Numeric Lots(1);
Vars
    //此处添加变量
    Series<Numeric> MA;
     Numeric StopPrice1;
     Numeric StopPrice2;
     Numeric MA1;
      
Events
    //此处添加公式函数
    OnBar(ArrayRef<Integer> indexs)
    {
    MA1 = Average(Close,Length);
    MA=IntPart(MA1);
    PlotNumeric("MA",MA);
    
    
    If(MArketPosition!=1&&Close[1]>Open[1]&&MA[1]>MA[2])  //趋势向上,阳线开多
      {
       Buy(Lots,Open);

       }
    If(MArketPosition==1 && BarsSinceEntry==0)
    {
        StopPrice1=Lowest(LOW,3);            // 取止损价
        }
    If(MArketPosition==1 && Close[1]<StopPrice1)
    
     {
   SellShort(Lots,Open);   //止损反手空
   
      }
      If(MArketPosition==1 &&BarsSinceEntry>2&& MA[1]<MA[2])
    
     {
    Sell(Lots,Open);
      }
    If(MArketPosition!=-1&&Close[1]<Open[1]&&MA[1]<MA[2])   //趋势向下,阴线开空
       {
       SellShort(Lots,Open);
       }
    If(BarsSinceEntry==0 && MArketPosition==-1)
        {
        StopPrice2=Highest(High,3);  // 取止损价
        PlotString("CandleStick",Text(StopPrice2),High,Red);  //数值显示在取值的那根BAR上
        }
  If(MArketPosition==-1 && Close[1]>StopPrice2)
    
     {
   Buy(Lots,Open);    //止损反手多
    
      }
    If(MArketPosition==-1 &&BarsSinceEntry>=2&& (MA[1]>MA[2]))
    
     {
      BuyToCover(Lots,Open);
}
    }

关于开仓策略与平仓策略对接
保存开仓和平仓时的时间
老师好,请教一个问题,如何写当跟BAR上不能交易两次,比如开仓后不能平仓和平仓后不能再开仓?谢谢!
平仓问题
为何信号闪烁开仓后第二根bar没有平仓?反而成为锁仓交易了,请看下代码有何问题
如何实现涨跌停时,不进行任何开仓和平仓操作
请教一个问题,自动交易开仓后手工加仓,最后平仓的时候为什么不是一起平掉,程序那里平仓数量是(0)的
满足条件不开仓是什么问题
关于异常开仓问题
收盘倒数第二根平仓,临结束倒数第一根又开仓,请老师给看看问题出在哪

在on_init里加上

设置双向持仓交易方向
        //SetTradeSide(1);

 

我找了几天时间,从MC里再返到TB里找出来。

检查一下stopprice1和stopprice2的值计算是否正确,这两个容器的计算最好不要放在分支结构里

 

If(MArketPosition!=1&&Close[1]>Open[1]&&MA[1]>MA[2])
      {
       Buy(Lots,Open);
       StopPrice1=Lowest(LOW,3);
       }
    /*If(MArketPosition==1 && BarsSinceEntry==0)
    {
        StopPrice1=Lowest(LOW,3);
        }*/

改了还是不行

If(MArketPosition!=-1&&Close[1]<Open[1]&&MA[1]<MA[2])
       {
       SellShort(Lots,Open);
       StopPrice2=Highest(High,3);
       }
    /*If(BarsSinceEntry==0 && MArketPosition==-1)
        {
        StopPrice2=Highest(High,3);
        PlotString("CandleStick",Text(StopPrice2),High,Red);
        }*/

这个也改了

这还是在分支结构里啊!

这两个price不要放在if里!

视频区看一下序列类型使用须知

把price的计算放在最外面的结构里

 

我迷糊了,因为要计算进场位置前三根K线的最高和最低来确定止损价,不IF我这小白还不会,请教了

哥,前两天就你前面那个帖子里面给你回复了正确的写法,去看看啊

 If(BarsSinceEntry==0 && MArketPosition==-1)
        {
        StopPrice2=Highest(High,3);  // 取止损价
        PlotString("CandleStick",Text(StopPrice2),High,Red);  //数值显示在取值的那根BAR上
        }

是这样吗?如果不对能给个答案吗?

刘老师反复的给你说:不要在IF分支结构里面计算序列变量。你偏要在分支结构里面计算序列变量。我给你说:我在你前面的帖子里面给你写好了正确的写法,只需去看看就行了。你偏不去看。

无话可说了,告辞。