Тестирование советников в тестере стратегий: ЧаВо

Тема в разделе "Тестирование", создана пользователем loopsider, 27 Апрель 2015.

  1. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.173
    Симпатии:
    3.815
    Баллы:
    435
    Пол:
    Мужской
    С чего начать?
    1. С закачки котировок. Зайти в «Архив котировок» в MetaTrader 4: меню «Сервис» / «Архив котировок» (клавиша F2). Выбрать интересующий таймфрейм необходимого инструмента (кликнуть два раза мышкой, например, на EURUSD / М1) и нажать «Загрузить».
    Для тестирования рекомендуется использовать Пожалуйста, войдите или зарегистрируйтесь для просмотра ссылок, посколько у них загружаются относительно приличные котировки (подробнее о качестве котировок читаем Пожалуйста, войдите или зарегистрируйтесь для просмотра ссылок).
    2. В тестере стратегий выбрать советник, валютную пару, период времени, тип моделирования (все тики/контрольные точки/цены открытия).
    Не забыть установить спред!
    Capture.PNG
    По умолчанию в тестере стоит "текущий спред", что может быть причиной фантастических результатов, особенно если вы тестируете на выходных.
    3. Загружаем в эксперт желаемые настройки - и вперед.

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

    Есть класс советников, в которых рабочий таймфрем прописан в настройках, у них результаты тестирования не зависят от выбранного таймфрейма в тестере. Такие советники, как правило можно тестировать практически без потери точности на (М1/контрольные точки). Получается намного быстрее чем по всем тикам, а результат практически тот же самый. Опять-таки, оптимизируем быстрым методом; найденный лучший вариант проверяем по всем тикам и убеждаемся, что все ОК.
     
    Последнее редактирование модератором: 1 Июль 2015
    Admin103, Hawkwind, Pythoha и 3 другим нравится это.
  2. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.173
    Симпатии:
    3.815
    Баллы:
    435
    Пол:
    Мужской
    Что значат параметры, выдаваемые при оптимизации настроек советника?
    Параметры: Прибыль, число сделок, Прибыльность, Матожидание, Просадка в $, Просадка в %.
    Что они значат, расписано Пожалуйста, войдите или зарегистрируйтесь для просмотра ссылок.

    На какие из них надо ориентрироваться при отборе результатов оптимизации?
    Во-первых, на число сделок.
    Чем меньше сделок, тем больше эффект подгонки, а значит тем меньше вероятность, что оптимизированные настройки имеют какой-то смысл.
    Желательно чтобы число сделок было больше 1000. Если сделок меньше, надо увеличивать промежуток времени.

    Во-вторых, на соотношение прибыли к просадке.
    Популярным параметром для отбора результатов оптимизации является коэффициент восстановления, который есть просто отношение: прибыль/(максимальная просадка). Его несложно вычислить, поделив столбец Прибыль на столбец Просадка в $. Но вот отсортировать результаты оптимизации по этому параметру тестер так просто не позволяет.
    К счастью, это несложно поправить, если у вас есть доступ к исходнику советника. Достаточно в конец кода любого советника приписать следующие сточки
    Код:
    double GetRecoveryFactor( void ) {
      double Res = 0;
      double MaxDD = TesterStatistics(STAT_EQUITY_DD);
      if (MaxDD != 0)
          Res = TesterStatistics(STAT_PROFIT) / MaxDD;
      return(Res);
    }
    double OnTester( void ) {
      return(GetRecoveryFactor());
    }
    и перекомпилировать советник. После этого при оптимизации в тестере появится новая колонка OnTester. Она будет содержать коэффициент восстановления. Щелкнув по шапке этой колонки, можно отсортировать результаты оптимизации по этому параметру.
    aaa.PNG
     
    Admin103, Klaus Lebentz, Dmitri и ещё 1-му нравится это.
  3. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.173
    Симпатии:
    3.815
    Баллы:
    435
    Пол:
    Мужской
    Откуда берутся рассогласования котировок и что с ними делать?

    Многие встречались с ситуацией когда в отчете о тестировании советника тестер жалуется на ошибки рассогласования котировок и пишет качество моделирования n/a:
    aa1.PNG
    Если взглянуть в логи, то там будет масса ошибок такого вида:
    aa2.PNG
    Откуда они берутся? Как правило, из-за рассогласования котировок, полученых от брокера напрямую и загруженных через архив котировок (через F2).
    Что делать? Проще всего от проблемы избавиться следующим образом.
    1. Стираем историю котировок по данной паре (Меню Файл -> Открыть каталог данных -> history -> имя торгового сервера -> стираем все файлы EURUSD*.hst).
    2. Перегружаем терминал.
    3. Загружаем заново котировки EURUSD через архив котировок (F2 -> EURUSD -> M1 -> Загрузить).

    Теперь прогоняем советник в тестере - и видим, что ошибки исчезли, а качество моделирования 90%:
    aa3.PNG
     
    Admin103, Max5813, Pythoha и ещё 1-му нравится это.
  4. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.173
    Симпатии:
    3.815
    Баллы:
    435
    Пол:
    Мужской
    Как правильно использовать генетический алгоритм при оптимизации?

    Большинство из тех, кто использует тестер стратегий МТ4, знает, что при оптимизации параметров советника есть возможность не перебирать все возможные комбинации параметров, а использовать более интеллектуальный метод поиска, установив галочку в поле Генетический алгоритм в разделе Оптимизация.
    fig1.PNG
    Однако далеко не все умеют использовать генетический алгоритм правильно.

    Что такое вообще генетический алгоритм в этом контексте? Если не вдаваться в детали, генетический алгоритм анализирует уже полученные при оптимизации результаты и ищет «тщательнее» там, где результаты оказались наилучшими. Таким образом, алгоритм перебирает не все возможные варианты, а только те, которые выглядят – с его точки зрения – «перспективными». Таким образом удается сократить количество перебираемых вариантов на порядки – но и возникает опасность того, что самый оптимальный вариант не будет найден.

    Стоит ли вообще использовать генетический алгоритм? Есть люди, которые считают что ни в коем случае. Более разумная точка зрения состоит в том, что если вы можете себе позволить его не использовать, то не используйте. На практике оказывается, что если вы пытаетесь прооптимизировать более двух-трех параметров одновременно, то вам придется использовать генетический алгоритм – или тестирование никогда не закончится.

    Как можно увеличить вероятность того, что генетический алгоритм найдет оптимальный для вас результат?

    В первую очередь, установить правильный критерий оптимизации.
    fig2.PNG
    Какой критерий оптимизации «правильный»? Тот, который по возможности точно совпадает с вашим критерием отбора оптимальных настроек советника. Не забываем: установленный в тестере критерий используется алгоритмом для отбора лучших результатов и построения «перспективных» комбинаций параметров для последующего тестирования. Поэтому для разных критериев оптимизации генетический алгоритм получит разные варианты. Например, если нас интересуют настройки, которые дают максимум прибыли при умеренной просадке, а в качестве критерия оптимизации мы используем Прибыль (Balance), то генетический алгоритм скорее всего нам отыщет варианты с большой прибылью и большой просадкой. И что важно, большинство тестовых прогонов будет сделано среди таких вариантов.

    Обратите внимание: если вы НЕ используете генетический алгоритм, то критерий оптимизации не играет никакой роли – все равно будут перебраны все возможные варианты и вы потом сможете их отсортировать как вам будет угодно.

    Для многих целей в качестве критерия оптимизации удобно использовать фактор восстановления (== прибыль/максимальная просадка). Чтобы добавить этот нестандартный критерий оптимизации придется внести изменения в ваш советник (Пожалуйста, войдите или зарегистрируйтесь для просмотра ссылок) и выбрать Custom в критериях оптимизации (как на рисунке выше).

    Далее. Для уточнения работы оптимизатора рекомендуется воспользоваться дополнительными параметрами вкладки Оптимизация.
    fig3.PNG
    Какие параметры здесь стоит установить? Разумным является выставить максимальную просадку, при превышении которой результат тестирования вас не интересует. Например, выставим максимальную просадку в 30%, следующим образом:
    fig4.PNG
    Установив этот критерий, мы получаем двойной выигрыш. Во-первых, генетический алгоритм не будет рассматривать результаты с большой просадкой (даже если они будут соответствовать, в нашем случае, большому коэффициенту восстановления). Во-вторых, если максимальная просадка зафиксирована, прогон тестера обрывается досрочно (об этом пишется запись в логах) и тем самым сокращается время оптимизации.
     
    Admin103, Klaus Lebentz, Pythoha и 2 другим нравится это.
  5. webshurick

    webshurick Интересующийся - ARGOLab.net -

    Регистрация:
    27 Май 2014
    Сообщения:
    16
    Симпатии:
    11
    Баллы:
    25
    Пол:
    Мужской
    Привет всем. Подскажите пожалуйста, как добавить в тестер стратегий золото? у меня терминал от RoboForex и в тестере только валюты. или это в принципе не возможно?
    Заранее спасибо.
     
  6. Pythoha

    Pythoha Бывалый Аргонавт

    Регистрация:
    20 Май 2014
    Сообщения:
    567
    Симпатии:
    1.014
    Баллы:
    160
    Пол:
    Мужской
    Я на Forex с:
    2014
    Открываешь обзор рынка, правой кнопкой мыши вызываешь контекстное меню кликая прямо на окне с валютными парами, выбираешь: Показать все символы и у тебя в тестере стратегий появляется золото :)
     
    Admin103, Dmitri, loopsider и ещё 1-му нравится это.
  7. webshurick

    webshurick Интересующийся - ARGOLab.net -

    Регистрация:
    27 Май 2014
    Сообщения:
    16
    Симпатии:
    11
    Баллы:
    25
    Пол:
    Мужской
  8. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.173
    Симпатии:
    3.815
    Баллы:
    435
    Пол:
    Мужской
    ... если оно в принципе есть у брокера на этом счете.
    После этого нажать F2 и закачать котировки.
     
    Admin103, webshurick и Pythoha нравится это.

.

Поделиться этой страницей

translate