Wayback Machine
AUG Oct JAN
Previous capture 19 Next capture
2006 2007 2009
21 captures
15 Oct 06 - 15 Jun 12
sparklines
Close Help
MQL4 - automated forex trading   /  

Статьи

ODL Securities

Cтатьи  Тестер  Визуализация тестирования. История сделок. Авторизуйтесь или зарегистрируйтесь , чтобы добавить новую статью


Эта статья о возможностях
терминала MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно!

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


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. Заключение

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








Прикрепленные файлы:
CrossMACD_DeLuxe_VisualHistory.mq4 (9.3 Kb)
vHistory.mq4 (800 bytes)
VisualTestingTools.mq4 (25.8 Kb)
Создана: 13.09.2006  Автор: Andrey Khatimlianskyi
Предупреждение: все права на данные материалы принадлежат MetaQuotes Software Corp. Полная или частичная перепечатка запрещена.