тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQLabs: Тестирование стратегий в MetaTrader 4

Котировки EURUSD M1 (01.01.2009 - 11.05.2011)

Котировки USDCHF M1 (01.01.2009 - 11.05.2011)

Котировки GBPUSD M1 (01.01.2009 - 11.05.2011)

Котировки USDJPY M1 (01.01.2009 - 11.05.2011)

 

В рамках проекта MQLabs рассматривалось множество программ MQL4 (советников, индикаторов и даже скриптов), но ни в одной из тем не был подробно описан алгоритм работы с тестером стратегий MetaTrader 4. Отсутствие детального пошагового руководства пользователя привело к тому, что большинство участников форума MQLabs не могут повторить приводимые в статьях результаты тестирования, чтобы на личном опыте убедиться в их корректности. К заполнению этого пробела приступим сейчас же.

 

Шаг 1. Подготовка исторических данных

Для работы тестера стратегий необходимым условием является наличие исторических данных - котировок по используемому финансовому инструменту (валютные пары, акции, фьючерсы, опционы, сырье) за интересующий период времени. Терминал MetaTrader 4 автоматически закачивает историю только по тем финансовым инструментам, окна графиков которых открыты пользователем. Причем загружается не вся доступная история, а только та ее часть, которая умещается в окне. Еще одним нюансом является разделение истории по таймфреймам (периодам графиков). Если трейдер использует таймфреймы не ниже Н1, то история по малым таймфреймам (М1, М5, М15 и М30) может быть рваной или вообще отсутствовать. В таких случаях при запуске процесса тестирования советника пользователь не увидит результатов теста в связи с отсутствием исторических данных.

Данные, на основании которых тестер стратегий подготавливает необходимую для использования историю, хранятся в папке history\Admiral-Live (для реальных счетов) или в папке history\Admiral-Demo (для демо-счетов) терминала (см. рис. 1). Все файлы истории имеют расширение hst, а имя файла состоит из названия финансового инструмента (например, EURUSD) и числа, указывающего таймфрейм в минутах (1 - М1, 5 - М5,..., 43200 - MN1).

Рис. 1. Файлы истории для MetaTrader 4

Основной проблемой при тестировании стратегий является согласованность данных различных таймфреймов. Это означает, что минимум и максимум месячной свечи должны соответствовать минимумам и максимумам четырех недельных свечей, входящих в состав месячной свечи. Максимум и минимум каждой из недельных свечей, в свою очередь, должны соответствовать экстремумам пяти (шести) дневных свечей и т.д. по принципу матрешки. Кроме минимумов и максимумов проверяется соответствие цен открытия и закрытия свечей, а также сумма тиковых объемов. Наиболее простым способом достижения подобной согласованности таймфреймов является создание крупных таймфреймов на основании более мелких. Самый мелкий таймфрейм в Meta Trader 4 – минутный. Используя его, можно синтезировать любой таймфрейм, даже нестандартный. Все упирается лишь в наличие качественной минутной истории котировок. На вопрос о нахождении глубокой истории котировок по различным инструментам однозначно ответить нельзя. В рамках данного материала предлагается лишь история по четырем основным валютным парам (EURUSD, USDCHF, GBPUSD и USDJPY), ссылки на которые даны в начале статьи.

Загрузка данных минутного таймфрейма производится в таком порядке:

  1. Оставить в терминале открытыми графики только четырех перечисленных валютных пар с периодом М1.

  2. Закрыть терминал.

  3. Удалить все файлы hst для указанных валютных пар из папки Admiral-Live или Admiral-Demo, в зависимости от типа активного счета.

  4. Загрузить терминал.

  5. Открыть архив котировок (Сервис - Архив котировок или F2).

  6. Выбрать финансовый инструмент и таймфрейм М1 (см. рис. 2).

  7. Нажать кнопку «Импорт». В новом окне (активное окно на рис. 2) указать путь к файлу котировок и нажать «ОК».

Рис. 2. Архив котировок Meta Trader 4 и окно импорта

Итогом произведенных действий будет появление такой же надписи в верхней части окна «Архив котировок», как указано на рис. 2: «База данных 848066 записей». Для импортирования данных по трем остальным валютным парам достаточно повторить пункты 6 и 7, указывая соответствующее имя файла.

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

Еще одним нюансом, на который далеко не все обращают внимание, является правильная настройка максимально доступного количества баров в истории (Сервис - Настройки - Графики - Макс. баров в истории) и максимального количества баров в окне (Сервис - Настройки - Графики - Макс. баров в окне). Это количество необходимо рассчитывать по минутному графику. Например, если глубина минутной истории три года, то максимальное количество должно быть: (3 года) х (12 месяцев в году) х (22 рабочих дня в месяце) х (24 часа в сутках) х (60 минут в часе) = 1 140 480. Для запаса можно указывать большее значение. Также нужно учитывать, что внесенные изменения вступают в силу только после перезагрузки терминала. Убедиться в том, что все описанные действия произведены правильно, можно, выключив «Авто прокрутку» графика и нажав клавишу Home. В левом нижнем углу графика (на шкале времени) должна появиться дата 02.01.2009. Если видна более поздняя дата, то необходимо произвести все приготовления к тестированию заново.

После закачки полной минутной истории можно приступать к синтезу необходимых таймфреймов. Синтез производится при помощи скрипта period_converter, идущего в стандартной поставке Meta Trader 4. Скрипт необходимо перетащить из окна «Навигатор» (Вид - Навигатор или Ctrl+N) в окно финансового инструмента с таймфреймом М1 (см. рис. 3). Единственный входной параметр скрипта ExtPeriodMultiplier указывает коэффициент умножения текущего периода графика (в данном случае 1). Так, для получения таймфрейма М5 из М1 значение параметра ExtPeriodMultiplier необходимо установить равным 5. Соответственно, для синтеза таймфрейма Н4 из таймфрейма М1 значение параметра будет 240.

Рис. 3. Синтез необходимого таймфрейма из минутного таймфрейма

Несмотря на то, что при тестировании используется только два таймфрейма (указанный пользователем и минутный  таймфрейм), стоит синтезировать все стандартные таймфреймы от М5 до MN1. Для этого потребуется восьмикратный запуск скрипта period_converter на каждом финансовом инструменте с различными значениями параметра ExtPeriodMultiplier.

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

 

Шаг 2. Скоростное тестирование

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

Для отображения окна тестера стратегий необходимо выбрать пункт главного меню терминала Вид  – Тестер стратегий или нажать комбинацию клавиш Ctrl+R (см. рис. 4).

Рис. 4. Окно тестера стратегий МТ4

Перед запуском процесса тестирования необходимо выбрать советник (список доступных советников формируется автоматически), финансовый инструмент (символ), модель тестирования и таймфрейм (период). Также не нужно забывать об указании даты начала и окончания тестирования. Если дата не указана (снята галка «Использовать дату»), то тестирование будет произведено на всем имеющемся участке исторических данных.

В качестве примера для тестирования возьмем советник из статьи Производная функции цены. Часть 2Derivative_V2. Для этого необходимо скопировать файл Derivative_V2_Expert.mq4 в папку терминала experts и перезапустить терминал. После перезапуска в папке experts должен появиться файл Derivative_V2_Expert.ex4. Это исполняемая версия эксперта, без которой невозможно его тестирование.

Наилучшие результаты советник Derivative_V2 показал при тестировании с использованием финансового инструмента USDJPY. Поэтому выберем его в списке символов. Благоприятный для советника таймфрейм – часовый: установим период Н1. Далее требуется выбрать модель тестирования. Всего в тестере существует три модели тестирования: «по ценам открытия», «контрольные точки» и «все тики». Модель «по ценам открытия» применяется для грубой оценки стратегии. Применять ее можно только к тем экспертам, которые принимают решения о совершении сделки в начале формирования новой свечи и бездействуют до появления следующей свечи. Тестер стратегий в этом режиме на каждую свечу генерирует только один тик. Например, если в советнике реализован механизм трейлинг-стопа, то применение такой модели тестирования приведет к получению результатов с достаточно большой погрешностью, в некоторых случаях -– в корне неправильным результатам. Преимуществом режима «по ценам  открытия» является скорость тестирования, это самый быстрый способ проверки советника. Эксперт Derivative_V2 написан таким образом, что запуск его в режиме «по ценам открытия» не приведет к получению большой погрешности в результатах.

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

Если требуется максимально возможная точность тестирования, то применяется модель «все тики». Наряду с использованием данных всех имеющихся таймфреймов, тестер моделирует тики внутри свечи М1. Моделируемый ряд тиков не является точной копией той последовательности тиков, которая имела место быть на самом деле, но, как показывает практика, расхождение между генерируемым рядом и реальным рядом несущественное.

Нажатие кнопки «Старт» запускает процесс скоростного тестирования. Его длительность при указанных на рис. 4 настройках даже на слабом компьютере не должна выходить за пределы одной минуты.

Рассмотрим итоги тестирования, которые разделены на четыре вкладки окна тестера стратегий: результаты, график, отчет и журнал. Вкладка «Результаты» (см. рис. 5) содержит последовательное описание событий в виде таблицы из десяти столбцов. В первом столбце находится порядковый номер операции, во втором -– дата и время совершения операции. Например, первые две операции (установка отложенных ордеров buy limit и buy stop), судя по записи, произошли одновременно. На самом деле ордера не могли быть установлены одновременно. Просто детализация событий с точностью до секунды в тестере не применяется, а в течение одной минуты можно совершить больше, чем одну торговую операцию. Поэтому два события отнесены к одной минуте, но при этом сохранена их последовательность. Третий столбец содержит информацию о типе произведенной операции (установка ордера, открытие позиции, модификация, закрытие, удаление, достижение стоп-приказа или профита). Чтобы понять, к какому именно ордеру относится текущая операция, существует четвертый столбец «Ордер». Например, в третьей строке появляется позиция buy с номером ордера 2. В итоге становится понятно, что позиция возникла в результате срабатывания отложенного ордера buy limit, который также имел номер ордера 2. В четвертой строке указана операция delete. Операция относится к ордеру с номером 1. Это отложенный ордер buy stop, информация об установке которого содержится в первой строке таблицы. Назначение следующих четырех столбцов таблицы не требует особых пояснений: объем, цена, S/L, T/P.

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

Рис. 5. Вкладка «Результаты»

Десятый столбец таблицы указывает значение баланса депозита. По умолчанию величина начального депозита равна 10 000 долларов, но ее можно изменить. О том, как это сделать, будет сказано ниже во время рассмотрения кнопки "Свойства эксперта".

Вкладка "График" окна тестера стратегий содержит представление развития событий в виде графика. Синей линией отмечается значение баланса депозита, а зеленой - значение эквити (см. рис. 6). Если замечено значительное несоответствие синей и зеленой линий, то это прямое указание на то обстоятельство, что стратегия неоправданно долго держит убыточные или прибыльные сделки. На рис. 6 зеленая линия практически полностью совпадает с синей, но при внимательном рассмотрении можно найти их несоответствие.

 

Рис. 6. Графическое отображение изменения баланса депозита

Вкладка "Отчет" позволяет провести анализ результатов работы стратегии, опираясь на точные цифры (см. рис. 7). Первое, на что необходимо обратить внимание перед проведением анализа, это качество моделирования. Для всех таймфреймов, кроме М1, максимальным возможным качеством считается 90%. Значение 89.37% достаточно близко к максимуму, что позволяет считать его удовлетворительным показателем. Для таймфрейма М1 максимальный возможный показатель 25%. Следующее значение, на которое нужно обратить внимание, это ошибки рассогласования графиков. Обязательным условием является полное отсутствие ошибок рассогласования. В противном случае необходимо заново провести подготовку исторических данных, которая была описана в первом шаге данного материала.

Рис. 7. Итоги работы стратегии в цифрах

После того, как мы убедились в достаточности качества моделирования и в отсутствии ошибок рассогласования графиков, можно переходить к анализу результатов. Наиболее важными значениями здесь являются чистая прибыль, максимальная просадка и количество сделок (всего сделок). Количество сделок нам необходимо как показатель достаточной глубины статистической выборки. Да, именно так следует расценивать сделки - это количество проведенных опытов. Минимальным количеством опытов, которое можно анализировать, в статистике считается 100. Чем больше опытов, тем больше вероятность, что полученный результат не является случайным. В данном случае глубина выборки 553, что в 5.5 раз больше минимально допустимого значения. Значит, результаты можно подвергать анализу.

Сначала смотрим соотношение чистой прибыли и максимальной просадки. Чистая прибыль - это то, что было заработано сверх начального депозита. Максимальная просадка - это максимальное количество средств, на которое уменьшался депозит от своего локального максимума. К примеру, первая сделка принесла прибыль 500 долларов, вторая - убыток 100 долларов, третья - прибыль 50 долларов, а четвертая - убыток 200 долларов, пятая - прибыль 50 долларов (см. рис. 8). Несмотря на то, что в целом депозит вырос на 300 долларов, он был подвержен просадке (потерям, от которых в жизни трейдера никуда не деться) 250 долларов. Максимальная просадка показывает истинный размер риска, характерный для стратегии. Часто бывает так, что максимальная просадка превышает начальный депозит (депозит вырос, а только потом произошли потери). По размеру максимальной просадки можно вычислить, какой размер начального депозита требуется для торговли по данной конкретной стратегии.

Рис. 8. Максимальная просадка

Соотношение чистой прибыли и максимальной просадки позволяет оценить эффективность выбранной стратегии. Это соотношение называется фактором восстановления. Исходя из полученного в результате тестирования значения фактора восстановления (3950.15/465.96 = 8.47), стратегия является эффективной, т.к. на один доллар убытка приходится 8.47 долларов прибыли. Соответственно, если фактор восстановления меньше единицы, то эффективной стратегию назвать нельзя, т.к. на каждый доллар риска будет приходиться меньше одного доллара прибыли. В рамках проекта MQLabs принято считать, что эффективная стратегия должна иметь фактор восстановления не меньше трех.

Следующие два значения, полученные в результате тестирования, это абсолютная и относительная просадки. Абсолютная просадка показывает, насколько начальный депозит уменьшался, относительно своего начального значения. Располагая величиной максимальной просадки, абсолютная просадка становится ненужной, т.к. ее величина зависит от начальной даты тестирования, и лишь косвенно характеризует размер возможных убытков. Относительная просадка более информативна. Она используется в тех случаях, когда стратегия оперирует не фиксированным, как в данном случае, а переменным лотом. Значение относительной просадки показывает максимальную просадку в процентах от текущего депозита. В переводе на средства (значение в скобках) относительная просадка может быть меньше, чем максимальная просадка. Например, при депозите 10 000 произошла просадка в 500 долларов. Это 5% от депозита. Затем баланс депозита вырос до 20 000, и была получена просадка 750 долларов. В средствах это большее значение, чем предыдущее, но в процентах это только 3.75%. Поэтому первая просадка считается более ощутимой.

Следующие две характеристики - прибыльные и убыточные сделки. Анализировать их соотношение необходимо вместе с еще двумя характеристиками: средняя прибыльная и средняя убыточная сделки. Всего возможно четыре варианта соотношения всех этих значений. Самый плохой вариант, когда стратегия в принципе не может быть прибыльной, это такое положение дел: средняя прибыльная сделка меньше средней убыточной (в абсолютном значении, естественно), а количество прибыльных сделок меньше количества убыточных. Второй вариант: средняя прибыльная сделка больше, чем средняя убыточная, а количество прибыльных сделок ниже количества убыточных. В этом случае стратегия может быть прибыльной за счет качества прибыльных сделок (режь убытки, дай прибыли вырасти). Этот вариант мы как раз наблюдаем в отчете. Третий вариант: средняя прибыльная сделка меньше, чем средняя убыточная, а количество прибыльных сделок больше количества убыточных. Такое часто случается при использовании скальпинга. Прибыль достигается за счет высокой точности входов. Это опасная стратегия, т.к. требуется высокая степень концентрации, при потере которой невероятно сложно исправить ситуацию. Четвертый вариант, утопический: средняя прибыльная сделка больше, чем средняя убыточная, а количество прибыльных сделок выше, чем количество убыточных сделок. Такую стратегию по праву можно назвать священным Граалем: стратегия совершает точные входы с высоким качеством прибыльных сделок.

