Александр
Александр личный блог
28 ноября 2015, 13:43

О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.

 

            О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при оптимизации ТС.

                В процессе составления ТС, особенно при использовании индикаторов с настраиваемыми параметрами неизменно встает вопрос: «А какие именно значения параметров использовать?». Часто при составлении ТС параметры которые были подобраны на «глазок» оказываются неустойчивыми либо вообще плохими на длительном куске истории, и сама собой возникает идея поиска наилучших параметров путем перебора всех возможных или каким либо методом. Но тут нас подстерегает один айсберг из за которого утонул не один Титаник.

                Далее я буду писать все на основе 1 из своих АТС на языке mql4 и использовать тестер ТС входящий в пакет MQL4, (используемый инструмент EURUSD, используемый ТF-М15, оптимизируемый параметр-всегда Баланс, перид с 2012.01.01 по 2015.01.01) но данная проблема касается всех тестеров а так же АТС или ручных систем использующих какие либо параметры.
                В моей ТС использовалось 3 простых скользящих средних по цене закрытия, условно разделенных на супер быстрый, быстрый, и медленный. Остальные параметры не являлись важными или вовсе в коде были заблокированы для составления данной статьи (ТП, и максимальный стоп).   
О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС. 
При создании ТС на глазок я выбрал параметры 10, 30, 150 для FFMA, FMA и SMA соответственно.

 

Результаты тестирования при таких параметрах оказались печальными:

О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.

О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.

Я решил попытаться оптимизировать данную ТС и найти лучшие параметры оптимизации. Для этого в настройиках оптимизации указал диапазоны и шаг для каждой из МА.
FFМА Старт-1, Шаг-1, Стоп-50;
FFМА Старт-10, Шаг-5, Стоп-200;
FFМА Старт-20, Шаг-10, Стоп-500;

Уже на этой стадии нас подстерегает 1 проблема, а именно: В моей ТС не так много параметров но уже методом полного перебора тестеру потребуется совершить 95500 проходов. В случае если бы диапазон поиска параметров был бы шире или количество используемых параметров было больше, значительно возрастает количество прогонов и соотвественно время требуемое для поиска параметров. Конечно можно попытаться сократить это время используя другой метод поиска параметров, например используя Генетический алгоритм перебора, или какой либо другой, или/и используя достаточно мощьные вычислительные системы и даже например облачные вычисления (например в MQL5) но все равно при слишком большом количестве параметров время необходимое для поиска будет весьма значительным. Я буду использовать Генетический поиск параметров тк при полном переборе тестер уже показывает расчетное время перебора параметров 1 ч. 10 мин.

(Данный кусок касается особенностей тестирования в среде MQL4, в вашей могут быть отличия и другие особенности).
Далее необходимо выбрать модель тестирования, на выбор имеется 3 модели:

1) Все тики.
2) По ценам открытия.
3) Контрольные точки.
Подробно их описывать я не буду, все достаточно хорошо пояснено в справочнике MQL4.

Опишу лишь проблемы:

При использовании модели Все тики, тестер подгружает наименьший из доступных ТФ и использует его, в случае если у Вас отстуствует малый ТФ, а Ваша ТС торгует внутри несформированного бара, в том числе если у Вас короткие стопы или тейки меньшие по размеру чем Бары на вашем ТФ то результаты оптимизации будут некорректными. Кроме того тестирование по этой модели весьма долгое, а оптимизация и того может зятнуться на месяцы и даже годы. Модель по ценам открытия вообще рисует бар по цене открытия и параметры бара ДО появления следующего ВСЕГДА такие-Open = High = Low = Close, Volume=1, те опять же если внутри бара у Вас были какие либо операции тестер некорректо учтет цену при совершении операции. + данной модели является то что она работает быстрее чем модель все тики, и как правило именно на тей проводят оптимизацию, а уже досконально тестируют на всех тиках. С контрольными точками такая же проблема, эту модель вообще как правило используют для грубой оценки работоспособонсти эксперта. Так же не стоит забывать о корректности самой подргуженной истории. Т.к. мой эксперт торгует ТОЛЬКО на открытии нового бара, а стопы и тейки в нем не используются, мне подойдет модель по ценам открытия. 

Самая Главная проблема оптимизации.

Возьмем для примера участок в 1 год с 2013.01.01 по 2014.01.01 и поищем хорошие параметры для ТС. По итогам оптимизации  нашлось некоторое количество хороших результатов:
О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.

Возьмем из результатов параметры например 174 прохода (подсвечены на скрине), в которых периоды машек равны 33, 45,230. И прогоним тест с тем же периодом истории:

О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.
О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.
Казалось бы, УРА! Немедленно на реал и рубить бабло! А теперь медленно как стриптизерша снимает одежду, начинаем снимать с себя розовые очки..

