индикатор преобразования с мт4

 
требуется совместить индикатор с MQL5 оплату гарантирую профиль AEDU в пределах 15 долларов
 
aedu Aджимурзаев Эдуард Надырович:
требуется совместить индикатор с MQL5 оплату гарантирую профиль AEDU в пределах 15 долларов
Для платных работ существует сервис Фриланс. Минимальная стоимость работ составляет $20. Указывать свои контактные данные запрещено.
 
aedu Aджимурзаев Эдуард Надырович:
требуется совместить индикатор с MQL5 оплату гарантирую профиль AEDU в пределах 15 долларов
я не программист поэтому методом подбора ничего не получается ,но на мт4 по этому индикатору работаю  #property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1  DodgerBlue
#property indicator_width1  1
#property indicator_color2  Red
#property indicator_width2  1
#property indicator_color3  clrYellow
#property indicator_width3  1

#property indicator_level1  0
extern int       PERIOD = 17;

//--- buffers
double buf_up[], buf_dn[],buf_sr[],buf_up1[], buf_dn1[],buf_sr1[],buf_sum[];
double  ema_k0, ema_k1;
int    work_period; 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorShortName(StringConcatenate(
    "IVTRO-1(", PERIOD, ")"));
   IndicatorDigits(1);   
   SetIndexBuffer(0,buf_sr);
   SetIndexBuffer(1,buf_sr1);
   SetIndexBuffer(2,buf_sum);
   
   SetIndexEmptyValue(0, -1);   
   SetIndexEmptyValue(1, -1);
   SetIndexEmptyValue(2, -1);
   
   SetIndexLabel(0, "BAY");     
   SetIndexLabel(1, "SELL");
   SetIndexLabel(2, "SUMMA"); 
   ema_k0 = 2.0 / (PERIOD + 1);
   ema_k1 = 1.0 - ema_k0;  
   work_period = Bars - PERIOD - 2;
      return(0);
    }
 int start()
    {
    int    i, j, left = Bars - IndicatorCounted() - 1;
    double up, dn,up1,dn1, sr,sr1;  
    for(i = left; i >= 0; i--) {
     if(i > work_period) {
     buf_up[i] = -1;
     buf_dn[i] = -1;
     buf_sr[i] = -1;
     buf_up1[i] = -1;
     buf_dn1[i] = -1;
     buf_sr1[i] = -1;   
    } else if(i == work_period) {
     buf_up[i] = 0;
     buf_dn[i] = 0;
     buf_sr[i] = 0; 
     buf_up1[i] = 0;
     buf_dn1[i] = 0;
     buf_sr1[i] = 0;
                 
    
     for(j = Bars - 1; j >= i; j--) {
      calc(j ,up, dn,up1,dn1, sr,sr1);      
      buf_sr[i] += (up-dn) * Volume[j];
      buf_up[i] += up   * Volume[j];
      buf_dn[i] += dn   * Volume[j];
      buf_up1[i] +=  up1  * Volume[j];
      buf_dn1[i] +=   dn1 * Volume[j];
      buf_sr1[i] += (up1-dn1) * Volume[j];
    }      
      buf_sr[i] /= PERIOD;  
      buf_up[i] /= PERIOD;
      buf_dn[i] /= PERIOD;
      buf_up1[i] /= PERIOD;
      buf_dn1[i] /= PERIOD;
      buf_sr1[i] /= PERIOD;
    } else {
      calc(i, up, dn,up1,dn1, sr,sr1);      
      buf_sr[i] = buf_sr[i + 1]* ema_k1 + (up-dn) * Volume[i] * ema_k0;
      buf_up[i] = buf_up[i + 1] * ema_k1 + up   * Volume[i] * ema_k0;
      buf_dn[i] = buf_dn[i + 1] * ema_k1 + dn   * Volume[i] * ema_k0;
      buf_up1[i] = buf_up1[i + 1] * ema_k1 +  up1   * Volume[i] * ema_k0;
      buf_dn1[i] = buf_dn1[i + 1] * ema_k1 +   dn1  * Volume[i] * ema_k0;
      buf_sr1[i] = buf_sr1[i + 1]* ema_k1 + (up1-dn1) * Volume[i] * ema_k0;
      buf_sum[i] = buf_sr[i] + buf_sr1[i];
      
    }
    }      
      return(0);
    }
 // Расчёт величин для бара.
   void calc(int bar, double &up, double &dn, double &sr, double &up1, double &dn1,double &sr1) {
     if(High[bar] == Low[bar]) {
    up = 0;dn = 0;sr = 0;up1 = 0;dn1 = 0;sr1 = 0;    
    return;
  }                  
     int sec=TimeCurrent()-Time[0];     
     double tiksek = Volume[bar]/sec;
     double range = (High[bar] - Low[bar])/sec;
     double clop = MathAbs(Close[bar]-Open[bar])/sec;
     double path  = ( Close[bar]- Low[bar])/sec;
     double path1  = ( High[bar]- Close[bar])/sec;
     double zum = (range -path)/2*( clop/ range) ;
     double zum1 = (range -path1)/2*( clop/ range) ;
    if(Close[bar] > Open[bar]) {
     dn1 = 1.0 - (zum1 +path1)/ range ;
     up1 = 1.0 - dn1;
     sr1 = up1 - dn1;
     dn = 1.0 -(zum + path)/ range ;
     up = 1.0 - dn;
     sr = up - dn;  
  } else {
     up1 = 1.0 -(zum1 + path1)/ range ;
     dn1 = 1 - up1;
     sr1 = up1 - dn1;
     up =  1.0 -(zum + path)/ range ;
     dn = 1.0 - up;
     sr = up - dn;    
    return;
  }
  }
//+------------------------------------------------------------------+

 
хочу перейти на мт5 немогу все сформулировать да и не знаю как ,хотя теорию выдам
 
aedu Aджимурзаев Эдуард Надырович:
хочу перейти на мт5, но не могу все сформулировать да и не знаю как ,хотя теорию выдам
Все чаще и чаще такие стремления наблюдаются, это радует.
 
Для начала.
Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.