О опасностях подстерегающих при оптимизации, и о том как снять розовые очки при оптимизации ТС.
Результаты тестирования при таких параметрах оказались печальными:
Я решил попытаться оптимизировать данную ТС и найти лучшие параметры оптимизации. Для этого в настройиках оптимизации указал диапазоны и шаг для каждой из МА.
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 ранних версий), когда некими обходными путями можно заглянуть в будущее истории и на его основании делать сигналы.