DPD-RSI-BB Estratégia quantitativa

Autora:ChaoZhang, Data: 2023-11-22 16:17:52
Tags:

img

Resumo

A estratégia quantitativa DPD-RSI-BB combina três indicadores - DPD, RSI e Bollinger Bands para negociação de ações.

Estratégia lógica

A estratégia consiste nos seguintes componentes principais:

  1. Indicador DPD para determinar a tendência

    Ele constrói a linha DEMA usando médias duplas da EMA e calcula a diferença de preço em relação à DEMA como um indicador de determinação de tendência.

  2. Indicador RSI para avaliar as condições de sobrecompra e sobrevenda

    Calcula o valor do RSI durante um determinado período. O RSI acima do limite superior é julgado como uma zona de sobrecompra e o RSI abaixo do limite inferior é julgado como uma zona de sobrevenda.

  3. Bandas de Bollinger para identificar suporte e resistência

    Ele calcula a faixa média, a faixa superior e a faixa inferior durante um determinado período.

  4. Julgamento global

    Quando o percentual de diferencial de preço do DPD é menor que o limite, o RSI é menor que o limite inferior da zona de sobrevenda e o preço é menor que a faixa superior de Bollinger, um sinal de alta é gerado.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. O julgamento abrangente utilizando vários indicadores evita sinais falsos provenientes de um único indicador.

  2. Usar o indicador RSI para julgar condições de sobrecompra e sobrevenda permite definir previamente pontos de stop loss e take profit.

  3. O indicador DPD pode determinar melhor as tendências de preços, enquanto as Bandas de Bollinger podem identificar níveis de suporte e resistência.

  4. As definições de parâmetros flexíveis permitem a otimização de diferentes stocks.

Riscos e otimização

A estratégia apresenta também alguns riscos:

  1. A combinação de múltiplos indicadores torna a estratégia bastante complexa, com dificuldade de ajuste dos parâmetros.

  2. Indicadores como o DPD e o RSI apresentam certos atrasos, que podem perder o melhor momento de entrada.

  3. Os parâmetros devem ser otimizados para se adequarem aos diferentes ciclos e características dos estoques.

Os seguintes aspectos podem ser otimizados:

  1. Ajustar os parâmetros do indicador para otimizar os pontos de entrada e saída.

  2. Adicionar mecanismos de stop loss para controlar estritamente a perda por negociação.

  3. Ensaios com diferentes parâmetros de existências e de ciclos para avaliar o desempenho da estratégia.

Conclusão

A estratégia DPD-RSI-BB combina vários indicadores para julgamentos para evitar sinais falsos de um único indicador. Através da otimização de parâmetros, ela pode se tornar uma estratégia de negociação de ações relativamente forte.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("DPD+RSI+BB ",overlay=true)
price=close




//############### DPD  #################


buyper =input(-1,step=0.1)
sellper=input(0,step=0.1)
demalen = input(50,title="Dema Length")
e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2
demadifper =  ((price-demaprice)/price)*100


//############## DPD #####################

//############# RSI ####################


lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 60 )

vrsi = rsi(price, lengthrsi)

//########## RSI #######################

//############### BB #################

lengthbb = input(50, minval=1)
multlow = input(1.5, minval=0.001, maxval=50,step=0.1)
multup = input(1.5,minval=0.001,maxval=50,step=0.1)

basisup = sma(close, lengthbb)
basislow = sma(close, lengthbb)

devup = multup * stdev(close, lengthbb)

devlow = multlow*stdev(close,lengthbb)

upperbb = basisup + devup
lowerbb = basislow - devlow

p1 = plot(upperbb, color=blue)
p2 = plot(lowerbb, color=blue)
fill(p1, p2)



//########### BB ###################




yearfrom = input(2018)
yearuntil =input(2039)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  (demadifper<buyper) and crossover(vrsi,overSold) and  (price < upperbb) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if (   price>upperbb and vrsi>overBought and demadifper>sellper   and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Mais.