Также перед принятием решения об использовании стратегии в реальной торговле необходимо учесть еще две статистические характеристики: максимальное количество непрерывных проигрышей и выигрышей. Это максимальное число убыточных и прибыльных сделок подряд. В данном случае максимальное количество проигрышей подряд 10. Далеко не все трейдеры способны психологически выдержать получение десяти убытков кряду. Поэтому лишь по такому показателю уже можно отказываться от использования стратегии. То же самое можно сказать о максимальном количестве прибыльных сделок подряд. Подготовленность к тому факту, что может выпасть 5 успешных сделок подряд позволит избежать эйфории, появлению чрезмерной жадности и, как следствие, потери концентрации.

Последняя вкладка окна тестера стратегий - "Журнал". Сюда записываются все события, происходящие во время тестирования (любые торговые операции, ошибки), а также различные сообщения, которые в процессе работы выдает советник. При большом количестве сообщений не все они могут попасть на вкладку. Для этих целей существует другой вариант просмотра журнала: в контекстном меню (правая клавиша мыши, нажатая во внутреннем поле вкладки) выбрать пункт "Открыть". В результате появится окно проводника с папкой, в которой расположены файлы журналов. Итоги последнего тестирования хранятся в файле с именем, в котором указана текущая дата. Например, 27-ому апреля 2011 года будет соответствовать имя 20110427.log. После завершения анализа очередного тестирования стратегии рекомендуется очищать вкладку "Журнал" (контекстное меню - Стереть все журналы), чтобы не засорять компьютер лишней информацией. Файлы журналов могут достигать значительных объемов.

Вернемся к рассмотрению вкладки "Настройки" (см. рис. 4). Кроме кнопки "Старт", запускающей тестирование, здесь находится еще четыре кнопки. Нажатие кнопки "Изменить эксперта" приводит к запуску редактора исходного кода эксперта (Meta Editor), если на компьютере присутствует файл mq4 с названием эксперта. Кнопка "Открыть график", нажатая после окончания тестирования, позволяет визуально оценить совершение сделок, открывая график с выбранным финансовым инструментом и таймфреймом. Этот график будет содержать отображение сделок в виде стрелок синего и красного цвета, означающих момент открытия позиции или ордера, наклонных линий красного или синего цвета, означающих время существования сделки, и темно-золотых стрелок, обозначающих момент закрытия сделки. Кнопка "Свойства символа" позволяет ознакомиться с текущими торговыми условиями, предоставляемыми брокером по выбранному финансовому инструменту.

Отдельного рассмотрения требует кнопка "Свойства эксперта". Ее нажатие приводит к появлению нового окна (см. рис. 9), содержащего три вкладки: тестирование, входные параметры и оптимизация. Все, что касается оптимизации, будет рассмотрено во второй части материала. Сейчас же остановимся лишь на скоростном тестировании.

Рис. 9. Окно свойств эксперта

Как нетрудно догадаться, в выпадающем списке справа от надписи "Депозит" устанавливается размер начального депозита. Также можно выбрать валюту депозита. Список, находящийся справа от надписи "Позиции" позволяет указать режим открытия сделок. В режиме "Long & Short" советнику будет разрешено открывать как длинные, так и короткие позиции. В двух остальных режимах (Long only и Short only) разрешается открывать только длинные (Buy) или только короткие (Sell) позиции. Такие ограничения необходимо накладывать, когда нужно убедиться в симметричности выбранной стратегии. Устойчивая стратегия должна одинаково хорошо работать как на бычьих, так и на медвежьих рынках.

Вкладка "Входные параметры" (см. рис. 10) предоставляет пользователю доступ к списку входных параметров эксперта. Для осуществления процесса тестирования достаточно заполнить колонку "Значение". Выделение параметров галочкой, а также колонки "Старт", "шаг" и "Стоп", используются при оптимизации. Если список параметров советника достаточно большой, то набор введенных значений можно сохранить (кнопка "Сохранить") в файле. Таким образом, можно создать несколько наборов значений входных параметров для одного и того же советника с тем, чтобы в будущем подставлять нужный набор нажатием кнопки "Загрузить". Если необходимо использовать значения входных параметров, используемых в советнике по умолчанию, то достаточно нажать кнопку "Сброс".

Рис. 10. Входные параметры эксперта

Работу тестера стратегий в режимах оптимизации и визуализации рассмотрим во второй части материала.

 

Игорь Герасько

Май 2011

Специально для компании Admiral Markets

3.923075
 
 
X
Loading