Estratégia de negociação do RSI Laguerre

Autora:ChaoZhang, Data: 2023-12-19 14:04:46
Tags:

img

Resumo

A estratégia de negociação do RSI Laguerre é baseada no filtro John EHLERS Laguerre aplicado ao indicador RSI. Ao ajustar o coeficiente α, esta estratégia aumenta ou diminui o atraso e a suavidade do RSI para filtrar o ruído e gerar sinais de negociação mais claros.

Estratégia lógica

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.

Análise das vantagens

As principais vantagens da estratégia RSI de Laguerre são:

  1. 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

  2. O coeficiente α ajustável torna os parâmetros da estratégia flexíveis para otimização para se adaptar a mais ambientes de mercado

  3. 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

  4. Regras de estratégia simples e intuitivas que são fáceis de implementar e que funcionam bem em vários ambientes de mercado

Análise de riscos

Os principais riscos desta estratégia são:

  1. Uma configuração inadequada de α pode conduzir a um atraso excessivo ou a uma filtragem excessiva, perdendo assim as alterações de preço

  2. Em mercados voláteis podem ocorrer perdas comerciais frequentes

  3. Algumas oportunidades de alta podem ser perdidas em mercados de alta sustentados a longo prazo

Orientações de otimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Usar algoritmos de aprendizagem de máquina para otimizar a configuração do coeficiente α

  2. Adicionar mecanismos de stop loss para reduzir o risco de perda

  3. Combinar outros indicadores para filtrar sinais falsos

  4. Aumentar o modelo de flexibilização quantitativa para garantir os lucros em fases específicas

Conclusão

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))

Mais.