Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2011.02.01 15:23
Советники

Мультивалютный обработчик событий OnTick(string symbol) - эксперт для MetaTrader 5

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
4497
Рейтинг:
голосов: 28
onmultitick.zip (24.14 KB)

Описание:

Это еще одна версия того, как можно организовать полноценный мультивалютный режим в MetaTrader 5. Сделан в виде аля стандартного обработчика тиков OnTick(string symbol). 

Достоинства:

  • Настоящая мультивалютность на демо и реале.
  • Простые настройки.
  • Можно настроить какие события получать в OnTick(string symbol): NewTick и/или NewBar.
  • Можно настроить, чтобы получать события для инструментов из окна "Обзор рынка" или для вашего списка символов.
  • При работе с символами из окна "Обзор рынка", можно "на лету" управлять для каких символов получать события в OnTick(string symbol).
  • Нет необходимости вникать в то, как это работает. Весь код помещен во включаемый файл, не мешается, когда пишите свой.
  • Работает в тестере.

Шаблон эксперта выглядит так:

//+------------------------------------------------------------------+
//|                                        OnTick(string symbol).mq5 |
//|                                            Copyright 2010, Lizar |
//|                            https://www.mql5.com/ru/users/Lizar |
//+------------------------------------------------------------------+
#define VERSION       "1.00 Build 1 (01 Fab 2011)"

#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Шаблон экспертов при использовании"
#property description "мультивалютного обработчика OnTick(string symbol)"

//+------------------------------------------------------------------+
//|                НАСТРОЙКИ МУЛЬТИВАЛЮТНОГО РЕЖИМА                  |
//|          для обработчика событий OnTick(string symbol)           |
//|                                                                  |
//| 1.1 Список символов для которых необходимо получать события:     |
#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 Получать события для всех символов из окна "Обзор рынка":    |
//#define  SYMBOLS_TRADING    "MARKET_WATCH"
//|     Примечание: нужно выбрать либо пункт 1.1 либо пункт 1.2.     |
//|                                                                  |
//| 2.  Тип события для OnTick(string symbol):                       |
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//|     Примечание: тип события должен соответствовать перечислению  |
//|                 ENUM_CHART_EVENT_SYMBOL.                         |
//|                                                                  |
//| 3.  Включаемый файл, содержащий весь функционал:                 |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//| Эта функция в коде эксперта должна присутствовать обязательно,   |
//| даже если она пустая                                             |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Здесь ваш код...   
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Expert multi tick function                                       |
//| Эта функция вместо стандартной OnTick()                          |
//+------------------------------------------------------------------+
void OnTick(string symbol)
  {
   //--- Здесь ваш код...
   Print("Новое событие по символу: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//| Эта функция в коде эксперта должна присутствовать обязательно,   |
//| даже если она пустая                                             |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam) // параметр события типа string
  {
   //--- Здесь ваш код...   
  }
  
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   //--- Здесь ваш код...   
  }

//+------------------------------ end -------------------------------+

Некоторые особенности:

  1.  Настройки.
Все настройки осуществляются при помощи директив препроцессора #define. Для корректной работы OnTick(string symbol) нужно установить всего два параметра: SYMBOLS_TRADING и CHART_EVENT_SYMBOL. Параметром SYMBOLS_TRADING задаются символы для которых будут поступать события. Параметром CHART_EVENT_SYMBOL задаются типы событий для всех символов.

SYMBOLS_TRADING можно задать в виде списка символов, например:

#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"

Список должен быть оформлен в виде строковых констант через запятую. Список заканчивается с концом строки и не может быть перенесен на следующую строку.

Либо SYMBOLS_TRADING можно задать так:

#define  SYMBOLS_TRADING    "MARKET_WATCH"

Такой способ означает, что вы собираетесь использовать вместо списка символы из окна "Обзор рынка". Этот способ удобен тем, что во время работы эксперта можно "на лету" менять символы для которых будут поступать события в OnTick(string symbol). Для этого достаточно добавлять или удалять торговые инструменты в окне "Обзор рынка".

Тип событий CHART_EVENT_SYMBOL задается флагом или комбинацией флагов из перечисления ENUM_CHART_EVENT_SYMBOL. Подробнее об этом перечислении можно прочитать здесь. Примеры установки типа события:

//--- Пример 1. События поступают каждый тик:
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//--- Пример 2. События для символов поступают каждую минуту и час:
#define  CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1

     2.  Включаемый файл.

Директива #include c файлом OnTick(string symbol).mqh, который содержит весь функционал для функции  OnTick(string symbol), должна быть размещена после настроек и перед другими стандартными обработчиками событий.  Файл устроен так, чтобы убрать с глаз долой весь обслуживающий код для OnTick(string symbol). В связи с этим, присутствие некоторых стандартных функций в приведенном выше шаблоне отмечено как обязательное. 

     3.  Тестер.

Как известно, на момент публикации тестер не поддерживает работу обработчика событий OnChartEvent. Для того, чтобы появилась возможность тестировать эксперты, в код была включена передача событий через глобальные переменные терминала. Это сделано исключительно  для тестера стратегий, на реале и демо события передаются через OnChartEvent. Конечно, подобные дополнения сделали код не таким красивым, но зато теперь можно использовать тестер.

Один нюанс. В тестере  OnTick(string symbol) работает на тиках того символа, который установлен в настройках тестера. В общем, работает почти как OnTick(), только события каждый тик поступают по выбранным торговым инструментам. Для работы в тестере символы в параметре SYMBOLS_TRADING должны быть заданы списком.

     4.  Шпионы.

Индикаторы-шпионы используются. Поэтому присутствие в каталоге  \MQL5\Indicators\ шпиона Spy Control panel MCM.ex5 - имеет значение. В прикрепленном файле новый билд Spy Control panel MCM.mq5. В нем для тестера добавлена передача событий через глобальные переменные.

     5.  Прилагаемый архив следует распаковать в каталог  \MQL5. Файлы будут размещены следующим образом:

    • /mql5/experts/OnTick(string symbol).mq5      - пример эксперта,  исходник шаблона;
    • /mql5/experts/OnTick(string symbol).ex5       - пример эксперта,  исполняемый файл;
    • /mql5/indicators/Spy Control panel MCM.mq5 - индикатор - агент, исходник;
    • /mql5/indicators/Spy Control panel MCM.ex5  - индикатор - агент, исполняемый файл;
    • /mql5/include/OnTick(string symbol).mqh       - включаемый файл, содержащий весь функционал OnTick(string symbol).
       
Synchronized Charts Synchronized Charts

Советник Synchronized Charts производит синхронизацию открытых графиков.

Nonparametric Zig Zag, Out of Price Walk Nonparametric Zig Zag, Out of Price Walk

Непараметрический зигзаг. Условие монотонности для восходящей ветки зигзага: для любого последующего бара его High не должен быть ниже Low любого предыдущего бара этой же ветки. Аналогично для нисходящей ветки зигзага.

eKeyboardTrader eKeyboardTrader

Эксперт для выполнения основных торговых действий с клавиатуры.

TrendMagic TrendMagic

Индикатор Trend Magic.