Во первых с ходу- количество совершенных сделок 60!, Это очень мало! Общепринято чтобы тест был хоть сколько нибудь адекватным количество используемых сделок должно быть не меннее 100.
Далее запускаем наш тест за 3 года. Те Вне периода оптимизации 2012.01.01-2013.01.01, оптимизация 2013.01.01.-2014.01.01, вне периода 2014.01.01-2015.01.01.

О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.
О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.
Оказывается эксперт давал прибыль только в период оптимизации, те иначе говоря подобрались те параметры, которые работали только на отрезке оптимизации. (Кстати говоря, именно этим часто пользуются продавцы «граалей», показывая Вам красивые картинки в периоде оптимизации.)

«А может параметры эти параметры были неудачные, а другие принесут прибыль» скажете Вы. Для проверки этого утверждения не будем тестировать все удачные параметры, а глянем на график оптимизации. (В МТ4 по моему мнению он несколько убог, тк может отображать максимум 2х мерную поверхность оптимизируемых параметров, но для данной статьи его хватит.)
О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при опитимизации ТС.
На данном графике по оси Х параметры FMA, У-SMA. Что же мы видим? А видим что советник ВООБЩЕ не устойчив к изменениям рынка.

На овале 1, наблюдается явный подбор параметров под текущее состояние рынка тк рабочие периоды FMA в основном в диапазонах 70-75 (при этом нужно помнить что шаг у нас для FMA был 5!) и 85-90. На овале 2 есть попытка сформировать облако оптимизации, но оно как сыр с дырками, что говорит о неустойчивости всего облака параметров (шаг влево, вправо-слив.).

Подведем итог:

1) При оптимизации ТС для хоть какой то уверенности в устойчивости Вашей ТС к изменениям рынка, необходимо чтобы облако параметров было как можно больше и без дыр. Не должно быть такого что например при МА 89 ваша ТС приносит прибыль а при 90 слив. Должен быть диапазон, и чем он шире тем ТС устойчивее. Кроме того тест должен затрагивать разные периоды рынка (коррекция, тренд). (Кстати очень мило читать в «Умных» книжках как автор описывает примерно такое: Я использовал 2 МА с периодами 30 и 90, а через 2 страницы у него периоды стали 40, 120 и в таком духе) 

2) Количество совершенных на тесте сделок должно быть как можно большим но не меннее 100, иначе тест ТС не является адекватным. 

3) При оптимизации желательно брать 1/3 от участка периода теста (середину), а после оптимизации смотреть как вела себя ТС в оптимизации и без. 1/3 Это достаточно жесткий тест, чаще берут в пропорции 25% до, 50% оптимизация, 25% после оптимизации. Но он является более достоверным. Но все равно не смотря на это оптимизация НЕ ДАЕТ 100% гарантии что ваша ТС будет работать в реале. Дам способ как определить что параметры вашей ТС «уплыли»: Допустим имеется параметр прошедший все тесты, и вы его используете на реале. Запишите некоторые критические значения за период тестирования, как например максимальная просадка, максимальное количество убыточных сделок подряд, средняя убыточная. Если текущая просадка превысила максимальную историческую в тесте, то скорее всего параметры поплыли, то же самое и для количества убыточных сделок, только среднюю убыточную я бы рекомендовал умножать например на 1,5 и если фактическое значение превысило ваше расчетное, то пареметры следует менять. 

4) Учитывайте особенности Вашей ТС, как она торгует и как проводит тест оптимизации Ваш оптимизатор ТС. (Помните про модели тестирования?)

5) Важно использовать корректную историю.

 

В данной статье я не учитывал тестерные граали, как например скальперские ТС которые красиво работают в тепличных условиях, а в реале из за различных задержек и прочего могут сливать. Или ТС которые подсматривают будущее (этим особенно страдал МТ4 ранних версий), когда некими обходными путями можно заглянуть в будущее истории и на его основании делать сигналы.

 

9 Комментариев
  • Евгений Карпов
    28 ноября 2015, 14:26
    Я использую 26,89,200 по ценам закрытия.Вроде работает.
  • Dordje
    28 ноября 2015, 16:34
    самое интересное было бы менять параметры машек динамично в зависимости от условий...)
      • Dordje
        28 ноября 2015, 21:11
        Александр, наверное только если создавать такие условия в коде
  • Dordje
    28 ноября 2015, 16:35
     как проверить корректность истории в mt4?
  • White Collar
    28 ноября 2015, 19:24
    не стоит лупить сразу мелкий шаг для параметров, можно взять крупнее и там, где будут лучше результаты уже более тщательно протестить, с более мелким шагом, так время на тест значительно сократится
  • Dordje
    28 ноября 2015, 21:12
     насчет облака — понравилось, не смотрел раньше в эту сторону....)))
  • Антон Б
    29 ноября 2015, 15:47
    В роботе можно прописать дропдаун расчетный, и робот не будет открывать поизции при его достижении. Такой треллинг стоп на эквити получается.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн