Блог им. neophyte

SWT-робот. Блокировка при аномальной волатильности

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

Для начала подумаем о том, как будем фиксировать убыток.
В качестве основы возьмем волатильность часовых трендов, т.е. колебаний рынка со средним периодом 50-70 минут. Величина этого параметра измеряется индикатором волатильности на графике минутного масштаба и в обычных условиях для большинства инструментов находится в пределах 80-100пп с небольшими отклонениями.
Если в ходе движения цены в течение минуты ушли на величину больше волатильности часового тренда, то это уже признак чего-то ненормального (численный критерий может быть и другим, но в качестве основы наших экспериментов для начала мы возьмем именно этот).

Поясним на примере из данных вчерашнего, что и как мы будем делать.

SWT-робот. Блокировка при аномальной волатильности

Итак, жизнь неспешно идет своим чередом, в 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.

Какие плюсы добавились после нововведений?
В первую очередь это то, что мы можем менее пристально следить за графиком выхода новостей. В случае чего робот самостоятельно осуществит попытку «сделать ноги».
Ну и второй плюс — не исключено, что новость сыграет нам на руку и мы зафиксируем по трейлинг-стопу дополнительную прибыль, которой не имели бы при выходе из рынка перед публикацией новостных данных.

В заключение сравнительный тест с «аварийным» выходом и без него. Отметим, что тестер лишь приблизительно моделирует тиковые выбросы, так что реальные данные будут отличаться. Но качественный скачок в результатах присутствует.

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

Исходный робот.

SWT-робот. Блокировка при аномальной волатильности

Робот без блокировки входов, но с обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности

Робот с блокировкой входов и обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности
Есть улучшение во всех вариантах.


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

Робот с блокировкой входов и обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности

Робот без блокировки входов, но с обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности

 

Исходный робот без нововведений.


SWT-робот. Блокировка при аномальной волатильности

В этом случае эффект от нововведений больше, но этого и следовало ожидать, так как настройка на рынок производилась с учетом возможности выхода в случае «аномального» поведения котировок и исключение этой возможности должно было ухудщшить параметры торговли.


И в заключение грубый вариант ручной настройки на начало прошедшей недели.

Исходный робот.

SWT-робот. Блокировка при аномальной волатильности

 
Робот без блокировки входов, но с обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности

 
Робот с блокировкой входов и обработкой быстрых событий.

SWT-робот. Блокировка при аномальной волатильности


Везде убыток, но убыток в последней версии в 3 раза меньше по сравнению с исходным вариантом. И то хлеб.

Продолжим наши исследования...


SWT-метод. Теория и практика применения
Торговая тактика SWT-метода
32 | ★4
2 комментария
Спасибо. Тоже примерно так делаю. При повышении волы бот спит 



полноформатный
Какой индюк волы используете, если не секрет.
avatar
Sergii Onyshchenko (osa), сорри. Не мог ответить из-за бана.

Индикатор принципиального значения не имеет. У меня свой, системный, все завязано в единую структуру.

Читайте на SMART-LAB:
Фото
Снижение военной премии в нефти: что это меняет для доллара и G10
Во второй половине понедельника – начале вторники рынки активно пересматривают премию за худший сценарий на энергетическом рынке, что цепочкой...
Фото
12 марта Группа Ренессанс страхование опубликует МСФО за 2025 год
Напоминаем, что 12 марта 2026 года RENI опубликует МСФО Группы за 2025 год, а также проведет День инвестора, чтобы рассказать о ситуации на...
Фото
📈 Новый выпуск облигаций МГКЛ уже торгуется на рынке
Биржевые облигации ПАО «МГКЛ» серии 001PS-02 начали торговаться на вторичном рынке после размещения. 💼 Выпуск доступен для неквалифицированных...
Фото
Гендиректор Инарктики продал свои акции компании. Что это может значить?
Вечером в пятницу (6 марта ) вышел сущфакт о том, что Соснов Илья Геннадьевич, гендиректор Инарктики, продал свои акции компании. В нашем...

теги блога Николай Скриган

....все тэги



UPDONW
Новый дизайн