Визуализация тестирования. История сделок.
1. Мотивация
В клиентском терминале MetaTrader 4 появилась функция визуализации тестирования. Она позволяет контролировать процесс тестирования экспертов на качественно новом уровне. Теперь трейдер-программист может наблюдать за каждым действием своего эксперта, проверяя его работу на истории!
Об использовании визуализатора вы можете прочитать в статье Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри. В настоящей статье будет описано, как сделать тестер стратегий максимально похожим на терминал.
В моей предыдущей статье Визуализация тестирования. Расширение функциональности. было описано, как реализовать закладку "Торговля" при тестировании. Сейчас мы добавим к ней закладку "История счета".
2. Задача и реализация
Для начала нам придется смириться с тем, что точную копию "Истории счета" мы сделать не сможем. Для этого пришлось бы писать сложную программу с использованием dll. Да это и ни к чему, так как закладка "Результаты" тестера содержит практически всю информацию о совершенных операциях.
Наша же задача заключается в отображении актуальной информации на экране. Это может быть очень удобно при анализе работы эксперта. Теперь не будет необходимости постоянно переключаться между закладками.
Поскольку места на экране не много, а прокрутку экрана нормально реализовать достаточно сложно, мы будем отображать только часть истории - на виду будут исключительно самые свежие события.
Остается напомнить, что для создания подокна, в котором будет отображаться история, необходимо создать индикатор, и, прикрепив его к графику, сохранить шаблон под именем tester.tpl либо в шаблоне <имя_эксперта>.tpl (вы можете скачать индикатор прямо из статьи).
Сохранение шаблона для тестирования
Теперь можно заняться подготовкой эксперта. В этом тоже нет ничего сложного:
- сохраняем файл VisualTestingTools.mq4 в директорию ...\MetaTrader 4\experts\include\;
- добавляем в эксперта строку #include <VisualTestingTools.mq4> - теперь содержимое файла будет "включено" в код эксперта;
- и вставляем вызовы функций, отвечающих за обновление истории сделок, в функции init() и start() эксперта.
... double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1; #include <VisualTestingTools.mq4> int init() { if(FastEMAPeriod >= SlowEMAPeriod) return(-1); vTerminalInit(); vHistoryInit(); return(0); } int start() { if(FastEMAPeriod >= SlowEMAPeriod) return(-1); vTerminalRefresh(); vHistoryRefresh(); int _GetLastError = 0; ...
3. Тестирование
Давайте теперь попробуем протестировать нового эксперта. Для этого откроем окно тестера стратегий, выберем из выпадающего списка эксперта CrossMACD_DeLuxe_VisualHistory и нажмем на кнопку свойства.
Окно тестера стратегий
У эксперта появилось несколько новых внешних переменных - они объявлены во включаемом файле VisualTestingTools.mq4. Часть из них предназначена для управления закладкой Терминал, часть - для закладки История счета, но большинство - общие:
- TerminalRows - максимальное количество строк закладки Терминал, отображаемых на экране. Если установить TerminalRows = 0, терминал обновляться не будет;
- HistoryRows - максимальное количество строк закладки История счета, отображаемых на экране. Если установить HistoryRows = 0, история счета обновляться не будет;
- BigText - установите true, если хотите сделать размер шрифта больше;
- SignalPoints - расстояние в пунктах, начиная с которого будут "подсвечиваться" поля Стоп Лосс, Тейк Профит и Цена открытия для отложенных ордеров. Например, при SignalPoints = 10 поле Стоп Лосс изменит цвет, когда цена будет в 10-ти пунктах от уровня Стоп Лосс позиции;
- ShowCancelled - установите true, если хотите видеть в истории сделок отмененные ордера;
- ShowExpired - установите true, если хотите видеть в истории сделок отложенные ордера, у которых наступило время истечения;
- MainColor - цвет заголовочных строк Терминала и Истории счета и строки информации о торговом счёте Терминала (Баланс, Эквити, ...);
- BuyColor - цвет информации о Buy-позициях;
- BuyOPColor - цвет поля Цена открытия закладки Терминал, на который будет меняться основной цвет при приближении текущей цены к уровню открытия Buy Stop и Buy Limit - ордеров.
- BuySLColor - для закладки "Терминал": цвет, на который будет меняться основной цвет при приближении цены к уровню Стоп Лосс Buy-позиций. Для закладки "История счета": цвет, на который будет меняться основной цвет, если Buy-позиция закрылась по Стоп Лоссу;
- BuyTPColor - то же, что и BuySLColor, применительно к Тейк Профиту позиций;
- SellOPColor, SellSLColor и SellTPColor - то же самое, только для Sell-позиций.
Устанавливаем значения переменных на свое усмотрение и нажимаем "ОК". Проверяем, установлена ли галочка "Визуализация", и запускаем тестирование:
Визуализация тестирования: окна "Терминала" и "Истории счета" загружены
Эксперт открыл позицию, и она отобразилась в "Терминале"
Как только позиция закрылась, она "перекочевала" в Историю счета, а на её место пришла другая. Обратите внимание, что поле StopLoss подсвечено красным - позиция была закрыта по Стоп Лоссу.
Вторая позиция закрылась, на этот раз по Тейк Профиту. Обратите внимание, что последние позиции отображаются сверху в Истории счета. Таким образом, мы всегда будем видеть самые свежие события.
Так выглядит наш виртуальный Терминал спустя несколько минут.
4. Возможные проблемы
Проблема, описанная мной в статье Визуализация тестирования. Расширение функциональности., касается и индикатора vHistory: если в шаблоне, который использует тестер, индикатор будет не во втором подокне, для правильной работы функций, отвечающих за обновление Истории счета, необходимо указать номер подокна явно:
vHistory_win = WindowFind( "vHistory" ); if ( IsTesting() ) { vHistory_win = 2; }
5. Заключение
Ниже приведены скриншоты, иллюстрирующие закладку "История счета" в разных ситуациях.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования