Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2343
- Рейтинг:
- голосов: 12
- Опубликован:
- 2017.01.30 10:03
Класс, позволяет легко определить из 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_OPEN | 32 | Событие открытия нового графика |
CHARTEVENT_CHART_CLOSE | 33 | Событие закрытия графика |
CHARTEVENT_MW_SYMBOL_ADD | 34 | Событие добавления символа в обзор рынка |
CHARTEVENT_MW_FEW_SYMBOL_ADD | 35 | Событие добавления нескольких символов в обзор рынка |
CHARTEVENT_MW_SYMBOL_DEL | 36 | Событие удаления символа из обзора рынка |
CHARTEVENT_MW_FEW_SYMBOL_DEL | 37 | Событие удаления нескольких символов из обзора рынка |
CHARTEVENT_MW_CHANGE_SORT | 38 | Событие изменения сортировки символов в обзоре рынка |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | 39 | Событие открытия/закрытия панели OneClick |
Значения идентификаторов я сделал перекликающимися с идентификаторами графической библиотеки Анатолия (Anatoli Kazharski), хотя задать их можно конечно такими, которые больше вам подходят.
Значения, передаваемые вместе с событием в управляющую программу:
Идентификатор | lparam | dparam | sparam |
---|---|---|---|
CHARTEVENT_CHART_OPEN | long ChartID открытого графика | ENUM_TIMEFRAMES Период открытого графика | string Символ открытого графика |
CHARTEVENT_CHART_CLOSE | long ChartID закрытого графика | ENUM_TIMEFRAMES Период закрытого графика | string Символ закрытого графика |
CHARTEVENT_MW_SYMBOL_ADD | int Текущее количество символов | int Прошлое количество символов | string Добавленный символ |
CHARTEVENT_MW_FEW_SYMBOL_ADD | int Текущее количество символов | int Прошлое количество символов | string Последний используемый символ |
CHARTEVENT_MW_SYMBOL_DEL | int Текущее количество символов | int Прошлое количество символов | string Удалённый символ |
CHARTEVENT_MW_FEW_SYMBOL_DEL | int Текущее количество символов | int Прошлое количество символов | string Последний используемый символ |
CHARTEVENT_MW_CHANGE_SORT | int Текущее количество символов | int Текущее количество символов | string Последний используемый символ |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | int X-координата правой границы панели | int Y-координата нижней границы панели | string Описание состояния панели: "CHART_IS_ONE_CLICK_ON" - есть панель "CHART_IS_ONE_CLICK_OFF" - нет панели |
Для подключения класса в программу, необходимо в глобальной области подключить файл и создать экземпляр класса:
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

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

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

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

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