Блог им. 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:
Фото
Скрипт сегодняшнего размещения ПКО Вернём (B, YTM 28,71%)
❗️Информация для квалифицированных инвесторов Скрипт размещения облигаций Вернём серии 001Р-02 B|ru|  // 150 млн р. // 3 года // купон...
Фото
Стратегия на II квартал 2026 года. Взгляд на облигации
Игорь Галактионов Инвестиционная Стратегия на II квартал 2026 года предлагает ориентиры для управления портфелем. Ведущие аналитики...
Фото
«Селигдар» открыл два новых месторождения золота в Якутии
«Селигдар» в результате проведения работ получил свидетельства, подтверждающие установления фактов открытий двух месторождений Чулковское и Хохой...
Фото
ДВМП: результаты в рамках прогноза, но и цена близка к целевой - будет ли выкуп миноров из-за объединения Росатома с DP World?
ДВМП отчитался за 2025 год: 2,3 млрд рублей убытка для акционеров за 2025 год Традиционно сравниваю со своим прогнозом и делюсь...

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

....все тэги



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