Визуализация тестирования. История сделок.

Автор: lexy Среда, Сентябрь 10th, 2014 Нет комментариев

Рубрика: Разное

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, применительно к Тейк Профиту позиций;
SellOPColorSellSLColor и SellTPColor - то же самое, только для Sell-позиций.

Устанавливаем значения переменных на свое усмотрение и нажимаем «ОК». Проверяем, установлена ли галочка «Визуализация», и запускаем тестирование:

Визуализация тестирования: окна "Терминала" и "Истории счета" загружены
Визуализация тестирования: окна «Терминала» и «Истории счета» загружены

Эксперт открыл позицию, и она отобразилась в "Терминале"

Эксперт открыл позицию, и она отобразилась в «Терминале»

Как только позиция закрылась, она "перекочевала" в Историю счета, а на её место пришла другая.

Как только позиция закрылась, она «перекочевала» в Историю счета, а на её место пришла другая.
Обратите внимание, что поле StopLoss подсвечено красным — позиция была закрыта по Стоп Лоссу.

Вторая позиция закрылась, на этот раз по Тейк Профиту.

Вторая позиция закрылась, на этот раз по Тейк Профиту.
Обратите внимание, что последние позиции отображаются сверху в Истории счета.
Таким образом, мы всегда будем видеть самые свежие события.

Так выглядит наш виртуальный Терминал спустя несколько минут.

Так выглядит наш виртуальный Терминал спустя несколько минут.

4. Возможные проблемы

Проблема, описанная мной в статье Визуализация тестирования. Расширение функциональности., касается и индикатора vHistory: если в шаблоне, который использует тестер, индикатор будет не во втором подокне, для правильной работы функций, отвечающих за обновление Истории счета, необходимо указать номер подокна явно:

    vHistory_win = WindowFind( "vHistory" );
    if ( IsTesting() ) { vHistory_win = 2; }

 

5. Заключение

Ниже приведены скриншоты, иллюстрирующие закладку «История счета» в разных ситуациях.

Рис.8

 

Рис.9

Рис.10

Прикрепленные файлы:
 CrossMACD_DeLuxe_VisualHistory.mq4 (9.3 Kb)
 Testing_Visualization.zip (265.5 Kb)
 vHistory.mq4 (800 bytes)
 VisualTestingTools.mq4 (25.8 Kb)
Источник: mql4.com

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты