Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
aChartsAndMW5Class - библиотека для MetaTrader 5
- Просмотров:
- 1518
- Рейтинг:
- Опубликован:
- 2017.01.30 10:04
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Класс, позволяет легко определить из MQL5-программы изменения в окне "Обзор рынка" (смена сортировки символов, добавление, удаление символа или наборов символов), открытие и закрытие новых графиков, а так же наличие/отсутствие панели торговли в один клик на графике, на котором работает программа. Класс работает по принципу отправки пользовательских событий в управляющую программу.
В программе доступны публичные методы:
Метод | Описание | Возвращаемое значение |
---|---|---|
Методы работы с графиками | ||
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.mq5
Индикатор показывает статистические характеристики баров: среднее значение, дисперсию, коэффициент асимметрии и коэффициент эксцесса
BackboneИдея советника базируется на постоянном изменении направлений сделок в зависимости от уровней TakeProfit, StopLoss и TrailingStop.
Оценка осуществляется на основе значений пяти индикаторов (Gator, WPR, AC, DeMarker и RSI). Используются трапециевидные функции принадлежности. Перед отправкой торгового приказа производится проверка на наличие достаточного количества средств.
ADX & MAСтратегия базируется на двух индикаторах: ADX и MA, а также Close первого бара. Также для Buy и Sell позиций введены различные уровни TakeProfit, StopLoss и Trailing.