Библиотека пошаговой форвард-оптимизации для МетаТрейдер 4: Частые вопросы

15 августа 2016, 19:41
Stanislav Korotky
22
117

Это часть документации библиотеки WalkForwardOptimizer для МетаТрейдер 4 - оглавление.

 Частые вопросы

 

В. Зачем мне использовать WFO?

О. WFO - это автоматизированный вариант будничного процесса тестирования и контроля советника, который трейдер обычно выполняет вручную. Кроме того, WFO дает обоснованный ответ на вопросы, какой выбрать период оптимизации советника и как долго в среднем затем сохраняется прибыльность советника, чтобы знать с какой частотой проводить переоптимизацию.


В. Почему нет библиотеки WFO для MetaTrader 5?

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


В. Почему периоды оптимизации и тестирования объединены в рамках одного прогона тестера?

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


В. Почему при использовании библиотеки WFO нельзя использовать стандартные ограничения оптимизации?

О. Действительно, при использовании библиотеки следует снять все флаги на вкладке Оптимизации диалога Свойств эксперта в тестере. Это связано с тем, что ограничения применяются к соответствующим величинам, рассчитываемым на всем периоде, но он внутри библиотеки делится на период оптимизации и тестирования, причем только показатели оптимизации должны приниматься во внимание. Библиотека WFO вычисляет все важные показатели для обоих периодов независимо и предоставляет доступ к показателям оптимизации через специальные переменные, которые можно использовать в формулах. Если вы хотите использовать ограничение, задайте выражение для основного показателя успешности торговли с учетом конкретного параметра, на который нужно наложить ограничение, и если условие не будет выполнено, устанавливайте показатель в 0. Например, если нужно отбросить все прогоны с относительной просадкой больше 50%, умножьте показатель на следующее выражение "min(max(50 - DDREL, 0), 1)".

 

В. Некоторые значения профит-фактора выглядят странно. Почему?

О. Поскольку профит-фактор вычисляется как отношение прибыли к убытку, может случиться, что он неопределён, если убытков нет вообще. По умолчанию, МетаТрейдер 4 присваивает профит-фактору в таких случаях значение DBL_MAX, но это не очень хорошо, потому что тест с прибылью 1 и тест с прибылью 10 получают одинаковый профит-фактор. Более того, если профит-фактор используется в вычислении составного показателя эффективности, DBL_MAX скорее всего приведет к появлению нерегулярности. Поэтому библиотека предоставляет 2 способа обработки "переполнения" профит-фактора. Когда оценка производится по wfo_built_in_loose или wfo_built_in_strict, профит-фактор больше 10 пересчитывается как 10, умноженное на квадратный корень из количества сделок. Когда используются другие оценки, можно с помощью функции wfo_setPFmax указать относительно большое число в качестве верхнего предела профит-фактора, но оно должно быть значительно меньше DBL_MAX, например, 100. Наконец, при использовании wfo_expression, можно обрабатывать особые случаи, вычисляя аналог профит-фактора на основе общей прибыли (переменная GP) и общих убытков (переменная GL) в произвольной формуле.

 

В. Как определить, успешно ли пройден форвард-тест или нет?

О. Библиотека WFO в явном виде не помечает тесты как успешные или проваленные, потому что критерии классификации могут отличаться. Как правило, тест считается пройденным, если эффективность больше 50%, стабильность больше 50%, а также просадка менее 30%. Кроме того следует обращать внимание на распределение прибылей по форвард-тестам и не допускать явных неравномерностей (например, когда максимальная прибыль одного шага дает более 50% всей прибыли форварда). Все эти факторы легко проверить визуально с помощью таблиц отчета.

 

В. Почему форвард просадка помечена словами "примерная оценка, нормализованная"?

О. Данная просадка считается по кривой форвард баланса с использованием исключительно прибылей и убытков отдельных шагов (каждый шаг - как целое) и не анализирует сделки. Имеено поэтому просадка названа "примерной оценкой". Для расчета точной просадки нужно иметь полный список сделок, но библиотека WFO не сохраняет их из соображений эффективности. Если бы она делала это, то каждый прогон тестера порождал бы файл, а таких прогонов могут быть сотни тысяч.

Просадка названа нормализованной, потому что она рассчитывается от приведенной к году прибыли на оптимизированном участке, а не от начального депозита. Обычная просадка может существенно меняться в зависимости от произвольной суммы, которую трейдер укажет. Это усложняет оценку рисков. Например, при начальном депозите 10000 просадка в 1000 составляет только 10%, но при 2000 - она уже 50%. Когда годовая прибыль (из прошлого периода) берется вместо депозита, просадка выражат риски в виде универсальной меры, отмасштабированной в соответствии с потенциальной эффективностью торговой системы.

 

В. Что означает девиация в отчетах, как её интерпретировать?

О. Строка в таблицах с девиацией (стандартным отклонением, σ) дает оценку разброса соответствующей величины, то есть насколько далеко она может колебаться относительно среднего значения. Если отклонение равно или больше среднего (матожидания), значение параметра ненадежно, поскольку может легко менять знак, а это очень важно, например, для прибыли. Например, если средняя прибыль равна 100 и отклонение - 100, вероятность убытков равна примерно 15.8%, если отклонение - 50, то вероятность убытков - ~2.2%, а если отклонение - 33, то вероятность убытков - всего ~0.1%. И наоборот, если отклонение равно 200, вероятность убытков увеличивается до ~31%. Это иллюстрирует грфик.

Gauss distribution for expected payoff and its dispersion (standard deviation)

Здесь используется нормальное распределение, что может открыть поле для дискуссий, но это распределение хорошо изучено и применимо (при определенных условиях) для большинства длинных серий экспериментов (а мы будем считать, что имеем достаточное количество форвард-тестов).

 

В. Оптимизация прервалась с ошибкой "Tester memory handler: tester stopped because not enough memory". Что делать?

О. Вы пытаетесь выполнить слишком массивную оптимизацию, она "съела" все ресурсы, доступные для тестера MetaTrader 4. Это не ошибка библиотеки. Это ограничение тестера и операционной системы. Вам нужно каким-либо образом упростить настройки оптимизации или добавить больше ресурсов на компьютер. Вот некоторые предложения:

  • сократить диапазон дат тестирования (например, взять 2-3 года вместо 5-6),
  • уменьшить количество оптимизируемых параметров,
  • сократить количество итераций для некоторых оптимизируемых параметров (например, можно уменьшить число форвад-шагов  за счет увеличения размера форвард-шага в соответствующее число раз),
  • освободите память MT4 путем выгрузки всего, кроме оптимизируемого эксперта (MT4 следует перезапустить после этого, поскольку он кэширует многие вещи и они остаются в памяти),
  • используйте генетический алгоритм тестера,
  • добавьте физической памяти в компьютер.


В. Каковы минимальные размеры окна оптимизации и шага форвард теста при "кастом" (произвольных) настройках?

О. Рекомендуемый размер окна начинается от 1 месяца, в крайнем случае - две недели. Минимальный шаг, а также приращение шага (оба значения устанавливаются в этом случае в процентах) следует выбирать такими, чтобы при пересчете во время (относительно размера окна) получался как минимум 1 день. Если минимальный шаг выбран 10%, то не имеет смысла брать окно менее 10 дней. Это же касается и их приращений. Например, можно поставить минимальное окно 10 дней, с приращением 10 дней. При этом если сделать минимальный шаг 10% и увеличивать тоже по 10%, то дробных частей дней не будет. Если требуется минимальный шаг 5% и приращение по 5%, то минимальный размер окна должен быть 20 дней и его приращение 20 дней.

 

В. Похоже, я нашел баг. Что делать?

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

Поделитесь с друзьями: