ПОМОГИТЕ КОНВЕРТИРОВАТЬ КОД ИЗ 4 В 5 MQL

 

Здравствуйте, у меня проблема с конвертацией кода на mql5
В mql4 получение значения(индексация) индикатора на предедущих барах была в самом iMA,но в mql5 почему то все стало сложно....
Пожалуйста помогите мне писать ниже предоставленный код в mql5 

1.   iMA(NULL,30,7,0,MODE_EMA,PRICE_CLOSE,2);

2.   iClose(Symbol(),30,3)

Как можно написать тоже самое на mql5 ??

 
Tigran Sharafyan:

Здравствуйте, у меня проблема с конвертацией кода на mql5
В mql4 получение значения(индексация) индикатора на предедущих барах была в самом iMA,но в mql5 почему то все стало сложно....
Пожалуйста помогите мне писать ниже предоставленный код в mql5 

1.   iMA(NULL,30,7,0,MODE_EMA,PRICE_CLOSE,2);

2.   iClose(Symbol(),30,3)

Как можно написать тоже самое на mql5 ??

//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2009-2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

//--- входные параметры
input int                  ma_period=10;                 // период средней
input int                  ma_shift=0;                   // смещение
input ENUM_MA_METHOD       ma_method=MODE_EMA;           // тип сглаживания
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;    // тип цены
input ENUM_TIMEFRAMES      period=PERIOD_CURRENT;        // таймфрейм
//--- переменная для хранения хэндла индикатора iMA
int    handle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(9);
//--- создадим хэндл индикатора
   handle=iMA(NULL,period,ma_period,ma_shift,ma_method,applied_price);
//--- если не удалось создать хэндл
   if(handle==INVALID_HANDLE)
     {
      //--- сообщим о неудаче и выведем номер ошибки
      PrintFormat("Не удалось создать хэндл индикатора iMA для пары %s/%s, код ошибки %d",
                  Symbol(),
                  EnumToString(period),
                  GetLastError());
      //--- работа индикатора завершается досрочно
      return(INIT_FAILED);
     }

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   double buffer[1];    // массив размерностью 1
//--- сбросим код ошибки
   ResetLastError();
//--- копируем в массив buffer{}[] значение из индикаторного буфера под индексом 2
   if(CopyBuffer(handle,0,2,1,buffer)<0)
     {
      //--- если копирование не удалось, сообщим код ошибки
      PrintFormat("Не удалось скопировать данные из индикатора iMA, код ошибки %d",GetLastError());
      //--- завершим с нулевым результатом - это означает, что индикатор будет считаться нерассчитанным
      return;
     }
   else
     {
      Print(DoubleToString(buffer[0],5));
     }
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:
Извените ,это немножко запутано,и я не понял,где надо написать цыфру 2 ,чтобы получать значение не индексе 2 индикатора((((((((
 
CopyBuffer()
 
Tigran Sharafyan:
Извените ,это немножко запутано,и я не понял,где надо написать цыфру 2 ,чтобы получать значение не индексе 2 индикатора((((((((
//--- копируем в массив buffer{}[] значение из индикаторного буфера под индексом 2
   if(CopyBuffer(handle,0,2,1,buffer)<0)

И по всем приведённым функциям пройдитесь по справку в MeraEditor'e:

iMA

CopyBuffer

 
Karputov Vladimir:

И по всем приведённым функциям пройдитесь по справку в MeraEditor'e:

iMA

CopyBuffer

Спасибо огромное !
 
Добрый день Дамы и Господа! Помогите, пожалуйста, с переводом кода: https://www.mql5.com/ru/forum/399612
Помогите конвертировать индикатор из MQL4 в MQL5
Помогите конвертировать индикатор из MQL4 в MQL5
  • 2022.04.21
  • www.mql5.com
Добрый день уважаемые форумчане, помогите, пожалуйста, конвертировать данный индикатор из MQL4 в MQL5...
Причина обращения: