A estratégia quantitativa DPD-RSI-BB combina três indicadores - DPD, RSI e Bollinger Bands para negociação de ações.
A estratégia consiste nos seguintes componentes principais:
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.
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.
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.
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.
A estratégia apresenta as seguintes vantagens:
O julgamento abrangente utilizando vários indicadores evita sinais falsos provenientes de um único indicador.
Usar o indicador RSI para julgar condições de sobrecompra e sobrevenda permite definir previamente pontos de stop loss e take profit.
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.
As definições de parâmetros flexíveis permitem a otimização de diferentes stocks.
A estratégia apresenta também alguns riscos:
A combinação de múltiplos indicadores torna a estratégia bastante complexa, com dificuldade de ajuste dos parâmetros.
Indicadores como o DPD e o RSI apresentam certos atrasos, que podem perder o melhor momento de entrada.
Os parâmetros devem ser otimizados para se adequarem aos diferentes ciclos e características dos estoques.
Os seguintes aspectos podem ser otimizados:
Ajustar os parâmetros do indicador para otimizar os pontos de entrada e saída.
Adicionar mecanismos de stop loss para controlar estritamente a perda por negociação.
Ensaios com diferentes parâmetros de existências e de ciclos para avaliar o desempenho da estratégia.
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")