Помогите пожалуйста переделать индикатор

 

Нашел интересный индикатор но он написан для МТ5, пытался переделать его для МТ4 но в програмировании не силен, и не понял как изменить эту часть (компилятор ругается на CopyBuffer) если кто поможет заранее спасибо.

 for(i=limit; i<rates_total; i++)
     {
      double MA[1]={0.0};
      if(CopyBuffer(hSMA,0,rates_total-i,1,MA)<1) return(i-1);
      double tSMA=MA[0];
      if(tSMA==0.0) return(i-1);
      MA[0]=0.0;
      if(CopyBuffer(hLwMA,0,rates_total-i,1,MA)<1) return(i-1);
      double tLWMA=MA[0];
      if(tLWMA==0.0) return(i-1);
      FF[i]=3.0*tLWMA-2.0*tSMA;
     }
//---
Файлы:
malr.mq5  5 kb
 
rabenzon:

Нашел интересный советник но он написан для МТ5, пытался переделать его для МТ4 но в програмировании не силен, и не понял как изменить эту часть (компилятор ругается на CopyBuffer) если кто поможет заранее спасибо.

CopyBuffer в mql4 нет. Вам проще обратиться на этом сайте на фриланс.
 
rabenzon:

Нашел интересный индикатор но он написан для МТ5, пытался переделать его для МТ4 но в програмировании не силен, и не понял как изменить эту часть (компилятор ругается на CopyBuffer) если кто поможет заранее спасибо.

Где-то так :

// незабудьте определить PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA PERIOD_SMA,SHIFT_SMA,PRICE_SMA
// и проверьте порядок аргументов iMA - мог и перепутать

FF[i]=3.0*iMA(_Symbol,_Period,MODE_LWMA,PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA,i) - 2.0 * iMA(_Symbol,_Period,MODE_SMA,PERIOD_SMA,SHIFT_SMA,PRICE_SMA,i);

// MT4 всё-ж проще когда надо сделать быстро и понятно

 
Maxim Kuznetsov:

Где-то так :

// незабудьте определить PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA PERIOD_SMA,SHIFT_SMA,PRICE_SMA
// и проверьте порядок аргументов iMA - мог и перепутать

FF[i]=3.0*iMA(_Symbol,_Period,MODE_LWMA,PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA,i) - 2.0 * iMA(_Symbol,_Period,MODE_SMA,PERIOD_SMA,SHIFT_SMA,PRICE_SMA,i);

// MT4 всё-ж проще когда надо сделать быстро и понятно

Это главное.
 
Maxim Kuznetsov:

Где-то так :

// незабудьте определить PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA PERIOD_SMA,SHIFT_SMA,PRICE_SMA
// и проверьте порядок аргументов iMA - мог и перепутать

FF[i]=3.0*iMA(_Symbol,_Period,MODE_LWMA,PERIOD_LWMA,SHIFT_LWMA,PRICE_LWMA,i) - 2.0 * iMA(_Symbol,_Period,MODE_SMA,PERIOD_SMA,SHIFT_SMA,PRICE_SMA,i);

// MT4 всё-ж проще когда надо сделать быстро и понятно

Спасибо за помощь. Но видимо не судьба разобраться почему он не рисует. 
 
)) Не рисует ? Т.е.ничего не показывает? 
 
Alexander Ivanov:
)) Не рисует ? Т.е.ничего не показывает? 
Да, никаких линий, компилятор ошибок не выдает.
 
rabenzon:

Нашел интересный индикатор но он написан для МТ5, пытался переделать его для МТ4 но в програмировании не силен, и не понял как изменить эту часть (компилятор ругается на CopyBuffer) если кто поможет заранее спасибо.

 

 

//+------------------------------------------------------------------+
//|                                                         MALR.mq5 |
//+------------------------------------------------------------------+
#property copyright "BECEMAL"
#property link      "http://www.becemal.ru/"
#property version   "1.44"

#property strict

//---
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   5
//---
#property indicator_label1  "MALR"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//---
#property indicator_label2  "MALRH"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrLime
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//---
#property indicator_label3  "MALRL"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrRed
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//---
#property indicator_label4  "MALRHH"
#property indicator_type4   DRAW_LINE
#property indicator_color4  clrForestGreen
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1
//---
#property indicator_label5  "MALRLL"
#property indicator_type5   DRAW_LINE
#property indicator_color5  clrCrimson
#property indicator_style5  STYLE_SOLID
#property indicator_width5  1
//---
input int                  MAPeriod           = 120;
input int                  MAShift            = 0;
input ENUM_APPLIED_PRICE   AppliedPrice       = PRICE_CLOSE;
input double               ChannelReversal    = 0.8;
input double               ChannelBreakout    = 0.8;
//+------------------------------------------------------------------+
//| global parameters                                                |
//+------------------------------------------------------------------+
double FF[],FFL[],FFH[],FFLL[],FFHH[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,FF,INDICATOR_DATA);
   SetIndexBuffer(1,FFH,INDICATOR_DATA);
   SetIndexBuffer(2,FFL,INDICATOR_DATA);
   SetIndexBuffer(3,FFHH,INDICATOR_DATA);
   SetIndexBuffer(4,FFLL,INDICATOR_DATA);
//---
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
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[])
  {
   int limit1=rates_total-prev_calculated;
   int limit2=limit1;
   if (limit1>1)
   {
      limit1=rates_total-MAPeriod-1;
      limit2=limit1-MAPeriod;
   }
//---

// Расчет регрессии
   for(int i=limit1; i>=0; i--)
     {
      double tLWMA=iMA(_Symbol,_Period,MAPeriod,MAShift,MODE_LWMA,AppliedPrice,i);
      double tSMA=iMA(_Symbol,_Period,MAPeriod,MAShift,MODE_SMA,AppliedPrice,i);

      FF[i]=3.0*tLWMA-2.0*tSMA;
     }

//---
// Расчет  Средне-квадратичного отклонения
   for(int i=limit2; i>=0; i--)
     {
      double StdDev=0.0;
      double tMA=FF[i];
      for(int j=0; j<MAPeriod; j++)
        {
         double t=iMA(_Symbol,_Period,1,0,MODE_SMA,AppliedPrice,i)-FF[i+j];
         StdDev+=t*t;
        }
      StdDev=MathSqrt(StdDev/MAPeriod);
      double tS=StdDev*ChannelReversal;
      double tS2=StdDev*(ChannelReversal+ChannelBreakout);
      FFL[i] = tMA-tS;
      FFH[i] = tMA+tS;
      FFLL[i] = tMA-tS2;
      FFHH[i] = tMA+tS2;
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
Причина обращения: