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 не работает. Мусор остается на месте.