Estratégia dupla RSI e Bandas de Bollinger


Data de criação: 2023-12-12 11:53:49 última modificação: 2023-12-12 11:53:49
cópia: 0 Cliques: 685
1
focar em
1621
Seguidores

Estratégia dupla RSI e Bandas de Bollinger

Visão geral

A ideia central da estratégia é a combinação de dois indicadores técnicos, o RSI (indicador relativamente fraco) e o Brin, para filtragem de sinais de dupla negociação, reduzindo ao máximo a interferência de sinais falsos e melhorando a qualidade do sinal.

O indicador RSI cria oportunidades de negociação quando os preços se rompem ou se reajustam para baixo do correio de Bolingbroke. Ele combina as vantagens de dois indicadores diferentes, levando em consideração as características estatísticas das flutuações do mercado e também a situação de falta de disponibilidade dos participantes do mercado, formando uma base de julgamento abrangente.

Princípio da estratégia

Na seção RSI, observamos simultaneamente dois indicadores RSI de diferentes períodos, um com um período mais curto usado para capturar sinais de overbought e oversold, e um com um período mais longo usado para confirmar a reversão da tendência. Quando o RSI de curto período mostra um excesso de overbought e o RSI de longo período mostra uma reversão, é considerado uma oportunidade de negociação.

Na seção de Brin, nós nos preocupamos se o preço está se movendo para cima ou para baixo. Se o preço está se movendo para cima, é um ponto de venda. Se o preço está se movendo para baixo, é um ponto de compra. Ao mesmo tempo, nós também nos preocupamos se o preço está se movendo para trás, para que possamos capturar oportunidades de reversão.

Quando os sinais RSI e os sinais de Brin aparecem simultaneamente, consideramos que a oportunidade de negociação se formou e emitimos uma instrução de negociação.

Análise de vantagens

  • Filtragem de duplo indicador, maior confiabilidade, evitar transações excessivas
  • Aproveite as oportunidades em diferentes fases do mercado, considerando tendências e reversões
  • Parâmetros configuráveis e podem ser ajustados conforme necessário
  • Gerenciamento de tempo e dinheiro interno

Análise de Riscos

  • A configuração incorreta dos parâmetros da faixa de Bryn pode causar falsos sinais
  • A falta de capacidade para lidar com situações extremas de forte volatilidade do mercado
  • O RSI pode emitir sinais errados
  • Os parâmetros precisam ser otimizados para diferentes variedades e ciclos

Os riscos podem ser evitados e controlados por meio de otimização de parâmetros, redução apropriada de posições e intervenções humanas.

Direção de otimização

  • Ajustar os parâmetros do RSI para otimizar os julgamentos de sobrecompra e sobrevenda
  • Ajustar a largura de banda de Brin e otimizar a estratégia de ruptura de Brin
  • Aumento do mecanismo de gestão de posições
  • Aumentar a estratégia de stop loss
  • Modelo multifatorial com mais indicadores

Resumir

O RSI e a dupla estratégia de Brinks aproveitam as vantagens de ambos os indicadores para gerar sinais de alta qualidade e obter um retorno estável do investimento, desde que os parâmetros sejam otimizados e o gerenciamento de risco esteja em vigor. A combinação de mais sinais e modelos também é uma direção possível para o futuro.

Código-fonte da estratégia
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Ezieh Str.v2", shorttitle="Ezieh Str.v2", overlay=true, pyramiding=10, currency=currency.USD, slippage=3, commission_type=strategy.commission.cash_per_order, commission_value=0.04, initial_capital=1000)



UseDateFilter  = input(title="Enable Date Filter"         ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off date filter")
StartDate      = input(title="Start Date Filter"          ,type=input.time    ,defval=timestamp("1 Jan 2000 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to start excluding trades")
EndDate        = input(title="End Date Filter"            ,type=input.time    ,defval=timestamp("1 Jan 2100 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to stop excluding trades")
UseTimeFilter  = input(title="Enable Time Session Filter" ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off time session filter")
TradingSession = input(title="Trading Session"            ,type=input.session ,defval="1000-2200:1234567"                 ,group="Date & Time" ,tooltip="No trades will be taken outside of this range")

In(t)      => na(time(timeframe.period, t)) == false
TimeFilter = (UseTimeFilter and not In(TradingSession)) or not UseTimeFilter
DateFilter = time >= StartDate and time <= EndDate

DateTime = (UseDateFilter ? not DateFilter : true) and (UseTimeFilter ? In(TradingSession) : true) 

///////////// RSI
L_RSI_Length     = input(7  , title="L_Length")
L_RSI_OverSold   = input(45 , title="L_OverSold")
S_RSI_Length     = input(14 , title="S_Length")
S_RSI_OverBought = input(65 , title="S_OverBought")

price = close
Lvrsi = rsi(price, L_RSI_Length)
Svrsi = rsi(price, S_RSI_Length)

///////////// Bollinger Bands
BBlength = input(title="Bollinger Period Length", type=input.integer, defval=100, minval=2)
BBmult = 2.1 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")



///////////// Condition
LongCondition  = crossover(Lvrsi, L_RSI_OverSold)    and crossover(close  ,BBlower)
ShortCondition = crossunder(Svrsi, S_RSI_OverBought) and crossunder(close,BBupper)
Longexcon      = crossunder(low, BBupper)
Shortexcon     = crossover(low, BBlower)

qt = round(strategy.equity/price, 3)

///////////// RSI + Bollinger Bands Strategy
if (not na(Lvrsi))

    if LongCondition and DateTime
        strategy.entry("RSI_BB_L", strategy.long, qty=qt,  comment="Long")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if Longexcon
        strategy.close("RSI_BB_L", qty_percent = 100, comment = "L_exit")
    
    if ShortCondition and DateTime
        strategy.entry("RSI_BB_S", strategy.short, qty=qt,  comment="Short")
    else
        strategy.cancel(id="RSI_BB_S")
        
    if Shortexcon
        strategy.close("RSI_BB_S", qty_percent = 100, comment = "S_exit")
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)