big_bot_4

«Старый» MQL версии 4 был достаточно простым языком, и даже при минимальном опыте программирования можно было создать достаточно мощные советники уже через 2-3 недели. За последние два года произошло много изменений, в основном добавление элементов объектного программирования: классы, наследование, перегрузка и т.д. Но оборотной стороной нововведений стала еще более медленная скорость тестирования.

Понять, почему так происходит, и как убыстрить процесс мы не можем, так как код платформы закрыт, и никто кроме разработчиков, не знает, по какому принципу производится оптимизация, как на самом деле обрабатываются входные котировки и насколько можно доверять итоговым процентам. Но самой главной проблемой является невозможность одновременного тестирования портфеля советников на разных инструментах, что важно для стратегий использующих корреляции или алгоритмы хеджирования. Как альтернативу профессионалы рекомендуют использовать специальное программное обеспечение, такое как SQ EA Analyzer (платная) и Report Manager (бесплатная программа).

Обе версии терминала используют в качестве входных котировок только цены Bid, а значения Ask вычисляются как Bid+Spread. И получается, что большую часть времени цены Ask или полностью совпадают с Bid или находятся от него на фиксированном состоянии. Реальный рынок совершенно другой – спред, пусть даже в малых пределах, меняется постоянно и чтобы убедиться в этом, достаточно посмотреть тиковый график.

Попробуем оценить влияние данного ценового упрощения? Как показывает практика на старших таймфреймах от часового и выше, на исторических промежутках в 5-7 лет в расчете итоговой прибыли, может быть погрешность в 3-5%, и обращать особого внимания на это не стоит. Но вот для скальперов можно получить все 50% отклонения. Также нереальные результаты наблюдаются и для стратегий на отложенных ордерах. Постоянный спред может показать прибыльную сделку там, где в реале был убыток, скажем из-за резкого расширения диапазона Bid/Ask перед выходом новости. Или наоборот, многие убыточные сделки были не так уж безнадежны.

Теперь о стоимости пункта для кросс-пар – недостаток не очень серьезный, но все же о нем нужно помнить,  анализируя результаты. Сначала формула, по которой идет расчет:

formula_pips

Котировки базовой валюты и собственно кросс-курс тестер берет на текущий открытый день и использует ее для всего рассматриваемого периода. Но 2-5 и уже гарантированно 10 лет назад все выглядело совсем иначе – котировки, а значит, и стоимость пункта были иными. Справедливости ради стоит отметить, что это не дает существенных итоговых погрешностей и сливные боты и советники заберут депозит гораздо быстрее и независимо от стоимости пункта.

Похожая ситуация наблюдается когда счет, на котором идет тест открыт не в USD, а например, в EUR. Тогда выбрав пару USD/CHF, терминал для расчета пункта возьмет значения EUR/USD и EUR/CHF и естественно это приведет к дополнительным отклонениям итоговой суммы.

Для всесторонней оценки последствий использования советника на реальных счетах используются различные стресс-тесты, которые, увы, недостаточно хорошо представлены в обоих MetaTrader’ах. Рекомендуется использование сторонних решений, таких как EA Analyzer, в которых можно «нагрузить» советник по полной1 программе: найти худший сценарий из возможных, проверить систему на робастность, брокерозависимость (есть и такие «суперпродукты»), смоделировать различное проскальзывание, спреды и другие параметры. В прошлых статьях, мы отмечали, что предсказать будущее мы можем и в наших возможностях только оценить вероятность прибыли при определенных настройках параметров. Стресс-тесты в этом случае незаменимы.

Следующий фактор, серьезно воздействующий на точность – величина свопа. В тестерах MT4 и MT5 используется одна величина свопа для всего периода, тогда как в реальности она меняется каждый день! Также комиссия за перенос позиции разнится от брокера к брокеру и больше всего от этого страдают ночные скальперы. Задать свою величину свопа мы также не можем – она берется непосредственно от брокера, на котором открыт счет, что еще больше ухудшает результаты.

И в заключение об особенностях  времени в MetaTrader 4, которые необходимо учесть при написании или тестировании советника.

В языке MQL есть целый набор функций работающей с ценой текущей свечи, например Open (цена открытия) и High (максимальное значение цены). При этом изменение значений происходит в момент прихода нового тика, а не по времени. Поясним на примере – допустим, используется часовой таймфрейм H1. В момент открытия новой свечи она появляется в виде черточки на графике и будет таковой до прихода первых нескольких тиков. Для средне- и долгосрочных советников такие небольшие задержки не создают проблем, чего нельзя сказать о внутридневных и скальпирующих стратегиях. Если вы создаете систему, в которой для входа используются конкретные цены или формулы их содержащие, всегда ждите хотя бы первые 2-3 тика, прежде чем принимать решение.

В следующих статях мы покажем, как выглядит процесс тестирование в MetaTrader на примере робота из раздела «Автоматическая торговля».

Тестируем автоматические советники. Ч.1: типовые ошибки

Тестируем автоматические советники. Ч.2: как работает тестер

Тестируем автоматические советники. Ч.3: особенности MetaTrader 4 и 5