Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запусти агентов на свободном компьютере. Это принесет доход!
Tigran Sharafyan
186
Tigran Sharafyan 2015.06.21 12:54 

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

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

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

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

Vladimir Karputov
Модератор
45526
Vladimir Karputov 2015.06.21 13:32  
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));
     }
  }
//+------------------------------------------------------------------+
Tigran Sharafyan
186
Tigran Sharafyan 2015.06.21 13:55  
Karputov Vladimir:
Извените ,это немножко запутано,и я не понял,где надо написать цыфру 2 ,чтобы получать значение не индексе 2 индикатора((((((((
Vitalie Postolache
12098
Vitalie Postolache 2015.06.21 14:00  
CopyBuffer()
Vladimir Karputov
Модератор
45526
Vladimir Karputov 2015.06.21 14:01  
Tigran Sharafyan:
Извените ,это немножко запутано,и я не понял,где надо написать цыфру 2 ,чтобы получать значение не индексе 2 индикатора((((((((
//--- копируем в массив buffer{}[] значение из индикаторного буфера под индексом 2
   if(CopyBuffer(handle,0,2,1,buffer)<0)

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

iMA

CopyBuffer

Tigran Sharafyan
186
Tigran Sharafyan 2015.06.22 12:41  
Karputov Vladimir:

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

iMA

CopyBuffer

Спасибо огромное !
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий