Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Tester - библиотека для MetaTrader 5
- Просмотров:
- 8392
- Рейтинг:
- Опубликован:
- 2019.03.01 04:13
- Обновлен:
- 2019.07.11 21:16
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Эта библиотека позволяет любой MT4-style советник запустить в визуальном Тестере.
Для этого вначале нужно прописать только две строки
#define TESTER_CUSTOM // Запуск советника в пользовательском Тестере #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848
После компиляции запускаете советник на нужном Вам чарте и получаете окно визуального Тестера, где крутится Ваша ТС.
В отличие от MT5-Тестера, данный визуальный Тестер работает не на Агенте, а в самом Терминале.
Возможности
- Запуск и снятие индикаторов.
- Любое использование графических объектов.
- Переключение таймфрейма на лету.
- Реакция на все события чарта.
- Полный доступ для любых MQL-программ Терминала.
- Тест идет на истории до текущего времени и продолжается реал-тайм.
- Получение HTML-отчетов в любой момент.
- Возврат Тестера в состояния прошлого.
- Формирование своих цен.
- Ручное управление снятиями/пополнениями тестерного счета.
Все это в чем-то повторяет возможности MT4-Тестера. Но есть и доп. возможности.
Сценарии использования
- Запуск советника и на боевом счету и в данном Тестере. Что даст возможность воочию наблюдать, как ТС работает на торговом счету и в Тестере в реальном времени. Такой сравнительный анализ дает прочувствовать нюансы боевой торговли и учесть их в будущем.
- Перед запуском советника на боевом счете можно прогнать его по свежайшим данным и получить HTML-отчет. Что дает дополнительный контроль правильности задания входных параметров ТС.
- Полноценный эмулятор ручной торговли на исторических данных. Модифицируйте свои торговые панели двумя строками.
Клавиши управления
- Pause - вкл/выкл паузу.
- Стрелки вверх/вниз - увеличение/уменьшение скорости Тестера.
- F5 - добавление нового тика (работает в режиме Паузы).
- R - сохранение HTML-торгового отчета (работает в режиме Паузы).
- ESC+UP/DOWN - пополнение/cнятие счета.
- TAB+UP/DOWN - увеличение/уменьшение обеих цен тика.
- CTRL+UP/DOWN - увеличение/уменьшение Bid-цены тика.
- SHIFT+UP/DOWN - увеличение/уменьшение Ask-цены тика.
- CTRL+LEFT - возврат в прошлое на начало любой предыдущей минуты.
Особенности
- Не требует DLL - может быть в Маркете.
- Для работы используются библиотеки Expert, Symbol, Virtual, Report и MT4Orders. Нужно установить самостоятельно их свежие версии.
- Есть вариант получить сразу работающее решение почти без телодвижений - скачать и распаковать ZIP-архив (обновляться не будет).
- Запускает только MT4-style советники.
- В советнике должны присутствовать OnInit, OnDeinit, OnTick, OnTimer и OnChartEvent. Если чего-то нет - прописать пустыми.
- Тест идет по реальным тикам.
- Самый простой способ наблюдать все подробности торговли - подключить TradePanel_C#. См. в примерах.
Примеры
Первый запуск Тестера.
С библиотекой в качестве примера идет простейший советник для ручной торговли.
// #define REPORT_BROWSER // Создание отчета с запуском браузера - требует разрешения DLL. #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848 // Простейший советник для ручной торговли. #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define KEY_B 66 #define KEY_S 83 #define KEY_C 87 // Клавиша b - покупка, s - продажа, c - закрытие. void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) { if (id == CHARTEVENT_KEYDOWN) { switch ((int)lparam) { case KEY_B: // buy OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0); break; case KEY_S: // sell OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0); break; default: case KEY_C: // close for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100); } } } // Неиспользуемые On-функции нужно прописать пустыми. void OnTick() {} void OnTimer() {} int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit( const int ) {}
Пример позволяет быстро познакомиться с принципами работы Тестера. Попробовать клавиши управления и т.д.
Ручная торговля
// Полноценная ручная торговля на исторических данных + реал-тайм #define REPORT_BROWSER // Создание отчета с запуском браузера - требует разрешения DLL. #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848 #include <IgorM\TradePanel_C#\TradePanel_C#.mqh> // https://www.mql5.com/ru/code/24829 void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) {} void OnTick() {} void OnTimer() {} int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit( const int ) {}
Результат запуска этого советника показан на картинке к данному описанию.
Автоматическая торговля
#define TESTER_CUSTOM // Запуск советника в пользовательском Тестере #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848 // Подключили MT4-style советник. Исходники менять не требуется. #include <..\Experts\fxsaber\TesterEA\TesterEA.mq4> // https://www.mql5.com/ru/code/22770 void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) {} void OnTimer() {} int OnInit() { return(INIT_SUCCEEDED); }
Торговая стратегия на базе индикатора iChaikin (Chaikin Oscillator, CHO)
Din_fibo_Nex_ChnИндикатор линии перемещения трейлинстопа
Модификация стандартного индикатора iATR (Average True Range, ATR).
Flat nightВечером выставляется небольшая сетка отложенных Limit ордеров. Утром всё закрываем.