Приветствую, коллеги!
Возвращаемся к теме тестирования и оптимизации форекс-советников.
Завершаем эксперимент
В прошлый раз мы прервались на проведении эксперимента с динамическим размером лота. Напомню, идея была в том, чтобы результаты последних сделок вносили большее значение в итоговую прибыль, чем сделки из далекого прошлого.
По результатам эксперимента победу одержала пара (83, 84). Вас не смущает, что периоды отличаются всего на единицу? Меня очень смущает. Такие скользящие средние будут пересекаться очень часто, особенно на флэтовом рынке, а следовательно количество сделок за тот же период времени существенно возрастет. Само по себе это не хорошо, не плохо. Дело в том, что эксперимент предполагал линейное увеличение лота с каждой новой сделкой, именно поэтому в итоге в лидеры вырвались те параметры, которые провоцируют максимальное количество сделок.
В итоге получился очень большой разброс по количеству сделок - в разы. Мой расчет на честное соревнование не оправдался, и результаты с точки зрения размера прибыли сравнивать нельзя. Можно было бы “покрутить” по прибыльности (соотношение доходы/убытки), но и тут есть зависимость от количества сделок. Так что факир был пьяный, фокус не удался :) Подумаю еще, может придумаю более адекватный способ адаптации, например можно попробовать зависимость лота от текущего баланса. Если у вас есть ценные мысли на этот счет, напишите в комменты. Но пока оставим эксперименты и займемся основной темой этой статьи.
Как при тестировании советников получить качество моделирования 99%
Про качество моделирования я уже рассказывал вот в этой статье. Общая идея - максимально точное воспроизведение истории изменения котировок валютной пары или другого торгового инструмента с целью максимально достоверного моделирования работы советника за некоторый исторический период. Идеальный случай - это использование тиковой истории котировок. Но в Metatrader нет штатной возможности полноценно использовать тиковую историю. Об этом я так же рассказывал в той же статье, где речь идет о качестве моделирования.
Сразу оговорюсь, что для нашего советника R1-SMA-v3 такое высокоточное моделирование не требуется, он изначально так устроен, что реагирует не на каждый отдельный тик, а только на момент открытия новой свечи. Тем не менее, я провел его тестирование на тиковых данных, просто чтобы показать вам как это делается. Вот график тестирования:
| Скрин 1 |
Ажно целых 99 и девять десятых процента получилось :) Такая вот машина времени.
Период тестирования был тот же - с начала 2006 года и до текущего момента (3 апреля 2015).
В силу того, что один прогон такого 9-летнего тикового тестирования занимает примерно 4,5 минуты, проводить полноценную оптимизацию, как было в прошлый раз, я не стал. Ограничился генетическим подбором экстремума, который подобрал оптимальные параметры (70, 118). График тестирования с этими параметрами и показан на Скрин 1.
Напомню, в прошлый раз оптимизация дала результаты (59, 99). Как трактовать такое расхождение? Можно было бы грешить на использование самого грубого метода моделирования для первой оптимизации, но, как я объяснил выше, это не наш случай. Получив оптимум (70, 118), я сам немало озадачился и потратил прилично времени на изучение причин расхождения. Оказалось, ларчик просто открывался. Выяснилось, что мои тиковые данные содержат не только рабочую пятидневку, но и субботы, то есть +20% обычного периода. Если (59, 99) увеличить на 20%, как раз, с поправкой на округление, и получится (70, 118).
Кстати, обязательно имейте этот нюанс в виду, работая с разными брокерами. Некоторые показывают данные за субботу, некоторые нет.
Итак, результаты оптимизации совпали. Значит верной дорогой идем, товарищи!
Tickstory - качаем тиковые котировки
Так как же получить 99.9%? Впервые этот способ я подглядел несколько лет назад на сайте TRADE like a PRO, за что его автору Павлу огромное спасибо.
Я же попробовал чутка упростить заморочки с ручным выкачиванием истории котировок с Dukascopy и конвертацией их в нужный формат посредством скрипта CSV2FXT. Оказалось, что всю эту рутину может взять на себя вот эта бесплатная программа - http://www.tickstory.com/.
Программа выкачивает котировки с 4 знаками после запятой, чего в принципе достаточно, для нашего советника - точно, но что нужно учитывать, если ваш робот чувствителен к пятой цифре, тогда есть смысл использовать исходный вариант от Павла.
Итак, скачиваете, устанавливаете, запускаете, получаете экран, подобный этому:
| Скрин 2 |
Выбираете нужную валютную пару и через контекстное меню (правой лапкой мыши) сразу выбираете Export To MT4:
| Скрин 3 |
Открывается окно экспорта:
| Скрин 4 |
1 - Указываете, за какой период времени хотите получить тиковую историю.
2 - Выбираете Build 545+, если Metatrader у вас свежий, а это скорее всего так.
3 - Выбираете для каких таймфреймов хотите сгенерировать данные. Поскольку наш робот “заточен” под Daily, я выбрал только его. Вы же ориентируйтесь по своим потребностям.
4 - Настраиваете часовой пояс, если надо. Я не трогал, мне не надо :)
5 - Указываете папку, где установлен Metatrader, для которого будут генерироваться данные. Желательно использовать под точное тестирование отдельную инсталляцию. Даже не надо настраивать в ней счет и подключать ее к серверу брокера, все необходимые входные данные будут сгенерированы тулзой Tickstory.
Настроили, жмете ОК, стартует закачка данных с сервера Dukascopy, вам остается только ждать окончания процесса.
Tick Data Suite - заставляем Metatrader использовать тиковую историю
Работа с TDS описана в статье у Павла, так что не буду дублировать. Скажу лишь, что запросить триальный ключ на 7 дней можно тут - http://eareview.net/tick-data-suite/trial. Сразу после сабмита вам на почту придет письмо с серийным номером и ссылкой для скачивания самого TDS.
Имейте в виду, триальная версия работает всего 7 дней и позволяет использовать тестовый период на одном компьютере всего один раз. Удаление и повторная установка не помогают, ибо защита.
Запуск “правильного” тестирования в Metatrader
Как я уже говорил, для тру-тестирования лучше установить “чистенький” Metatrader в новую папку. Далее нужно “подружить” его с TDS и запустить модифицированный Metatrader таким вот или подобным ярлычком:
| Скрин 5 |
Откроется ровно такой же Metatrader, как и обычно, только где-то в его недрах, скрытых от глаз простого пользователя, мудрый TDS сделает так, чтобы при запуске тестера стратегий в режиме “Все тики” (поле “Модель”) использовались те самые сгенеренные через Tickstory тиковые данные.
По результатам прогона убедитесь, что качество моделирования оценено в 99.9%:
| Скрин 6 |
Disclaimer
В заключение еще раз напомню вам, что котировки вашего брокера наверняка будут отличаться от данных Dukascopy, что создает определенные риски. Но все же описанный в этой статье способ тестирования позволяет проверить принципиальную жизнеспособность вашего робота и заложенной в него стратегии.
Успешной вам оптимизации! И не забывайте про генетический алгоритм, а то будете ждать результат месяцами :)
Пока!
С уважением,
Игорь Шепелев
Комментариев нет:
Отправить комментарий