Перенос кода индикатора в советник

 

Всем привет. Помогите плз перенести этот код в советник (т.к через iCustom сильно долго потом тестируется сов) --


#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrRed
#property indicator_width1 4
//---- input parameters 
input ENUM_TIMEFRAMES GrossPeriod=PERIOD_H4;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
//---- buffers 
double ExtMapBuffer1[];
datetime daytimes[];
bool copied=false;

int OnInit()
  {
//---- indicators 
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//---- 
   
   copied=false;
// Все Time[] серии времени отсортировано в направлении убывания 
   ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);
   return(0);
  }

int deinit()
  {
//---- 
//---- 
   return(0);
  }
 
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[])
 {
   if(!copied)
     {
      copied=(ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod)>0);
      if(!copied) return(0);
     }
   int    limit,bigshift;
   int    counted_bars=IndicatorCounted();
//---- 
   if(counted_bars<0) return(-1);
//----
   limit=Bars-counted_bars;
   if(counted_bars==0) limit=MathMin(limit,ArraySize(daytimes));

   for(int i=1; i<limit; i++)
     {
      if(Time[i]>=daytimes[0]) bigshift=0;
      else
        {
         bigshift=ArrayBsearch(daytimes,Time[i-1],WHOLE_ARRAY,0,MODE_DESCEND);
         if(Period()<=GrossPeriod) bigshift++;
        }
      ExtMapBuffer1[i]=(iCustom(NULL,GrossPeriod,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,bigshift));
      
     }
   return(0);
  }

 
Trolon:

Помогите плз перенести этот код в советник (т.к через iCustom сильно долго потом тестируется сов) --

Ну тут в двух словах не объяснить, это не просто копировать вставить))

 
Перенос кода индикатора в код эксперта. Общие схемы строения эксперта и индикаторных функций
Перенос кода индикатора в код эксперта. Общие схемы строения эксперта и индикаторных функций
  • www.mql5.com
В предыдущей статье (Перенос кода индикатора в код эксперта. Строение индикатора) мы достаточно подробно познакомили читателя с общим строением индикатора, код которого предназначен для переноса в код эксперта и изложили суть предварительного преобразования кода индикатора. Теперь мы займёмся преобразованием полученного кода в пользовательскую...
 
Долго тестируется не из-за iCustom, ZigZag сам по себе тормознутый.
 
Писали люди быстрые зигзаги. Вот один из них.
 

Спс за ответы,, меня смущает копирование буфера в обратном порядке и проход по нему зигзагом (да и по переносу я пока не впилил).

Так если сделать функцию зигзага (ускоренного) в этом индикаторе, не применяя icustom, эт ускорит общий ход тестирования/оптимизации?

 
Trolon:

Спс за ответы,, меня смущает копирование буфера в обратном порядке и проход по нему зигзагом (да и по переносу я пока не впилил).

Так если сделать функцию зигзага (ускоренного) в этом индикаторе, не применяя icustom, эт ускорит общий ход тестирования/оптимизации?

Ускорит, но не из-за переноса кода в эксперта, а из-за использования ускоренного зигзага.