Торговая стратегия Laguerre RSI основана на фильтре John EHLERS
Основным показателем этой стратегии является Laguerre RSI. Его формула расчета следующая:
L0 = (1-γ)Src + γL0[1] L1 = -γL0 + L0[1] + γL1[1] L2 = -γL1 + L1[1] + γL2[1] L3 = -γL2 + L2[1] + γL3[1]
Здесь γ=1-α, α - регулируемый коэффициент, Src представляет собой цену. L0 до L3 - это 4 показателя, содержащие рекурсивные отношения. На этой основе можно рассчитать текущий интеграл cu вверх и интеграл cd вниз:
cu = (L0>L1? L0-L1 : 0) + (L1>L2? L1-L2 : 0) + (L2>L3? L2-L3 : 0) cd = (L0
Тогда Laguerre RSI можно рассчитать с помощью cu и cd:
LaRSI = cu / (cu + cd)
Благодаря рекурсивной структуре фильтра Laguerre RSI сохраняет способность идентификации трендов RSI, фильтруя при этом много случайного шума, генерируя более четкие и плавные торговые сигналы.
Специфическими правилами торговли являются: Продолжайте, когда RSI Laguerre пересекает 20 и переходите в короткие позиции, когда RSI Laguerre пересекает 80.
Основными преимуществами стратегии Laguerre RSI являются:
Эффективно фильтрует шум RSI через структуру фильтра Laguerre, делая торговые сигналы более ясными и надежными
Регулируемый коэффициент α делает параметры стратегии гибкими для оптимизации для адаптации к более рыночным условиям
Сохраняет долгосрочную валидность РСИ, позволяя одновременно определять импульс путем фильтрации, интеграции тренда и перекупленности/перепродажи.
Простые и интуитивно понятные правила стратегии, которые легко внедряются и хорошо работают в различных рыночных условиях
Основными рисками этой стратегии являются:
Неправильное настройка α может привести к чрезмерному отставанию или перефильтрованию, что приводит к отсутствию изменений цен
Частые торговые потери могут возникать на волатильных рынках
Некоторые возможности для роста могут быть упущены на долгосрочных устойчивых бычьих рынках
Эта стратегия может быть оптимизирована из следующих аспектов:
Использование алгоритмов машинного обучения для оптимизации настройки коэффициента α
Добавление механизмов остановки потери для снижения риска потери
Комбинировать другие индикаторы для фильтрации ложных сигналов
Увеличить модель количественного смягчения для обеспечения прибыли на определенных этапах
Стратегия Laguerre RSI эффективно идентифицирует ситуации с перекупленностью и перепроданностью с помощью фильтрующих механизмов, избегая помех от шума при выдаче торговых сигналов.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mertriver1 // Developer: John EHLERS //@version=3 // Author:Kıvanç Özbilgiç strategy("Laguerre RSI", shorttitle="LaRSI", overlay=false) src = input(title="Source", defval=close) alpha = input(title="Alpha", type=float, minval=0, maxval=1, step=0.1, defval=0.2) colorchange = input(title="Change Color ?", type=bool, defval=false) Date1 = input(true, title = "=== Date Backtesting ===") FromDay1 = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromMonth1 = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromYear1 = input(defval = 2020, title = "From Year", minval = 2017) ToDay1 = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToMonth1 = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear1 = input(defval = 9999, title = "To Year", minval = 2017) start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00) finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59) window1() => time >= start1 and time <= finish1 ? true : false gamma=1-alpha L0 = 0.0 L0 := (1-gamma) * src + gamma * nz(L0[1]) L1 = 0.0 L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1]) L2 = 0.0 L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1]) L3 = 0.0 L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1]) cu= (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0) cd= (L0<L1 ? L1-L0 : 0) + (L1<L2 ? L2-L1 : 0) + (L2<L3 ? L3-L2 : 0) temp= cu+cd==0 ? -1 : cu+cd LaRSI=temp==-1 ? 0 : cu/temp Color = colorchange ? (LaRSI > LaRSI[1] ? green : red) : blue plot(100*LaRSI, title="LaRSI", linewidth=2, color=Color, transp=0) plot(20,linewidth=1, color=maroon, transp=0) plot(80,linewidth=1, color=maroon, transp=0) strategy.entry("Long", true, when = window1() and crossover(cu, cd)) strategy.entry("Short", false, when = window1() and crossunder(cu, cd))