Фракталы массивы - страница 2

 

Вот примерчик

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет вставку элемента массива с заданным индексом.        |
//|             Возвращает размер нового массива.                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов типа double                                        |
//|    e - значение элемента                                                   |
//|    i - индекс элемента                  (-1 - добавить в конец массива)    |
//+----------------------------------------------------------------------------+
int ArrayInsertDouble(double& m[], double e, int i=-1) {
  int j, k=ArraySize(m);

  ArrayResize(m, k+1);
  if (i>=0 && i<k) {
    for (j=k; j>i; j--) m[j]=m[j-1];
    m[i]=e;
  } else m[k]=e;

  return(k+1);
}
 

вреде решил эту задачку переносом массива в глобальные переменные

вот код:

datetime last_time;
double ar[3];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {

   if(Bid<Low[0])
     {
      ArrayCopy(ar,ar,0,1,2);
      ar[2]=-2.0;
     }
   if(Bid>High[0])
     {
      ArrayCopy(ar,ar,0,1,2);
      ar[2]=2.0;
     }
   if(Bid>Low[0] && Bid<High[0])
     {
      ArrayCopy(ar,ar,0,1,2);
      ar[2]=ar[2]+0.1;
     }
   Alert("a1=",NormalizeDouble(ar[0],5),"  ","a2=",NormalizeDouble(ar[1],5),"  ","a3=",NormalizeDouble(ar[2],5));
   if(last_time!=Time[0])
     {
      last_time=Time[0];
   //   Alert("a1=",NormalizeDouble(ar[0],5),"  ","a2=",NormalizeDouble(ar[1],5),"  ","a3=",NormalizeDouble(ar[2],5));
     }
   return(0);
  }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 6 жж
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
 
mql5:

Очень похоже на ошибку, разбираемся.

Исправляйте пожалуйста поскорее - все советники виснут наглухо. ArrayCopy( data, data, 3, 0 ); - должна копировать весь двумерный массив data[1,3]; сам в себя с увеличением ArrayRange(data,0);
Причина обращения: