A estratégia de negociação do RSI Laguerre é baseada no filtro John EHLERS
O indicador central desta estratégia é o RSI Laguerre, cuja fórmula de cálculo é a seguinte:
L0 = (1-γ)Src + γL0[1] L1 = -γL0 + L0[1] + γL1[1] L2 = -γL1 + L1[1] + γL2[1] L3 = -γL2 + L2[1] + γL3[1]
Aqui γ=1-α, α é um coeficiente ajustável, Src representa o preço. L0 a L3 são 4 indicadores contendo relações recursivas. Nesta base, a integral ascendente atual cu e integral descendente cd podem ser calculadas:
cu = (L0>L1? L0-L1 : 0) + (L1>L2? L1-L2 : 0) + (L2>L3? L2-L3 : 0) cd = (L0
Então o RSI de Laguerre pode ser calculado usando cu e cd:
LaRSI = cu / (cu + cd)
Através da estrutura de filtro recursivo, o Laguerre RSI mantém a capacidade de identificação de tendências do RSI enquanto filtra muito ruído aleatório, gerando sinais de negociação mais claros e suaves.
As regras específicas de negociação são: Vá longo quando o RSI de Laguerre cruza acima de 20, e vá curto quando o RSI de Laguerre cruza abaixo de 80.
As principais vantagens da estratégia RSI de Laguerre são:
Filtrar eficazmente o ruído do RSI através da estrutura de filtro Laguerre, tornando os sinais de negociação mais claros e mais confiáveis
O coeficiente α ajustável torna os parâmetros da estratégia flexíveis para otimização para se adaptar a mais ambientes de mercado
Manter a validade a longo prazo do RSI, permitindo simultaneamente a identificação do momento através da filtragem, integração da tendência e da sobrecompra/supervenda
Regras de estratégia simples e intuitivas que são fáceis de implementar e que funcionam bem em vários ambientes de mercado
Os principais riscos desta estratégia são:
Uma configuração inadequada de α pode conduzir a um atraso excessivo ou a uma filtragem excessiva, perdendo assim as alterações de preço
Em mercados voláteis podem ocorrer perdas comerciais frequentes
Algumas oportunidades de alta podem ser perdidas em mercados de alta sustentados a longo prazo
Esta estratégia pode ser otimizada a partir dos seguintes aspectos:
Usar algoritmos de aprendizagem de máquina para otimizar a configuração do coeficiente α
Adicionar mecanismos de stop loss para reduzir o risco de perda
Combinar outros indicadores para filtrar sinais falsos
Aumentar o modelo de flexibilização quantitativa para garantir os lucros em fases específicas
A estratégia Laguerre RSI identifica efetivamente situações de sobrecompra e sobrevenda através de mecanismos de filtragem, evitando interferências de ruído ao emitir sinais de negociação.
/*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))