ArrayInitialize function internal error

 
Объявляем:
double aa[];
double bb[];
double aa_c[];
double bb_c[];



В init():

   if(
   !SetIndexBuffer(0,aa) &&
   !SetIndexBuffer(1,bb) &&
   !SetIndexBuffer(2,aa_c) &&
   !SetIndexBuffer(3,bb_c))
   Print("cannot set indicator buffers!");

   SetIndexStyle(0,DRAW_HISTOGRAM,0,2);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,2);



void Clear()                             // очистка графика
{
   ArrayInitialize(aa,0.0);
   ArrayInitialize(bb,0.0);
   ArrayInitialize(aa_c,0.0);
   ArrayInitialize(bb_c,0.0);
}



В логе экспертов видим:
2005.03.29 12:48:44 histo EURUSD,H1: ArrayInitialize function internal error

 
Если я правильно помню, ее можно вставлять только в start()
 
эта ошибка возникает при попытке проинициализировать пустой массив (массив нулевой длины).
в функции Init ещё неизвестна реальная длина индикаторного массива. индикаторные массивы распределяются и изменяют свой размер "по запросу", в процессе пересчёта индикатора.
 
эта ошибка возникает при попытке проинициализировать пустой массив (массив нулевой длины).
в функции Init ещё неизвестна реальная длина индикаторного массива. индикаторные массивы распределяются и изменяют свой размер "по запросу", в процессе пересчёта индикатора.


Процедура Clear() вызывается из start().
Просто когда работает индикатор, а я его компилю в редакторе или меняю входные значения. Индикатор переинициализируется, а на графиках остается мусор.
 
тогда чистить лучше при деинициализации. попробуйте
 
тогда чистить лучше при деинициализации. попробуйте

Если вызывать из deinit(), то вообще функция ArrayInitialize не работает. Мусор остается на месте.
Причина обращения: