编了个公式,刚加载的时候是合适的,在ONBARCLOSE事件中,但是运行几根BAR后图形就会发生变化,再重新加载就会产生完全不一样的图形线条输出,能解答一下吗?

OnInit()

{

id = CreateTimer(60000);

SubscribeBar(Symbo,\"1m\",20230301, 0, 0);

 SubscribeBar(Symbo,\"45m\",20230301, 0, 0);

SubscribeTick(Symbo);

}

OnBarclose (ArrayRef<Integer> indexs)

{

     

   

   AvgValue1=XAverage(Data1.Close,FASTDAY);  //12

   AvgValue2=XAverage(Data1.Close,SLOWDAY);   //50    //

   Data0.PlotNumeric(\"涨快\",AvgValue1,AvgValue3,Yellow);

   Data0.PlotNumeric(\"涨慢\",AvgValue2,AvgValue4,Green);        

   

   AvgValue3 = XAverage(Data1.Close,FASTDAY);  //12

   AvgValue4 = XAverage(Data1.Close,SLOWDAY);   //50     //

   Data0.PlotNumeric(\"跌快\",AvgValue3,AvgValue3,Red);

   Data0.PlotNumeric(\"跌慢\",AvgValue4,AvgValue4,White);

   

  PlotString(\"第几BAR\",TEXT(CURRENTBAR()),Data0.high+60,Black);

  PlotString(\"上次信号BAR\",TEXT(BARSHU),Data0.high+80,Black);

   

   TurtleUnits=1;

 

   

   Zcon=(CrossOver(AvgValue1,AvgValue2) and (MarketPosition<>1));

   Dcon=(CrossUnder(AvgValue3,AvgValue4) and (MarketPosition<>-1));    

     

 if (Zcon)

 {  

     

        PlotString(\"开仓\",\"开多仓\",Data0.high+20,Green);

       PlotString(\"趋势\",\"\",Data0.high+10,Blue);

     

       IF (MarketPosition==0)  

          {

         data0.Buy(TurtleUnits,0);  

        }

          IF ((MarketPosition==-1) and (MarketPosition<>1))

          {

         

            data0.BuyToCover(1,0);

            data0.Buy(TurtleUnits,0);          

    }

        PlotString(\"距离上次信号BAR\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);

       BARSHU=CurrentBar();

       

  }

  if (Dcon)

  {

     

     PlotString(\"开仓\",\"开空仓\",Data0.High+20,Green);

     PlotString(\"趋势\",\"\",Data0.high+10,Blue);

     IF (MarketPosition==0)  

     {

         data0.SellShort(TurtleUnits,0);

     }

     IF ((MarketPosition==1) and (MarketPosition<>-1))

     {

         

          data0.Sell(1,0);

        data0.SellShort(TurtleUnits,0);

      }

       PlotString(\"距离上次信号BAR\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);

    BARSHU=CurrentBar();  

 

  }

  }

 

  OnTimer(Integer id,Integer intervalMillsecs)

      {

               SS=SS+1;

        if (ss>10000) ss=1;

         Print(Text(SS));

      }

评论区
202****1224543120

麻烦老师帮学生看下,问题出在哪?

2023-07-28 20:34
202****1224543120

Params

     Numeric FASTDAY(2);

   Numeric SLOWDAY(59);   //1h5m

   Numeric Ratio(10000);

   String Symbo(\"rb2310.SHFE\");

Vars

   Integer js(0);

   Global Numeric Total(0);

   Global Integer id(0);

   Global Integer ss(0);

   Series<Integer> serValue(0);

   Integer Jishu(0);

   Series<Numeric> AvgValue1;

   Series<Numeric> AvgValue2;

   Series<Numeric> AvgValue3;

   Series<Numeric> AvgValue4;

   Numeric TurtleUnits;

   Numeric Jiage1;

   Numeric Jiage2;

   Global Integer BARSHU(0);

   BOOL Zcon;

   Bool Dcon;

events

OnInit()

{

id = CreateTimer(60000);

SubscribeBar(Symbo,\"1m\",20230301, 0, 0);

 SubscribeBar(Symbo,\"45m\",20230301, 0, 0);

SubscribeTick(Symbo);

}

OnBarClose(ArrayRef<Integer> indexs)

{

   AvgValue1=XAverage(Data1.Close,FASTDAY);  //12

   AvgValue2=XAverage(Data1.Close,SLOWDAY);   //50    //涨

   Data1.PlotNumeric(\"涨快\",AvgValue1,AvgValue3,Yellow);

   Data1.PlotNumeric(\"涨慢\",AvgValue2,AvgValue4,Green);        

    AvgValue3 = XAverage(Data1.Close,FASTDAY);  //12

   AvgValue4 = XAverage(Data1.Close,SLOWDAY);   //50     //跌

   Data1.PlotNumeric(\"跌快\",AvgValue3,AvgValue3,Red);

   Data1.PlotNumeric(\"跌慢\",AvgValue4,AvgValue4,White);

    PlotString(\"第几BAR\",TEXT(CURRENTBAR()),Data0.high+60,Black);

  PlotString(\"上次信号BAR\",TEXT(BARSHU),Data0.high+80,Black);

    TurtleUnits=1;

   Zcon=CrossOver(AvgValue1,AvgValue2);

   Dcon=CrossUnder(AvgValue3,AvgValue4);      

 if (Zcon and (MarketPosition<>1))

 {  

      PlotString(\"开仓\",\"开多仓\",Data0.high+20,Green);

       PlotString(\"趋势\",\"涨\",Data0.high+10,Blue);

      IF (MarketPosition==0)  

    {

         Buy(TurtleUnits,0);  

      }

    IF ((MarketPosition==-1) and (MarketPosition<>1))

    {

    BuyToCover(1,0);

     Buy(TurtleUnits,0);          

      }

      PlotString(\"距离上次信号BAR数\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);

       BARSHU=CurrentBar();

   }

  if (Dcon and (MarketPosition<>-1))// and ((CurrentBar()-BARSHU)>25))

  {

      PlotString(\"开仓\",\"开空仓\",Data0.High+20,Green);

     PlotString(\"趋势\",\"跌\",Data0.high+10,Blue);

      IF (MarketPosition==0)  

     {

      SellShort(TurtleUnits,0);

     }

     IF ((MarketPosition==1) and (MarketPosition<>-1))

     {

      Sell(1,0);

        SellShort(TurtleUnits,0);

      }

       PlotString(\"距离上次信号BAR数\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);

    BARSHU=CurrentBar();  

     }

    }

     OnTimer(Integer id,Integer intervalMillsecs)

{

SS=SS+1;

 if (ss>10000) ss=1;

 Print(Text(SS));

}

2023-07-28 20:33
顶部