Стратегия индекса относительной активности Элерса-Фишера
Обзор
Данная стратегия основана на индикаторе Элерса-Фишера «Случайный относительный индекс жизненной силы» (Ehlers-Fisher Stochastic Relative Vigor Index), предложенном Джоном Элерсом в его книге «Контрольный анализ акций и фьючерсов». Стратегия использует индикатор Элерса-Фишера для оценки относительной силы акций и применяет специальные торговые правила для открытия длинных и коротких позиций.
Принцип стратегии
Сначала рассчитывается разница между ценой закрытия и ценой открытия (тело свечи). Затем вычисляется разница между максимальной и минимальной ценой (тень свечи). Путем суммирования и усреднения этих двух компонентов определяется импульс акции. Затем этот импульс делится на волатильность акции для получения относительного индекса жизненной силы (RVI).
Далее к RVI применяется формула индикатора Элерса-Фишера, в результате чего получается значение сигнала. Когда сигнал пересекает пороговое значение снизу вверх, открывается длинная позиция; при пересечении сверху вниз – короткая. Кроме того, устанавливаются фиксированный стоп-лосс и трейлинг-стоп для контроля рисков.
Преимущества анализа
Стратегия комплексно использует импульсные характеристики акции и стохастический индикатор, что позволяет эффективно определять относительную силу рынка. Конструкция индикатора Элерса-Фишера уменьшает влияние шума и генерирует достаточно надежные торговые сигналы. Индекс жизненной силы отражает трендовые и волатильные свойства самой акции, являясь динамическим индикатором.
По сравнению с использованием только импульсных или стохастических индикаторов, данная стратегия органично сочетает индикаторы и модели, что повышает качество сигналов. Строгие правила стоп-лосса позволяют контролировать риски при сохранении прибыльности стратегии.
Анализ рисков
Стратегия в основном опирается на индикатор Элерса-Фишера. При резких значительных изменениях рынка параметры индикатора необходимо оптимизировать для адаптации к новой среде. Неправильная настройка параметров может привести к ложным или запаздывающим сигналам.
Кроме того, стратегия подвержена определенному риску подгонки под кривую. Если рыночные условия в тестировании и реальной торговле существенно различаются, результаты стратегии могут значительно отклоняться. В таком случае требуется корректировка параметров стратегии или оптимизация торговых правил для адаптации к новым рыночным условиям.
Направления оптимизации
Стратегию можно дополнительно улучшить по следующим направлениям:
-
Оптимизация параметров индикатора Элерса-Фишера для повышения чувствительности или фильтрации шума.
-
Использование алгоритмов машинного обучения, таких как LSTM, для моделирования индикатора и генерации более надежных торговых сигналов.
-
Включение индикатора рыночной волатильности, например ATR, для динамической корректировки расстояния стоп-лосса.
-
Расширение поддержки многофакторных моделей, объединение других технических и фундаментальных индикаторов для повышения качества сигналов.
-
Оптимизация логики открытия и закрытия позиций, установка динамических условий входа и выхода. Внедрение адаптивных техник стоп-лосса и тейк-профита.
Заключение
Стратегия использует индикатор Элерса-Фишера «Случайный относительный индекс жизненной силы» для оценки рыночного тренда и силы, а также устанавливает обоснованные механизмы стоп-лосса для контроля рисков. По сравнению с одиночными индикаторами, данная стратегия органично объединяет несколько индикаторов и моделей, позволяя фильтровать шум и предоставлять качественные сигналы. Благодаря оптимизации параметров, объединению моделей, адаптивной настройке и другим методам, эффективность стратегии может быть дополнительно повышена.
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Ehlers Fisher Stochastic Relative Vigor Index Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
p = input(10, title = "Length")
FisherStoch(src, len) =>- 1

