Скачать MetaTrader 5

Визуализация тестирования. Расширение функциональности.

18 августа 2006, 10:49
Andrey Khatimlianskii
1
2 302

Введение

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

Об использовании визуализатора вы можете прочитать в статье Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри. В настоящей статье будет описано, как сделать тестер стратегий максимально похожим на терминал.

Постановка задачи

Чего не хватает при визуализации тестирования для полноценного анализа? Я думаю, в первую очередь - закладок "Торговля" и "История счета".

Сколько открыто позиций? Как скоро сработает отложенный ордер? С какой прибылью закрылась предыдущая позиция? Сколько используется маржи в данный момент и как далеко до MarginCall? При реальной торговле ответы на эти и многие другие вопросы мы ищем на закладках "Торговля" и "История счета" терминала. Но что делать при тестировании? Ответ очевиден - добавить эти закладки в визуализатор.

Технические ограничения

Оптимальным решением поставленной задачи было бы создание двух индикаторов в отдельном окне - для закладки "Торговля" и для "Истории счета". Но тут нас ожидает проблема - индикатор, работающий на графике визуализатора, не имеет доступа к тестируемому ("виртуальному") счету, все данные - в том числе, список открытых позиций - он получает из активного рабочего счета.

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

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

Наша "История счета" будет отображать только актуальную информацию. Например, 10 последних закрытых сделок.

Подготовка к использованию

Для начала, загрузите из CodeBase все необходимые файлы:

  • включаемый файл VisualTestingTools.mq4 - в директорию "\MetaTrader 4\experts\include\";
  • два индикатора - vTerminal.mq4 и vHistory.mq4 - в директорию "\MetaTrader 4\experts\indicators\";
  • и тестового эксперта VisualizationTestExpert.mq4 - в директорию "\MetaTrader 4\experts\".
После этого откройте и скомпилируйте (F5) оба индикатора и, при необходимости, эксперта.

Вторым шагом будет создание шаблона tester.tpl. Для этого настройте внешний вид графика (цветовая схема, линии сетки, масштаб), "прицепите" к нему индикаторы vTerminal.mq4 и vHistory.mq4, включите автопрокрутку и воспользуйтесь командой контекстного меню графика "Сохранить шаблон":


Вы можете загрузить из CodeBase и использовать шаблон, который создал я - просто сохраните его в директорию "\MetaTrader 4\templates\".

Интеграция в произвольного эксперта

Функции, реализующие отображение информации, находятся во включаемом файле VisualTestingTools.mq4. Прежде всего надо "подключить" его к эксперту - перед объявлением функций вставить строку:

#include <VisualTestingTools.mq4>

После этого необходимо добавить вызов функций, создающих графические объекты и обновляющих информацию. Две - в функцию init() эксперта, и две - в функцию start(). Если у эксперта нет функции init(), ее надо объявить:

int init()
{
    vTerminalInit();
    vHistoryInit();
    return(0);
}
 
int start()
{
    vTerminalRefresh();
    vHistoryRefresh();
 
    // код эксперта
 
    return(0);
}

Вы можете использовать эксперта VisualizationTestExpert.mq4, в котором все необходимые изменения уже сделаны.

Внешние переменные

После подключения файла VisualTestingTools.mq4 в эксперте появляется блок внешних переменных "< - - - VisualTestingTools - - - >":





Их назначение интуитивно понятно, но я все же расскажу о них подробнее:

  • 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, применительно к Тейк Профиту позиций;
  • Sell Color, SellOPColor, SellSLColor и SellTPColor - то же самое, только для Sell-позиций;
  • vTerminal_SubWindow и vHistory_SubWindow - номер подокна индикатора vTerminal и vHistory, соответственно (подробнее - в разделе "Возможные проблемы").



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

Стоит упомянуть об одной особенности, связанной с использованием индикаторов vTerminal и vHistory.
Функция, отвечающая за поиск окна индикатора (WindowFind), при тестировании не работает. Поэтому для корректной работы номера подокон индикаторов надо задавать явно. Именно для этого и добавлены переменные vTerminal_SubWindow и vHistory_SubWindow.

Если в шаблоне tester.tpl используются другие индикаторы, отображаемые в отдельном окне, надо задавать "номера" индикаторов vTerminal и vHistory в соответствии их реальному расположению: самый верхний - №1, ниже - №2, и так далее. Если используется шаблон только с двумя индикаторами, менять значения переменных vTerminal_SubWindow и vHistory_SubWindow необходимости нет.

Заключение

В статье были рассмотрены программные средства, помогающие сделать процесс тестирования советников в режиме визуализации максимально похожим на реальную торговлю. Теперь можно видеть список открытых и закрытых сделок, и строку состояния "виртуального" счета.


Был описан процесс создания и сохранения шаблона графика, продемонстрировано подключение программ к произвольному эксперту, и, наконец, рассмотрены возможные проблемы.

Andrey Khatimlianskii
Andrey Khatimlianskii | 18 авг 2006 в 14:22
Обсуждение - на форуме
Торговые стратегии Торговые стратегии

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

Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри

Что происходит после нажатия на кнопку "Старт"? В статье дан ответ на этот и многие другие вопросы.

Секреты клиентского терминала MetaTrader 4: Система оповещений Секреты клиентского терминала MetaTrader 4: Система оповещений

Как быть в курсе происходящего в терминале и на Вашем счете без постоянного созерцания монитора. Системные события; пользовательские события; звуковые и исполняемые файлы; электронные письма; настройка доступа к SMTP-серверу; публикации; настройка доступа к FTP-серверу.

Книга 'Энциклопедия торговых стратегий', Джеффри Оуэн Кац, Донна Л. МакКормик Книга 'Энциклопедия торговых стратегий', Джеффри Оуэн Кац, Донна Л. МакКормик

«Энциклопедия торговых стратегий» ориентирована на трейдеров и финансовых аналитиков, которые стремятся повысить эффективность и надежность работы на финансовых и товарных рынках. Джеффри Кац и Донна Маккормик, имея немалый опыт торговли на фьючерсных рынках, тщательно исследуют методы и стратегии, которые, по мнению широкой публики, должны показывать выдающиеся результаты. Строгий анализ, основанный на тестах с использованием исторических данных по большому спектру рынков, развенчивает многие мифы и является основой научного подхода к построению разнообразных торговых систем. В книге содержатся рекомендации по улучшенным методам контроля риска, показаны рискованные и потенциально убыточные методики, способные привести к разорению. Книгу можно использовать и как справочник по существующим на сегодняшний день торговым стратегиям и методам, и как руководство по построению оригинальных торговых систем.