Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


 
Приветствую Вас, дорогие друзья. В этой статье мы рассмотрим две функции языка программирования MQL4.

Первая функция называется Symbol() — она возвращает наименование текущего инструмента. Вторая – MarketInfo(), которая возвращает информацию о валютных инструментах.

 

Функция MQL4 — Symbol();

Функция Symbol() сама по себе достаточно простая. В ней нам не нужно вводить никаких дополнительных параметров.

Для практического примера использования Symbol(), давайте в блоке onTimer() мы с Вами введем локальную текстовую переменную string y и присвоим ей значение Symbol(). Далее, при помощи команды Comment(), выведем данную переменную на график.

// БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ
void OnTimer()
  {  
    string y = Symbol();
    Comment(y);
  }

 

Компилируем наш код. Открываем терминал, перетаскиваем советник на график, нажимаем «OK» и смотрим, что же у нас получилось. На графике в левом верхнем углу мы видим валютную пару GBPUSD. Вывод наименования валютной пары в MQL4 при помощи функции Symbol()

 

Как работает функция Symbol()? Она просто возвращает наименование того валютного инструмента, на котором у нас стоит график. В дальнейшем, в советниках она нам будет достаточно полезна.

 

Функция MQL4 — MarketInfo();

Теперь, давайте рассмотрим функцию MarketInfo(). Она уже более сложная.

MarketInfo(EURUSD, MODE_HIGH);

 

Внутри нее нужно вводить входящую информацию, а именно:

  • символ инструмента, на котором будет эта функция искать информацию, например EURUSD;
  • тип информации — то, что нам нужно исследовать по выбранной валютной паре.

А конкретно, в типе информации мы можем прописать одну из следующих констант для выбранной валютной пары:

  • MODE_LOW — минимальная дневная цена;
  • MODE_HIGH — максимальная дневная цена;
  • MODE_TIME — время поступления последней котировки;
  • MODE_BID — последняя поступившая цена предложения;
  • MODE_ASK — последняя поступившая цена продажи;
  • MODE_DIGITS — количество цифр после запятой в цене инструмента;
  • MODE_SPREAD — спрэд в пунктах;
  • И многие другие.

 

В данном примере:

MarketInfo(EURUSD, MODE_HIGH);

функция MarketInfo() будет искать максимальную дневную цену на паре Евро/Доллар, которую мы прописали сами. Но, мы может не прописывать валютную пару, а вместо нее поставить Symbol(). Тогда Symbol() проанализирует наш график и ту валютную пару, которая отображается на данном графике, после чего сама подставит наименование этого валютного инструмента.

MarketInfo(Symbol(), MODE_HIGH);

 

Давайте рассмотрим MarketInfo () более подробно на практике. Выводить всю информацию будем в функции Comment().

Что мы делаем? Мы в команду Comment() вставляем MarketInfo(), и в скобочках этой функции прописываем тот инструмент, по которому хотим видеть информацию.

Но, на прямую прописывать этот валютный инструмент мы не будем, а сделаем возможность вводить наименование валютной пары во входящих значениях советника. Соответственно, нам нужно ввести глобальную переменную текстового типа (текстового, потому что мы будем писать наименование валютной пары, а это текст) и для вывода этой переменной во входящих значениях в свойствах советника, нам нужно перед ее объявлением поставить extern.

Далее, в MarketInfo() первым параметром пропишем текстовую переменную, о которой говорили в абзаце выше, и вторым параметром мы пропишем константу MODE_SPREAD.

И, как следствие, наш созданный советник выведет на экран спред по заданной нами валютной паре.

Итак, код будет таким:

//+------------------------------------------------------------------+
//|                                              My_first_expert.mq4 |
//|                              Copyright (с) Антон SanGReal Invest |
//|                                       https://sgr-tradeinvest.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright (с) Антон SanGReal Invest"
#property link      "https://sgr-tradeinvest.ru"
#property version   "1.00"
#property strict

extern string y = "EURUSD"; //Наименование валютной пары

// БЛОК ИНИЦИАЛИЗАЦИИ
int OnInit()
  {  
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }  

// БЛОК ДЕИНИЦИАЛИЗАЦИИ
void OnDeinit(const int reason)
  {
   EventKillTimer();     
  } 

 // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТИКАМ 
void OnTick()
  {
  }   

// БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ
void OnTimer()
  {
   Comment(MarketInfo(y,MODE_SPREAD));
  }

 

Компилируем код. Открываем терминал, перетаскиваем наш советник на график, жмем клавишу «OK» и смотрим результат:

Вывод информации о спреде при помощи функции MQL4 - MarketInfo()

 

101.0 это спред (в выходные дни) по паре EURUSD, заданной в настройках нашего советника:

Входящие параметры советника - EURUSD
 


 
Несколько усложним код. Теперь выведем несколько значений из функции MarketInfo(). Каждое новое значение будет выводится с новой строки, для этого применим специальный символ переноса на новую строку — «\n».

// БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ
void OnTimer()
  {
   Comment(
   MarketInfo(y,MODE_LOW),"\n",
   MarketInfo(y,MODE_HIGH),"\n",
   MarketInfo(y,MODE_BID),"\n",
   MarketInfo(y,MODE_ASK),"\n",
   MarketInfo(y,MODE_DIGITS),"\n",
   MarketInfo(y,MODE_SPREAD)  
   );
  }

 

И, для визуального удобства, сделаем в выводе информации текстовое описание выводимых значений. Напоминаю, когда мы в MQL4 выводим текстовую информацию, то ее нужно прописывать в кавычках. Также, не забываем разделять наше текстовое описание и сами значения запятыми. Вот что у нас должно получиться:

// БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ
void OnTimer()
  {
   Comment(
   "минимальная дневная цена = ",MarketInfo(y,MODE_LOW),"\n",
   "максимальная дневная цена = ",MarketInfo(y,MODE_HIGH),"\n",
   "последняя поступившая цена предложения = ",MarketInfo(y,MODE_BID),"\n",
   "последняя поступившая цена продажи = ",MarketInfo(y,MODE_ASK),"\n",
   "количество цифр после запятой в цене инструмента = ",MarketInfo(y,MODE_DIGITS),"\n",
   "спрэд в пунктах = ",MarketInfo(y,MODE_SPREAD)  
   );
  }

 

И, напоследок, дополнительно выведем само название нашей валютной пары, при помощи следующего кода:

"Валютная пара, по которой мы проводим исследование = ",y,"\n","\n",

 

Компилируем наш код. Открываем терминал и смотрим. У нас получился достаточно удобный текст справочной информации:

Вывод информации при помощи функции MQL4 - MarketInfo()

 

Для Вашего удобства, выкладываю MQL код полностью:

//+------------------------------------------------------------------+
//|                                              My_first_expert.mq4 |
//|                              Copyright (с) Антон SanGReal Invest |
//|                                       https://sgr-tradeinvest.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright (с) Антон SanGReal Invest"
#property link      "https://sgr-tradeinvest.ru"
#property version   "1.00"
#property strict

extern string y = "EURUSD"; //Наименование валютной пары

// БЛОК ИНИЦИАЛИЗАЦИИ
int OnInit()
  {  
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }  

// БЛОК ДЕИНИЦИАЛИЗАЦИИ
void OnDeinit(const int reason)
  {
   EventKillTimer();     
  } 

 // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТИКАМ 
void OnTick()
  {
  }   

// БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ
void OnTimer()
  {
   Comment("\n",
   "Валютная пара, по которой мы проводим исследование = ",y,"\n","\n",
   "Минимальная дневная цена = ",MarketInfo(y,MODE_LOW),"\n",
   "Максимальная дневная цена = ",MarketInfo(y,MODE_HIGH),"\n",
   "Последняя поступившая цена предложения = ",MarketInfo(y,MODE_BID),"\n",
   "Последняя поступившая цена продажи = ",MarketInfo(y,MODE_ASK),"\n",
   "Количество цифр после запятой в цене инструмента = ",MarketInfo(y,MODE_DIGITS),"\n",
   "Спрэд в пунктах = ",MarketInfo(y,MODE_SPREAD)  
   );
  }

 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.

 

Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 

Мы рассмотрели достаточно простые функции в MQL4, но они очень важны в программировании. Вскоре мы будем их использовать достаточно часто.

 

На этом, все. Переходите к следующие статье, где мы рассмотрим очень важную деталь в MQL программировании — циклы for, без которых, не обходится ни один торговый Форекс советник.

 

Благодарю за внимание.
 
Другие статьи по теме Программирование на MQL4 Вы можете просмотреть в данном содержании практических уроков по MQL.

 

Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

 

С уважением, Антон.

Обучающий Форекс портал SanGReal Invest
 


 


Вам это может быть интересно. Другие статьи нашего обучающего портала:


  • Антон — SanGReal Invest (Сангрил Инвест)

    Если у Вас появились вопросы по статье, пишите их здесь. Я Вам обязательно отвечу.
    Также, буду рад Вашей обратной связи