0

我已经编写了一个代码来计算. MQL5但它不起作用。

MQL 代码是:

/////////////////////////////////////////////////////////


int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[])
  {
//----+   
   //---- check for the presence of bars, sufficient for the calculation
   if (rates_total < (sdPer - 1) + begin)
    return(0);

//---- declaration of local variables 
   int first, bar, i, t;

//---- calculation of starting index first of the main loop
   if(prev_calculated==0) // check for the first start of the indicator
      first=sdPer-1+begin; // start index for all the bars
   else first=prev_calculated-1; // start index for the new bars

//---- main loop of the calculation
   for(bar = first; bar < rates_total - 1; bar++)
    {    
      t = 0;
      //---- avaliation loop for the current bar
      for(i = 0; i < sdPer; i++)

      if(price[bar] > price[bar - i])
      {
         if(t >= 1)
            t = t + 1;
         else t = 1;
      }

      else if(price[bar] < price[bar - i])
      {      
         if(t <= -1)
         t = t - 1;
         else t = -1;
      }

      else if(price[bar] == price[bar - i])
      {
         t = 0;
      }

//---- set the element of the indicator buffer with the value of SMA we have calculated
      ExtLineBuffer[bar]=t;// **streak duration**
    }
//----+     
   return(rates_total);
  }

////////////////////////////////////////////////////////////

我没有发现错误。怎么错了?

4

1 回答 1

1

我已经测试了代码,它工作正常。请确保您正在做这些事情:

  1. 将指标设置为单独的窗口指标:#property indicator_separate_window
  2. 定义缓冲区和绘图。例如,像这样:

    #property indicator_buffers 1
    #property indicator_plots   1
    #property indicator_color1  clrRed
    #property indicator_type1   DRAW_LINE
    #property indicator_style1  STYLE_SOLID
    
  3. 分配索引缓冲区(在OnInit()SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);:。
于 2016-03-17T19:33:56.687 回答