Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

aChartsAndMW4Class - библиотека для MetaTrader 4

Просмотров:
2447
Рейтинг:
(13)
Опубликован:
2017.01.30 10:03
\MQL4\Include\ \MQL4\Experts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

В программе доступны публичные методы:

Метод
 ОписаниеВозвращаемое значение
Методы работы с графиками
  
bool IsChartOneClick(void)
Возвращает флаг наличия панели торговли OneClick на чарте
bool true/false
uchar GetChartNumbers(void)
Возвращает количество открытых графиков терминала
uchar Количество открытых графиков
long GetOpenedChartID(void)
Возвращает идентификатор только что открытого графика
long ChartID()
string GetOpenedSymbol(void)
Возвращает наименование символа только что открытого графика
string ChartSymbol()
ENUM_TIMEFRAMES GetOpenedTimeframe(void)
Возвращает таймфрейм только что открытого графикаENUM_TIMEFRAMES ChartPeriod()
long GetClosedChartID(void)
Возвращает идентификатор только что закрытого графикаlong ChartID()
string GetClosedSymbol(void)
Возвращает наименование символа только что закрытого графикаstring ChartSymbol()
ENUM_TIMEFRAMES GetClosedTimeframe(void)
Возвращает таймфрейм только что закрытого графикаENUM_TIMEFRAMES ChartPeriod()
bool IsOpenedIsObject(void)
Возвращает признак того, что открытый график - объект
bool true/false
bool IsClosedIsObject(void)Возвращает признак того, что закрытый график был объектомbool true/false
bool CheckOpenChart(string symbol_name);
Проверяет открыт ли график символа
bool true/false
bool CheckOpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe)
Проверяет открыт ли график символа с заданным таймфреймом
bool true/false
long OpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe)
Открывает график символа
long ChartID()
bool IsOpenedAllCharts(void)
Возвращает флаг наличия открытых графиков всех символов в обзоре рынка
bool true/false
Методы работы с окном "Обзор рынка"


bool PutSymbolToMarketWatch(string symbol_name)
Помещает символ в обзор рынка
bool true/false
bool IsExistSymbolInMW(string symbol_name, bool select=false)
Возвращает флаг наличия символа в обзоре рынка/на сервере
bool true/false
int GetNumSymbolsInMW(void)
Возвращает количество символов в обзоре рынка
int Количество символов в Обзоре рынка
int GetNumAllSymbols(void)
Возвращает количество всех доступных символов
int Количество символов на сервере
void ClearMarketWatch(void)Удаляет все возможные символы из Обзора рынкаvoid
Пользовательские события, отправляемые классом в управляющую программу:
Идентификатор
Значение
 Описание
CHARTEVENT_CHART_OPEN32Событие открытия нового графика
CHARTEVENT_CHART_CLOSE33Событие закрытия графика
CHARTEVENT_MW_SYMBOL_ADD34Событие добавления символа в обзор рынка
CHARTEVENT_MW_FEW_SYMBOL_ADD35Событие добавления нескольких символов в обзор рынка
CHARTEVENT_MW_SYMBOL_DEL36Событие удаления символа из обзора рынка
CHARTEVENT_MW_FEW_SYMBOL_DEL37Событие удаления нескольких символов из обзора рынка
CHARTEVENT_MW_CHANGE_SORT38Событие изменения сортировки символов в обзоре рынка
CHARTEVENT_CHART_CHANGE_ONE_CLICK39Событие открытия/закрытия панели OneClick

Значения идентификаторов я сделал перекликающимися с идентификаторами графической библиотеки Анатолия (Anatoli Kazharski), хотя задать их можно конечно такими, которые больше вам подходят.

Значения, передаваемые вместе с событием в управляющую программу:

Идентификатор
 lparamdparam
 sparam
CHARTEVENT_CHART_OPENlong ChartID открытого графика
ENUM_TIMEFRAMES Период открытого графика
string Символ открытого графика
CHARTEVENT_CHART_CLOSElong ChartID закрытого графикаENUM_TIMEFRAMES Период закрытого графикаstring Символ закрытого графика
CHARTEVENT_MW_SYMBOL_ADDint Текущее количество символов
int Прошлое количество символов
string Добавленный символ
CHARTEVENT_MW_FEW_SYMBOL_ADDint Текущее количество символовint Прошлое количество символовstring Последний используемый символ
CHARTEVENT_MW_SYMBOL_DELint Текущее количество символовint Прошлое количество символовstring Удалённый символ
CHARTEVENT_MW_FEW_SYMBOL_DELint Текущее количество символовint Прошлое количество символовstring Последний используемый символ
CHARTEVENT_MW_CHANGE_SORTint Текущее количество символовint Текущее количество символовstring Последний используемый символ
CHARTEVENT_CHART_CHANGE_ONE_CLICKint X-координата правой границы панели
int Y-координата нижней границы панели
string Описание состояния панели:
"CHART_IS_ONE_CLICK_ON" - есть панель
"CHART_IS_ONE_CLICK_OFF" - нет панели

Для подключения класса в программу, необходимо в глобальной области подключить файл и создать экземпляр класса:

#include <aChartsAndMWClass.mqh>
CChartsMW   mw;

Далее в OnTimer() программы подключить таймер класса:

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- Подключение таймера класса
   mw.OnTimerEvent();
  }
//+------------------------------------------------------------------+

А в OnChartEvent() подключить обработчик событий класса:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Подключение обработчика событий класса
   mw.OnEvent(id,lparam,dparam,sparam);

  }
//+------------------------------------------------------------------+

Теперь в OnChartEvent() программы можно принимать и обрабатывать события, возвращаемые классом.

Пример получения событий от класса показан в прилагаемом эксперте exTestChartsMWClass.mq4

Info Info

Информация торговли по инструменту, располагается в правом верхнем углу графика

NewMartin NewMartin

Новый взгляд на привычный мартингейл.

Несколько однонаправленных свечей подряд Несколько однонаправленных свечей подряд

Индикатор показывает момент, когда было несколько однонаправленных свечей подряд.

MultiSymbol RiskManager MultiSymbol RiskManager

Мультивалютный индикатор расчета размера лота.