Визуализируй стратегию в тестере MetaTrader 5

8 июня 2012, 16:58
MetaQuotes Software Corp.
32
9 140

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


Все ли знают возможности тестера стратегий?

Как показывает практика, не все. Преимуществом торговой платформы MetaTrader 5 перед конкурентами является не только более удобный интерфейс, широкие возможности терминала и MQL5, мультивалютный тестер с возможностью облачных вычислений через MQL5 Cloud Network и многое другое. Преимуществом также является наличие всех необходимых любому трейдеру инструментов в одном месте.

Цель этой статьи - показать трейдерам еще один немаловажный кусочек всей совокупности возможностей MetaTrader 5, а именно - возможностей визуализации тестирования и оптимизации стратегий. Анализ поведения эксперта на исторических данных и подбор оптимальных параметров - это не только кропотливый анализ цифр, торговых операций, балансов, эквити и т.д. Устраивайтесь поудобнее в кресле, одевайте "три дэ" очки и внимание на экран.


Ты, Вань, гляди какие клоуны графики...

При публикации советников в Code Base или в Маркете авторы, как правило, прикладывают статистический отчет об их тестировании, а также график баланса и эквити. Однако под статистическими показателями на вкладке "Результаты" тестера стратегий присутствуют интересные графики:

Графики результатов тестирования

По этим графикам вы можете проанализировать, в какие месяцы, дни или часы ваш эксперт торгует лучше, когда он входит в рынок наиболее активно. Оценить работу советника по своевременности закрытия позиций с прибылью и пересиживанию убытков помогут графики распределения MFE и MAE (максимальная потенциальная прибыль/убыток):

Графики распределения прибыли и MFE/MAE

Прокрутив результаты тестирования еще ниже, вы обнаружите еще один график:

График распределения прибыли и времени удержания позиции

Диаграмма демонстрирует зависимость прибыли позиции от времени ее удержания. Она придется как раз кстати для грядущего чемпионата Automated Trading Championship 2012. Одно из правил участия в нем запрещает использование пипсовки. Протестируйте свой советник и убедитесь, что он соответствует правилам.


Исторический фильм или визуальное тестирование

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


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


Результаты оптимизации в 2D

Перед тем как представить вам трехмерную картинку, что в последнее время довольно популярно среди известных производителей телевизоров, взгляните на возможности визуализации тестера стратегий в режиме 2D. Непонятные, на первый взгляд, прямоугольники позволяют увидеть взаимное влияние двух оптимизируемых параметров на критерий оптимизации (в нашем случае - максимальное значение баланса). Чем темнее оттенок зеленого, тем выше баланс:

Результаты оптимизации в 2D

Видно, что зависимость носит несколько волновой характер, а максимальный результат достигается при средних значениях периода и смещения скользящей средней. Все это - результаты оптимизации советника Moving Average, входящего в стандартную поставку терминала. Даже здесь можно найти что-то интересное.


Теперь и в 3D

Еще большую наглядность дает трехмерное изображение. Ниже представлена та же зависимость двух оптимизируемых показателей и итогового результата. Переключение на эту красоту осуществляется рядом - в контекстном меню вкладки "График оптимизации".

Результаты оптимизации в 3D

Когда трехмерная оптимизация еще только появилась в тестере стратегий MetaTrader 5, на форуме трейдерам были представлены примеры визуализации математических расчетов:

Трехмерные графики полностью интерактивные - их можно приблизить, удалить, повернуть под удобным углом и т.д. Немаловажным является и то, что любые результаты тестирования и оптимизации можно экспортировать в виде картинки или XML/HTML отчета.


Визуализируем оптимизацию

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

Заливаем прикрепленные к статье файлы с расширением MQH в папку MQL5\Include. Берем любого эксперта и вставляем в конце вот такой блок:

//--- подключим код для работы с результатами оптимизации
#include <FrameGenerator.mqh>
//--- генератор фреймов
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- тут нужно вставить свою функцию для вычисления критерия оптимизации
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- вызываем на каждом окончании тестирования и передаем в качестве параметра критерий оптимизации
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- подготавливаем график для отображения графиков баланса
   fg.OnTesterInit(3); //параметр задает количество линий баланса на графике
  }
//+------------------------------------------------------------------+
//| TesterPass function                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- обрабатываем полученные результаты тестирования и выводим графику
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit function                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- завершение оптимизации
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Обработка событий на графике                                    |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   //--- запускает воспроизведение фреймов по окончании оптимизации при нажатии на шапке
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 - это пауза в ms между кадрами
  }
//+------------------------------------------------------------------+

Для примера был взят идущий в стандартной поставке советник Moving Averages.mq5. Вставляем код и сохраняем советник с именем Moving Averages With Frames.mq5. Компилируем и запускаем оптимизацию.


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


Чего бы еще трейдеру желать?

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


Как использовать файлы

Все файлы с расширением .mqh нужно положить в папку MQL5\Include, именно там их будет искать компилятор при компиляции советника Moving Average_With_Frames.mq5. Файлы экспертов можете положить прямо в папку MQL5\Experts или в любую из ее подпапок.

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

Прикрепленные файлы |
multimovings.mq5 (11.13 KB)
specialchart.mqh (7.61 KB)
framegenerator.mqh (14.88 KB)
simpletable.mqh (10.74 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (32)
---
--- | 25 сен 2012 в 19:22
Integer:
Не загружаются файлы приложения: framegenerator.mqh, colorprogressbar.mqh, ошибка 404.

методом подбора нашел пути

но не знаю последние ли это версии. по логике последние.

Dmitry Fedoseev
Dmitry Fedoseev | 25 сен 2012 в 20:15
sergeev:

методом подбора нашел пути

но не знаю последние ли это версии. по логике последние.

Еще здесь есть - https://www.mql5.com/ru/code/914
Marsel
Marsel | 27 сен 2012 в 09:39
Integer:
Не загружаются файлы приложения: framegenerator.mqh, colorprogressbar.mqh, ошибка 404.

Исправлено. Спасибо. 

Maxim Khrolenko
Maxim Khrolenko | 27 апр 2013 в 17:55
Хотелось бы чтоб после оптимизации можно бы было её записать как файл, чтоб потом в любой момент загрузить в МТ5 для просмотра напр. 2D, 3D графиков. Речь не о том, что данные можно записать в Excel и потом обрабатывать (так сейчас люди и делают), приятнее было бы в МТ5.
Anatoli Kazharski
Anatoli Kazharski | 27 апр 2013 в 18:00
paladin800:
Хотелось бы чтоб после оптимизации можно бы было её записать как файл, чтоб потом в любой момент загрузить в МТ5 для просмотра напр. 2D, 3D графиков. Речь не о том, что данные можно записать в Excel и потом обрабатывать (так сейчас люди и делают), приятнее было бы в МТ5.

Подобная заявка уже есть в Сервисдеске и вроде бы даже Ренат на форуме её когда-то одобрил (если ничего не путаю). Так что остаётся только ждать.

Можете тоже написать предложение в Сервисдеск, может быть таким образом его приоритет повысится. )) 

Новая система публикации статей на MQL5.community Новая система публикации статей на MQL5.community

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

OpenCL: от наивного кодирования - к более осмысленному OpenCL: от наивного кодирования - к более осмысленному

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

Применение метода собственных координат к анализу структуры неэкстенсивных статистических распределений Применение метода собственных координат к анализу структуры неэкстенсивных статистических распределений

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

Знакомство с методом эмпирической модовой декомпозиции Знакомство с методом эмпирической модовой декомпозиции

Статья призвана познакомить читателя с методом эмпирической модовой декомпозиции. Данный метод является частью преобразования Гильберта-Хуанга и предназначен для анализа нелинейных нестационарных процессов. К статье приложен вариант программной реализации этого метода и кратко рассматриваются его особенности. Приведены простейшие примеры использования рассматриваемого метода.