Скачать MetaTrader 5

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

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

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

2010.12.16 16:13
Советники

Панель управления мультивалютным режимом "Control panel MCM" - эксперт для MetaTrader 5

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

Просмотров:
4990
Рейтинг:
голосов: 26

Введение

Одно из преимуществ языка программирования MQL5 заключается в том, что можно создать инструменты для работы индикаторов и советников в реальном мультивалютном режиме. Подтверждением этому является выложенный мной скрипт в Code Base “Мультивалютный обработчик тиков OnTickMarketWatch”.

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

Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.

В дополнение к этому иногда требуется торговать или рассчитывать индикаторы только при появлении нового бара. Или срочно отключать торговлю мультивалютника по какому-либо инструменту не прерывая его работу, так сказать «на лету». Или изменить, например, период какого-либо символа не прерывая работу мультивалютника. Или много чего еще… Причем это "много чего еще" часто является данными из внешней среды в которой работает индикатор или советник.

Именно для настройки внешней среды в которой работает мультивалютный индикатор или советник и задумывалась панель управления мультивалютным режимом "Control panel MCM" (Control panel the MultiCurrency Mode).

Кстати, эту панель с легкостью можно использовать и для одновалютной торговли.


Достоинства представленной на конкурс версии "Control panel MCM"

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

  • Подключение/отключение символов из окна "Обзор рынка" для торговли или анализа.
  • Установить режим торговли по тикам или по событию "новый бар" по любому периоду и выбранному в "Обзоре рынка" символу.
  • Менять все вышеперечисленные установки «на лету» не выгружая, не останавливая или не заходя в окно свойств советника или индикатора.
  • Панель можно установить как самостоятельную единицу на график, а затем на график "бросать" эксперты и индикаторы совместимые с панелью.
  • Панель можно включать как составную единицу индикаторов или экспертов. Она загрузится вместе с ними.
  • Это все нисколько не ограничивает ваш творческий потенциал при создании мультивалютных индикаторов и экспертов. Более того, благодаря "Control panel MCM" вам теперь не придется "вшивать" в свой код то, что дает вам эта разработка.

Изучив меню "Control panel MCM", вы сможете увидеть дополнительный сервис, который возможен, но не включен в конкурсную версию.

Более подробное описание функционала "Control panel MCM" есть ниже в разделе "Работа с панелью управления мультивалютным режимом".

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


Простота установки и обслуживания панели

Установить "Control panel MCM" легко. Это можно сделать тремя способами:

  • Загрузить на нужный график индикатор "iControl panel MCM", который является "движком" панели.
  • Запустить на выполнение скрипт "scControl panel MCM". Этот скрипт сделан просто для примера, он запускает индикатор "iControl panel MCM".
  • Включить загрузку панели из своего индикатора или советникa. Пример эксперта находится в файле "exControl panel MCM".

В последнем варианте панель загрузится вместе с вашим индикатором или советником в одном окне. В первых двух просто установится сама панель. Далее в это окно может быть установлен ваш эксперт или индикатор, которые должны быть совместимы с "Control panel MCM". Единственное требование совместимости к вашим MQL-программам это наличие в них стандартного обработчика событий OnChartEvent().


Дизайн интерфейса

Простой. Выполнен ввиде традиционного меню. Настройка цветов и размера осуществляется через свойства индикатора. Внешне панель и кнопки панели выглядят так:

Настройка цветов и размера индикатора iControl panel MCM


Эргономика работы в ежедневной деятельности

Здесь тоже все очень просто. Сама панель нужна только для настройки необходимых событий для мультивалютника в самом начале работы. Размеры окон, по возможности, подстраиваются под размеры окна графика. Если меню достаточно длинное, то появляется вертикальная линия прокрутки списка меню. После настройки, панель можно свернуть и она будет "спать" в левом нижнем углу окна, пока ее не разбудят. Она не загромождает сильно график и не особо мешается.

Свернутая панель нидикатора iControl panel MCM

Размер панели можно менять изменяя размер шрифта в "Свойствах" индикатора. По умолчанию установлен размер шрифта 10:

Настройки шрифта индикатора iControl panel MCM

Например, для слепых гламурных блааандинок панель может выглядеть так:

Настройка цветов панели индикатора iControl panel MCM

А для загадочных всевидящих ЭМО панель может выглядеть, например, так:

Настройка цветов панели индикатора iControl panel MCM


Легкость освоения и запоминания действий

Меню панели интуитивно понятно. Учитывая, что меню состоит всего из нескольких кнопок, то запутаться в них сложно, а запомнить легко.

Кнопка меню "Control panel MCM" содержит дополнительные инструменты, расширяющие возможности панели (в данной версии не подключены):

Дополнительные инструменты панели индикатора iControl panel MCM

Кнопка меню "График" содержит настройки символа и периода текущего графика. Выбрав другой символ или период, можно изменить параметры текущего графика:

Изменение параметров текущего графика панели iControl panel MCM

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

В меню отображаются только те символы, которые выбраны в окне "Обзор рынка". Можно выбрать любое "на вкус" одно событие или комбинировать вместе несколько событий. Все они будут поступать в мультивалютник. Теперь в своих индикаторах или экспертах не нужно заботиться, например, о появлении нового бара на каких либо таймфреймах, об этом позаботится данная панель и сообщит вам об этом событии через обработчик событий OnChartEvent():

Событие новый бар панели iControl panel MCM  

Кнопка меню "Справка" сделана чисто из шкурных интересов - засвидетельствовать свое авторство и послать, в смысле "направить", вас на этот форум:

Справка панели iControl panel MCM


Ноу-Хау решения, или интересный подход

Собственно, свое Ноу-Хау решение я еще раскрыл при публикации “Мультивалютный обработчик тиков OnTickMarketWatch”. Но эта панель содержит в себе дополнительные решения и исключает все недостатки предложенного ранее скрипта:

  • "Control panel MCM" предоставляет сервис, который не реализован стандартно в терминале. А именно, предоставляет возможность реального мультивалютного режима через обработчик событий OnChartEvent() и позволяет вынести некоторые настройки за пределы советников, с возможностью оперативно менять их «на ходу».
  • Для генерации событий для стандартного обработчика событий OnChartEvent() панель использует своих «агентов», которые и поставляют соответствующие события для мультивалютника. Это позволяет "разгрузить" мультивалютного эксперта распараллеливанием потов обработки данных. Под агентами я имею ввиду индикаторы, которые запускаются "Control panel MCM" на выбранном символе.
  • Панель можно использовать как независимый инструмент, так и встраиваемый в советники или индикаторы. Это позволяет достаточно гибко использовать его.
  • "Control panel MCM" нисколько не ограничивает творческий потенциал программистов при создании мультивалютных индикаторов и экспертов. Более того, благодаря "Control panel MCM" теперь не придется «вшивать» в код то, что дает эта разработка.
  • Создает (или как минимум претендует на это) новый, более простой стандарт архитектуры советников и индикаторов. ИМХО, конечно. Если успею, то выложу пару примеров.


Информационное сопровождение событий и оповещения трейдера

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


Некоторые особенности работы с "Control panel MCM".

Установка панели.

Для установки панели необходимо распаковать архивный файл "Control panel MCM.rar" в каталог mql5. При распаковке получите несколько файлов :

  • /mql5/experts/exControl panel MCM.mq5 - пример эксперта, использующего шаблон;
  • /mql5/scripts/scControl panel MCM.mq5 - скрипт, загружающий панель управления;
  • /mql5/indicators/iControl panel MCM.mq5 - индикатор - движок "Control panel MCM";
  • /mql5/indicators/Spy Control panel MCM.mq5 - индикатор - агент  "Control panel MCM";
  • /mql5/include/Control panel MCM.mqh - сборище функций и классов "Control panel MCM".

Скомпилируйте эксперт, скрипт и оба индикатора.

Загрузка панели

Загрузка панели осуществляется просто: запустите индикатор "iControl panel MCM.mq5" на любом символе и таймфрейме. Все. Дальше можно играться с панелью. Можно к графику присоединять советники и индикаторы совместимые с "Control panel MCM".

Для меня больший практический смысл имеет загрузка панели из эксперта. Запускаем эксперт "exControl panel MCM" и получаем:

Пример использования панели iControl panel MCM

Дополнительно, для примера, присоединил собственный мультивалютный индикатор MultiTrend, специально разработанный для использования с панелью управления мультивалютным режимом. Индикатор показывает движение доллара (розовая линия) на основе анализа движения четырех валют.

Код эксперта привожу ниже:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Эксперт демонстрирует работу панели управления мультивалютным режимом"
#property description "\Control panel MCM\" (Control panel the MultiCurrency Mode)."
input color bg_color=Gray;        // Цвет меню 
input color font_color=Gainsboro; // Цвет шрифта 
input color select_color=Yellow;  // Цвет выделения 
input int font_size=10;         // Размер шрифта 
#include <Control panel MCM.mqh> //<--- Включаемый файл Control panel MCM 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Инициализация Control panel MCA.     
//--- Параметры цветов задавать не обязательно (будут установлена раскрасска меню по умолчанию).      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- Деинициализация Control panel MCA:  
  }
//+------------------------------------------------------------------+ 
//| Стандартная функция обработки событий. Она может использоваться  | 
//| по своему прямому назначению, как описано в документации.        | 
//|                                                                  | 
//| Вместе с Control panel MCM является удобным средством для        | 
//| мультивалютной торговли.                                         | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // идентификатор события:                                      
                  // если id-CHARTEVENT_CUSTOM==0 - инициализация, соответствует моменту prev_calculated==0
                  // если id-CHARTEVENT_CUSTOM!=0 - позиция символа в окне "Обзор рынка"                 
                  const long&   lparam, // период графика                 
                  const double& dparam, // цена                 
                  const string& sparam  // инструмент                 
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 


Описание входных параметров OnChartEvent()

Панель управления генерирует пользовательские события и транслирует их на установленном графике с целью дальнейшей обработки этих событий в эксперте или индикаторе с помощью функции OnChartEvent().Входные параметры этой функции (в нашем случае) необходимо интерпретировать следующим образом:

  • id - идентификатор события:
    если id-CHARTEVENT_CUSTOM !=0 - позиция символа в окне "Обзор рынка";
  • lparam; - флаг события, поступившего от агента панели. Флаги соответствуют перечислению ENUM_CHART_EVENT_SYMBOL, которое найдете в начале включаемого файла Control panel MCM.mqh, а описание чуть ниже по тексту.
  • dparam - цена тика или цена открытия нового бара на определенном таймфрейме.
  • sparam - имя торгового инструмента, по которому пришло событие


Список поставляемых событий Control panel MCM

Через lparam панель управления может, в зависимости от настроек, передать до 64 различных пользовательских событий по символу. В данной версии Control panel MCM может передавать следующие события:

  • Событие "Инициализация" (Initialization);
  • Событие "новый тик" (tick);
  • Событие "новый бар" на 1 -минутном графике (M1);
  • Событие "новый бар" на 2 -минутном графике(M2);
  • Событие "новый бар" на 3 -минутном графике(M3);
  • Событие "новый бар" на 4 -минутном графике (M4);
  • Событие "новый бар" на 5 -минутном графике (M5);
  • Событие "новый бар" на 6 -минутном графике (M6);
  • Событие "новый бар" на 10-минутном графике (M10);
  • Событие "новый бар" на 12-минутном графике (M12);
  • Событие "новый бар" на 15-минутном графике (M15);
  • Событие "новый бар" на 20-минутном графике (M20);
  • Событие "новый бар" на 30-минутном графике (M30);
  • Событие "новый бар" на 1 -часовом графике (H1);
  • Событие "новый бар" на 2 -часовом графике (H2);
  • Событие "новый бар" на 3 -часовом графике (H3);
  • Событие "новый бар" на 4 -часовом графике (H4);
  • Событие "новый бар" на 6 -часовом графике (H6);
  • Событие "новый бар" на 8 -часовом графике (H8);
  • Событие "новый бар" на 12-часовом графике (H12);
  • Событие "новый бар" на дневном графике (D1);
  • Событие "новый бар" на недельном графике (W1);
  • Событие "новый бар" на месячном графике (MN1);

В скобках приведено описание события, которое возвращается функцией EventDescription(). Саму функцию тоже можно найти начале включаемого файла Control panel MCM.mqh после перечисления ENUM_CHART_EVENT_SYMBOL.

Заметьте, что событие "Инициализация" соответствует моменту, когда происходит обнуление входного параметра prev_calculated индикатора на символе с которого пришло событие. Следовательно, в нашем мультивалютном индикаторе или эксперте необходимо предпринять соответствующие меры. Например, произвести перерасчет индикатора по данному символу.


Настройка событий

Настройка событий, которые будут поступать от агентов панели управления, производится через кнопку меню "События". Нажав на кнопку появится список всех символов, которые на данный момент выбраны в окне "Обзор рынка". Чтобы включить события по символу, нужно дважды нажать по нему мышкой. Лучше мееедлено, чтобы ощутить весь кайф от действия.

Если ранее уже были включены события по символу (этот символ подсвечивается ярким цветом), то на него достаточно нажать один раз. Появится список событий. Можно выбрать одно или несколько событий, все они будут поступать в ваш мультивалютник. Чтобы изменения вступили в силу, нужно нажать кнопку "Включить/Отключить события". И так по всем нужным символам.

Выбор событий панели iControl panel MCM

Вот то, что мы имеем в результате работы демонстрационного эксперта совместно с панелью:

Пример работы индикатора iControl panel MCM

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_CLOSEPRC_V1 YURAZ_CLOSEPRC_V1

Закрытие всех открытых позиций одним кликом либо закрытие всех позиций при достижении указанного профита в процентах от депозита

EA Simple BB EA Simple BB

Советник основан на индикаторе Bollinger Bands.

Мультипериодный индикатор MK_LaguerreMultiPeriodV2 Мультипериодный индикатор MK_LaguerreMultiPeriodV2

Обычный Laguerre на нескольких таймфреймах одновременно.