Есть новости ожидаемые, перед которыми лучше не использовать автоматическую торговлю.
И есть новости неожиданные, по типу вчерашнего выступления Йеллен, которая внесла сумятицу в рынки.
Индикаторные роботы при всплеске волатильности торгуют плохо. Инерционность индикаторов, которая помогает держать позицию в обычных условиях, не реагируя на ценовой шум, в условиях всплеска волатильности работает против робота. И это неизбежно ухудшает показатели торговли. И с этим надо бороться, фиксируя убытки и не брезгуя дополнительной прибылью.
Для начала подумаем о том, как будем фиксировать убыток.
В качестве основы возьмем волатильность часовых трендов, т.е. колебаний рынка со средним периодом 50-70 минут. Величина этого параметра измеряется индикатором волатильности на графике минутного масштаба и в обычных условиях для большинства инструментов находится в пределах 80-100пп с небольшими отклонениями.
Если в ходе движения цены в течение минуты ушли на величину больше волатильности часового тренда, то это уже признак чего-то ненормального (численный критерий может быть и другим, но в качестве основы наших экспериментов для начала мы возьмем именно этот).
Поясним на примере из данных вчерашнего, что и как мы будем делать.
Итак, жизнь неспешно идет своим чередом, в 16:59 сформирован минутный бар с ценой Low в 17:00 открывает рот Йеллен, еще никто ничего не услышал, но уже начинается сумасшедший дом.
Пусть у нас были открыты лонги. Покажем как мы будем выходить из рынка при движении цены против позиции (независимо от того, в прибыли позиция или убыточная).
Как только текущая цена Bid опустится на V01пп ниже цены Low предыдущего бара мы в режиме потиковой обработки событий вызываем модуль закрытия всех лонгов по данном у инструменту и уходим из рынка.
Аналогичная процедура реализуется для коротких позиций, только там для расчетов используется High предыдущего бара и цена Ask.
V01 — волатильность тренда часового цикла, измеряемая индикатором на графике масштаба М01. На момент описываемых событий была равна примерно 160пп.
Программный код, добавленный в текст программы робота:
//---аварийный выход из позиций на всплеске волатильности
if(iHigh(0,1,1)<(Bid-V01*Point)) CloseSellOrders(Magic,10);
if(iLow(0,1,1) >(Ask+V01*Point)) CloseBuyOrders(Magic,10);
Теперь покажем, как мы будем убегать с прибылью.
Если у нас была открыта короткая позиция по инструменту, как только текущая цена Ask опустится на V01пп ниже цены Low предыдущего бара мы в режиме потиковой обработки событий вызываем модуль установки трейлинг-стопа и тянем стоп за ценой Ask, отставая на величину V01 на все время продолжающегося направленного броска цены. При откате от вновь сформированного минимума вверх, большем чем V01, позиции закрываются по трейлинг-стопу.
Программный код, добавленный в текст программы робота для этого случая:
//---аварийный выход с прибылью по трейлинг-стопу
if(iHigh(0,1,1)<(Bid-V01*Point)) SetTrailingStopBuy(Magic,TrailingStop,V01);
if(iLow(0,1,1) >(Ask+V01*Point)) SetTrailingStopSell(Magic,TrailingStop,V01);
Теперь о защите от повторных входов в аномальных условиях.
После всплеска волатильности торговых сигналов обычно некоторое время не бывает, так как индикаторы малых таймфремов, по которым собственно и формируется торговый сигнал для открытия позиций, быстро уходят в области запредельно высоких значений и не могут отдать команду на покупку или продажу инструмента.
Поэтому наша задача в первоначальный момент заключается только в том, чтобы уйти с рынка, сбежать, зафиксировав прибыль или убыток.
Дальнейшая блокировка работы осуществляется по признаку перекоса волатильности, так как в аномальных условиях волатильность часового тренда превышает волатильность внутридневного V01>V05, хотя в обычных условиях строго соблюдается обратное соотношение V01<V05. Поэтому мы просто запретим открытие позиций при V01>V05.
Какие плюсы добавились после нововведений?
В первую очередь это то, что мы можем менее пристально следить за графиком выхода новостей. В случае чего робот самостоятельно осуществит попытку «сделать ноги».
Ну и второй плюс — не исключено, что новость сыграет нам на руку и мы зафиксируем по трейлинг-стопу дополнительную прибыль, которой не имели бы при выходе из рынка перед публикацией новостных данных.
В заключение сравнительный тест с «аварийным» выходом и без него. Отметим, что тестер лишь приблизительно моделирует тиковые выбросы, так что реальные данные будут отличаться. Но качественный скачок в результатах присутствует.
Прямая задача.
Прямая задача — это когда мы берем оптимальный вариант настройки параметров робота без нововведений, и с этим же набором параметров тестируем робот с добавленными возможностями блокировки входов и обработки быстрых событий.
Исходный робот.
Робот без блокировки входов, но с обработкой быстрых событий.
Робот с блокировкой входов и обработкой быстрых событий.
Есть улучшение во всех вариантах.
Обратная задача.
Обратная задача — это когда мы берем оптимальный вариант настройки параметров робота с новыми возможностями, а затем исключаем добавленные режимы блокировки входов и обработки быстрых событий.
Робот с блокировкой входов и обработкой быстрых событий.
Робот без блокировки входов, но с обработкой быстрых событий.
Исходный робот без нововведений.
В этом случае эффект от нововведений больше, но этого и следовало ожидать, так как настройка на рынок производилась с учетом возможности выхода в случае «аномального» поведения котировок и исключение этой возможности должно было ухудщшить параметры торговли.
И в заключение грубый вариант ручной настройки на начало прошедшей недели.
Исходный робот.
Робот без блокировки входов, но с обработкой быстрых событий.
Робот с блокировкой входов и обработкой быстрых событий.
Везде убыток, но убыток в последней версии в 3 раза меньше по сравнению с исходным вариантом. И то хлеб.
Продолжим наши исследования...
SWT-метод. Теория и практика применения
Торговая тактика SWT-метода
полноформатный
Какой индюк волы используете, если не секрет.
Индикатор принципиального значения не имеет. У меня свой, системный, все завязано в единую структуру.