Всем привет! Механические торговые системы так же стары, как и рынки. С развитием в 20 веке компьютерных технологий и сети интернет стало возможным торговать не выходя из дома, а в начале 21 века, с появлением платформы MetaTrader, еще и в автоматическом режиме. Ресурсы современного настольного компьютера позволяют воплощать в жизнь любые, даже самые сложные алгоритмы, а встроенный в терминал MetaTrader редактор MetaEditor дает возможность написать робота даже человеку, мало знакомому с программированием. В результате околофорексовый рынок заполнен различными предложениями купить чудо-советники и некоторые из них действительно достойны внимания. Но как же понять, стоит ли применять на реальных счетах тот или иной форекс советник? Сегодня я расскажу, как тестировать торгового робота на исторических данных при помощи программы MetaTrader 4.
Подготовка к тестированию
Мы не будем сегодня разбирать, как установить советник в терминал – для этого есть соответствующая статья в блоге. Будем считать, что советник мы уже установили. Теперь необходимо подумать о котировках, которые вы будете использовать. Большинство брокеров не имеют собственной исторической базы, исключение составляют Alpari и Ducascopy, остальные же используют котировки, предоставляемые компанией MetaQuotes. Сказать, что эти котировки вообще годятся для тестов я не берусь – они очень низкого качества (много пробелов, ошибок и неточностей). Как скачивать котировки от компании Ducascopy – тема отдельной статьи, к тому же это не так просто сделать новичку. Поэтому для тестов советников мы скачаем именно терминал от компании Alpari. Внимание! Чтобы получить доступ к исторической базе котировок Альпари, в терминале вы должны быть подключены именно к реальному счету! С недавних пор этот брокер не предоставляет свою базу котировок для владельцев демо-счетов.
Именно из-за различий в котировках тесты одного и того же советника по одной и той же паре с теми же настройками и при прочих равных скорее всего будут отличаться, иногда очень сильно.
Для начала нам нужно кое-что настроить, для чего идем во вкладку Сервис -> Настройки или жмем Ctrl+O
Появится окно с настройками терминала:
Выбираем вкладку «Графики» и в графах «Макс. баров истории» и «Макс. баров в окне» и заполняем как у меня на рисунке вверху (по умолчанию там стоит 65000 баров).
Для того, чтобы котировки по нужной нам паре стали доступны в терминале для проведения по ним теста, открываем вкладку Сервис -> Архив котировок или жмем F2.
Открывается следующее окно:
Выбираем нужную нам пару и период М1 и нажимает кнопку «загрузить». Через некоторое время котировки загрузятся, выключаем терминал и включаем его снова. Заходим обратно в архив, кликаем левой кнопкой мыши несколько раз по периоду М1 нужной нам пары до тех пор, пока изображенная перед периодом серая батарейка не загорится желто-зеленым цветом. Остается прощелкать мышкой остальные периоды, чтобы котировки просчитались и для них. Если вы хотите протестировать советник на нескольких валютных парах, закачайте котировки требуемых валютных пар. Закройте терминал и откройте его снова. Затем снова войдите в архив котировок и пройдитесь по всем периодам нужной вам пары, несколько раз нажимая левой кнопкой мышки по каждому из них. Все эти шаманские действия нужны в последних версиях терминала, поскольку часто котировки загружаются некорректно. На этом подготовительный этап завершен.
Тестер терминала. Основной функционал
Итак, чтобы приступить к тестированию советника открываем тестер стратегий или нажимаем Ctrl+R.
Снизу в терминале появится вот такая панель:
Давайте остановимся на каждой функции поподробнее.
Первое, что вы увидите слева вверху панели – переключатель советник-индикатор:
В новых билдах терминала появилась возможность посмотреть на работу индикатора в визуальном режиме (о котором речь пойдет ниже). Надо сказать, что такая возможность была и раньше, но неофициально. Теперь же под тестирование индикаторов отведена отдельная кнопочка.
Итак, выбираем советник.
Под цифрой 1 у нас находится выпадающий список с доступными для тестирования советниками. Тут вы найдете только те советники, которые загружены в ваш терминал. Цифра 2 — выпадающий список валютных пар, выбираем нужную. Не забудьте закачать для нее котировки в архив котировок. Если вы вдруг не смогли найти нужную вам пару в списке, хотя уверены, что она у брокера доступна для торговли, включите обзор рынка или нажмите Ctrl+M:
Далее правой кнопкой мыши кликните прямо в окне навигатора и нажмите «Показать все символы»:
На пункте 3 остановимся немного подробнее. Тут мы можем выбрать необходимую нам модель тестирования. Для качественного тестирования торговой стратегии важно выбрать адекватный способ моделирования развития ценовых баров. Всего доступны три варианта:
— По ценам открытия (быстрый метод на сформировавшихся барах, только для советников с явным контролем открытия баров)
Использует грубую оценку стратегии. При каждой свече генерируется только один тик. Достоинство — самый быстрый способ проверки. В этом режиме сначала моделируется открытие бара (Open = High = Low = Close, Volume=1), что дает возможность эксперту точно идентифицировать окончание формирования предыдущего ценового бара. Именно на этом зарождающемся баре запускается тестирование эксперта. На следующем шаге выдается уже полностью сформированный текущий бар.
— Контрольные точки (очень грубый метод на основе ближайшего меньшего таймфрейма, результаты нельзя принимать во внимание)
Метод моделирования контрольных точек предназначен для грубой оценки экспертов, торгующих внутри бара. Для этого метода необходимо наличие исторических данных ближайшего меньшего таймфрейма. В некоторых случаях имеющиеся данные меньшего таймфрейма не полностью покрывают временной диапазон тестируемого таймфрейма. При отсутствии данных меньшего таймфрейма развитие бара генерируется на основе предопределенных волновых шаблонов.
Как только появляются исторические данные меньшего таймфрейма, интерполяция применяется уже к этим данным. Однако точно существующие цены OHLC меньшего таймфрейма выступают в качестве контрольных точек. В большинстве случаев результаты тестирования экспертов по методу контрольных точек могут приниматься во внимание только как оценочные, а не как окончательные. Такие результаты имеют промежуточный оценочный характер.
— Все тики (наиболее точный метод на основе всех доступных меньших таймфреймов)
Этот режим позволяет наиболее точно смоделировать движение цены внутри бара. В отличие от «контрольных точек» потиковый метод использует для генерации данные не только ближайшего меньшего таймфрейма, но и всех доступных меньших таймфреймов. При этом, если на какой-то временной диапазон одновременно существуют данные более одного таймфрейма, то для генерации используются данные самого меньшего таймфрейма. Так же, как и в предыдущем методе, генерируются контрольные точки на основе данных OHLC наименьшего доступного таймфрейма. Для генерации движения цены между контрольными точками также используется интерполяция на основе предопределенных шаблонов, поэтому крайне желательно наличие минутных данных, покрывающих весь диапазон тестирования. Возможна ситуация, когда генерируется несколько одинаковых тиков подряд. В этом случае дублирующиеся котировки фильтруются, и фиксируется объем последней из таких котировок.
При тестировании по всем тикам объём сгенерированных тиков может быть довольно большим, поэтому терминал может потреблять довольно много ресурсов.
Для тестирования советника всегда выбираем метод все тики. Да, это самый медленный, но и самый надежный метод. Многие применяют в своих советниках контроль закрытия бара, то есть специально выжидают момент открытия новой свечи и открытие ордеров совершается только в этот момент. Но часто советники используют стопы, тейки, тралы, которые могут сработать в любой момент внутри свечи. Применять метод по ценам открытия можно только для советников, которые не используют трейлинг стоп, стоплосс и тейк профит, а открывают и закрывают позиции в момент открытия новой свечи, а таких советников крайне мало.
Пункт 4 – использовать дату. Ставим галочку и выбираем желаемые даты начала и окончания тестирования. Если галочка не проставлена, тестирование проводится по всей истории котировок, загруженных в терминал. Тестер не сможет провести тестирование на периоде, по которому нет котировок в архиве котировок, то есть вы не сможете сделать тест с 1300 года, если у вас нет котировок за этот период.
Пункт 5 – визуализация, о которой мы поговорим позже.
Настройки на панели тестера справа:
Период – выбор периода для тестирования советника. Доступны периоды вплоть до D1. W1 и MN1 недоступны для тестирования. Кроме того, если у вас не загружена история котировок нужного периода, тест вы выполнить не сможете.
Спред – можно задать любое значение или же использовать текущий спред по паре. Сделано это для удобства – например, по ночам и на выходных текущий спред обычно завышен и если вы тестируете советник в это время есть смысл задать спред вручную. Если у вас выбран текущий спред, результаты тестов могут сильно отличаться в зависимости от времени суток и дня недели, особенно при тестировании по всем тикам.
Кнопка «Изменить эксперта» доступна только если у вас есть исходный код советника (файл с расширением mq4). Она открывает редактор кода советника, где вы сможете внести в советник необходимые изменения.
Кнопка «Открыть график» открывает график с нанесенными на него индикаторами и сделками, совершенными советником во время теста (нажать можно после того, как тест выполнен).
Кнопка «Свойства символа»
Поменять здесь ничего нельзя, это просто справочная информация по используемой валютной паре.
Кнопка «Свойства эксперта»
Нажав на кнопку, вы увидите окошко, изображенное сверху. Доступны три вкладки: «Тестирование», «Входные параметры» и «Оптимизация».
Вкладка «Тестирование».
Тут вы можете ввести используемый для теста депозит и валюту депозита. Также при желании можно выбрать направление сделок, например разрешить эксперту торговать только в покупки или только в продажи. Настройки оптимизации в рамках данной статьи рассматриваться не будут. Также как и вкладки «Оптимизация».
Вкладка «Входные параметры»
Тут находятся все управляющие переменные самого эксперта, его настройки. Кстати, окно масштабируемо – если вы потянете мышкой за нижний правый угол, можно увеличить или уменьшить его в размерах. Вместе с экспертами как правило обычно поставляются файлы с настройками, имеющие расширение *.set. Причем чаще всего для каждой пары свой файл с настройкой. Чтобы загрузить правильные настройки для нужной пары нажимаем кнопку «Загрузить» и выбираем нужный файл. Часто после установки эксперта в терминал они оказываются не в нужной папке. После нажатия на кнопку «Загрузить» мы оказываемся в папке тестера (у меня это C:UsersSilentspecAppDataRoamingMetaQuotesTerminalFE03BE71CD8F9E8F4C70E0FDAFC997E5 ester). Если нужных файлов там не оказалось, идем в папку FE03BE71CD8F9E8F4C70E0FDAFC997E5MQL4Presets, скорее всего файлы там. Итак, выбираем и загружаем нужный настроечный файл. После загрузки нам нужно найти параметры манименеджмента советника и выставить фиксированный лот 0.1 – в этом случае каждый доллар прибыли или убытка будет равен 1 старому пункту. Для чего это – я расскажу ниже.
Тестирование советника. Результаты теста
Теперь у нас все готово для теста. Проверьте еще раз настройки и нажимайте кнопку «Старт». Спустя некоторое время тест будет выполнен, о чем нас известит звуковой сигнал, похожий на издаваемый резиновой детской игрушкой с пищалкой.
Настало время взглянуть в нижний левый угол тестера:
Тут мы можем заметить вкладки «Настройки», «Результаты», «График», «Отчет» и «Журнал».
Во вкладке «Результаты» доступен список всех сделок, совершенных советником за время теста.
На вкладке «График» можно полюбоваться кривой доходности советника.
Если советник не совершил ни одной сделки, стоит заглянуть во вкладку «Журнал». В ней вы найдете описание всего, что случилось во время теста. Вполне вероятно, что в советнике какая-нибудь ошибка. Расшифровку номера ошибки можно посмотреть в разделе Коды ошибок.
Во вкладке «Отчет» доступна вся статистика работы эксперта на выбранном отрезке времени:
Баров в истории — количество баров в истории, показывает глубину истории, на основе которой производилось моделирование.
Смоделировано тиков — количество смоделированных тиков, показывает размер смоделированной последовательности. Каждая запись последовательности представляет собой состояние бара (OHLCV) на тот или иной момент времени. В зависимости от таймфрейма, метода моделирования и от наличия исторических данных меньших таймфреймов в пределах бара может быть смоделировано разное количество состояний бара.
Качество моделирования — качество моделирования.
Ошибки рассогласования графиков – ошибки, возникающие при моделировании тиков по различным таймфреймам. Если есть хоть одна такая ошибка, удаляем всю историю из терминала и закачиваем заново. Удалить можно так: Файл -> Открыть каталог данных -> Откроется окно с папкой терминала — > папка history -> Выбираем нужный нам тип счета (тот, что вы используете в данный момент) -> Закрываем терминал и удаляем все файлы с расширением *.hst. Далее закачиваем заново котировки в архиве котировок.
Панелька с сигнализатором качества котировок (у меня она зеленая, поэтому для примера нашел в интернете):
Серым цветом – отсутствующие котировки, красным – котировки только текущего периода, зеленым – котировки доступны и предыдущих периодов, при этом чем ярче зеленый цвет, тем более младшие периоды доступны. При доступности периода М1 индикатор будет как у меня – ярко зеленый.
Начальный депозит – депозит, с которым проводилось тестирование.
Спред – спред, с которым проводилось тестирование.
Общая прибыль – сколько всего было заработано во время работы советника
Общий убыток – сколько всего было потеряно.
Чистая прибыль – прибыль, которая была заработана экспертом за заданный период. Если тест сделан лотом 0.1, то эта прибыль в валюте депозита равна количеству заработанных старых пунктов. То же справедливо и для всех остальных параметров, указанных в валюте. Чистая прибыль = Общая прибыль — Общий убыток.
Прибыльность — прибыльность, показывает отношение между общей прибылью и общим убытком. Рассчитывается по формуле Прибыльность = Общая прибыль/ Общий убыток.
Матожидание выигрыша — математическое ожидание выигрыша.
Абсолютная просадка — это разница между начальным депозитом и наименьшим значением баланса в процессе тестирования.
Максимальная просадка — это максимальная разница между одним из локальных верхних экстремумов графика изменения баланса и последующих нижних экстремумов.
На следующем рисунке цифрами показаны основные стадии изменения величины максимальной просадки в процессе тестирования. Итоговое значение максимальной просадки выделено утолщенными стрелками.
Относительная просадка показывает отношение максимальной просадки к значению соответствующего локального верхнего экстремума.
Думаю, остальные данные теста, такие как средняя прибыльная сделка, максимальное количество непрерывных проигрышей и так далее, вполне понятны и объяснения тут не нужны.
Если кликнуть по отчету правой кнопкой мышки, можно сохранить этот отчет в виде html файла:
Сверху отчета располагаются основные данные об условиях проведения теста – период, валютная пара, модель тестирования, параметры советника и прочее. Ниже – статистические данные теста и график кривой доходности. Далее в виде таблицы следует список всех совершенных сделок.
Режим визуализации
Этот режим обеспечивает возможность буквально увидеть в ускоренном режиме как в прошлом отработал бы советник при тех изменениях котировок, которые имели место. Например, если сигналы на вход и выход советника основаны на сигналах какого-нибудь индикатора, то на график визуализации можно установить нужный индикатор и тогда появление сделок и закрытие сделок будет еще нагляднее.
Другими словами, визуализация помогает понять и прочувствовать логику алгоритма советника, так как все будет происходить у вас перед глазами.
Кроме того, визуализацию также применяют, когда хотят увидеть природу происхождения какого-нибудь конкретного участка в прохождении советника (момент начала слива или же, наоборот, самого профитного периода).
Прогнав робота в режиме визуализации вы можете понять принцип его работы и будете знать, чего можно ожидать от него в будущем. Это очень полезный инструмент, особенно для разработчиков советников.
Заключение
В этой статье был рассмотрен основной функционал тестера стратегий терминала MetaTrader 4 и особенности закачки котировок. Также мы познакомились с результатами теста советника и визуальным режимом тестирования. Хочу обратить внимание, что это лишь основы работы с советниками. Способ тестирования советника, рассмотренный в статье, подойдет для советников на периодах от Н1 и выше. Для скальперов, работающих на более мелких периодах, такой способ тестирования подходит условно, он носит чисто информативный характер. Если вы собрались зарабатывать при помощи советников, необходимо также освоить оптимизацию советников. Также нелишним будет получить более глубокие знания о тестировании и оптимизации советников с более высоким качеством моделирования, недоступным, к сожалению, в стандартном исполнении терминала.
С уважением, Дмитрий аkа Silentspec
TradeLikeaPro.ru