Ошибка при построение индикатора в основном окне на MQL5

 

Для примера: построение линии по 30 последним хаям в основном окне.  При попытке добавить в индикаторный буфер значения, происходит ошибка(array out of range). А в аналогичном примере, но при построение в отдельном окне все нормально было. Пробовал изменить размер массива при инициализации функцией ArrayResize, тогда ошибок нет, но просто ни чего не строиться. 

#property indicator_chart_window
#property indicator_label1 "TEST Line"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_plots 1

double buffer[];

int OnInit()
{
    SetIndexBuffer(0, buffer, INDICATOR_DATA);
    ArraySetAsSeries(buffer, true);
    return (INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
    for (int i = 0; i < 30; i++) //построить линию по 30 хаям
    {
        double h = iHigh(_Symbol, _Period, i);
        buffer[i] = h; //array out of range !
    }
    return (rates_total);
}
 
olegeskevich:

Для примера: построение линии по 30 последним хаям в основном окне.  При попытке добавить в индикаторный буфер значения, происходит ошибка(array out of range). А в аналогичном примере, но при построение в отдельном окне все нормально было. Пробовал изменить размер массива при инициализации функцией ArrayResize, тогда ошибок нет, но просто ни чего не строиться. 

Что сразу бросается в глаза: используйте полную версию OnCalculate - там сразу будут все OHLC массивы цен и не нужно будет делать глупость в виде iHigh вызова ...
 
Vladimir Karputov:
Что сразу бросается в глаза: используйте полную версию OnCalculate - там сразу будут все OHLC массивы цен и не нужно будет делать глупость в виде iHigh вызова ...

Да мне и не нужно OHLC, это просто для примера. Вот по заранее заданному значению - то же самое array out of range  

#property indicator_chart_window
#property indicator_label1 "TEST Line"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_plots 1

double buffer[];

int OnInit()
  {
    SetIndexBuffer(0, buffer, INDICATOR_DATA);
    ArraySetAsSeries(buffer, true);
    return(INIT_SUCCEEDED);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
    const double testPrice = 1.1164;  
    for (int i = 0; i < 10; i++) //построить линию на 10 барах по цене 1.1164
    {       
        buffer[i] = testPrice; //array out of range!
    }
   return(rates_total);
  }


 

 
Не указано свойство:

#property indicator_buffers X
Скорее всего от этого.
 
Dmitry Fedoseev:
Не указано свойство:

Скорее всего от этого.

Спасибо!!! Точно, его добавил и все заработало