Работа с массивами-подскажите, как правильно. - страница 3

 
ask >>:


Спасибо, это тоже очень важно. Кстати, я почти интуитивно именно так и стал писать все нужные мне массивы-через буфер, даж шаблончик сделал-заготовку заранее :)

Только их всего 8. В 5-ке такого ограничения нет. А если не хватат восьми штук (у меня это постоянно случалось), то можно воспользоваться их эмуляцией: https://forum.mql4.com/ru/23497
 
Svinozavr >>:
Только их всего 8. В 5-ке такого ограничения нет. А если не хватат восьми штук (у меня это постоянно случалось), то можно воспользоваться их эмуляцией: https://forum.mql4.com/ru/23497


фсё равно кому-нить и 512 не хватит.

проверил эмуляцию. гениально, спасибо.

без использования своих функций, изменение размера массива 15-30 миллисекунд, на графике 1000000 баров.

//+------------------------------------------------------------------+
//|                                                        #Test.mq4 |
//+------------------------------------------------------------------+
#property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  Red

double     ExtBuffer[];
double     SimBuffer[];
int b=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(Digits);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtBuffer);
   
   ArraySetAsSeries(SimBuffer,true); b=0;
   return(0);
  }
//+------------------------------------------------------------------+
int start()
   {
   int i,limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
   if(b<Bars)
      {
      int t=GetTickCount();
      ArraySetAsSeries(SimBuffer,false);
      ArrayResize(SimBuffer,Bars);
      ArraySetAsSeries(SimBuffer,true);
      Print(GetTickCount()-t);
      b=Bars;
      }
   for(i=0; i<limit; i++)
      {
      SimBuffer[i]=Close[i];
      }
   for(i=0; i<Bars; i++)
      {
      ExtBuffer[i]=SimBuffer[i];
      }
   return(0);
  }
//+------------------------------------------------------------------+