English 中文 Español Deutsch 日本語 Português
Визуализация тестирования. История сделок.

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

MetaTrader 4Тестер | 10 июня 2007, 15:23
3 415 0
Andrey Khatimlianskii
Andrey Khatimlianskii

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

Рис.9

Рис.10

Прикрепленные файлы |
vHistory.mq4 (0.78 KB)
Отправка SMS из торгового советника через Skype Отправка SMS из торгового советника через Skype
В статье рассматривается способ отправки внутренних сообщений и SMS из торгового советника на мобильные телефоны через Skype .
Язык MQL 4 для "чайников". Первое знакомство Язык MQL 4 для "чайников". Первое знакомство
Эта серия статей рассчитана на трейдеров, которые ничего не знают о программировании, но хотят изучить язык MQL 4 максимально быстро с минимальными усилиями и затратами времени. Если вы боитесь таких словосочетаний, как "объектная ориентация" или "трёхмерный массив", эта статья - то что вам нужно. Уроки рассчитаны на максимально быстрый результат. Кроме того, материал будет подаваться в доступной форме. Мы не будем сильно углубляться в теорию, зато практическую пользу вы получите уже на первом уроке.
Прогнозирование цен с помощью нейронных сетей Прогнозирование цен с помощью нейронных сетей
Многие трейдеры говорят о нейронных сетях, но что это такое и на что они в реальности способны - мало кто представляет. Данная статья немного приоткрывает дверь в мир искуственного интеллекта. В ней рассказывается о том, как нужно правильно подготавливать данные для сети, а также приводится пример прогнозирования средствами программы Matlab.
Автоматизированный выбор ДЦ для эффективной работы экспертов Автоматизированный выбор ДЦ для эффективной работы экспертов
Не секрет, что для эффективной работы экспертов нужно найти подходящий ДЦ. В данной статье представлен системный подход для этого поиска. Показан процесс создания программы с dll для работы с разными терминалами.