La estrategia cuantitativa DPD-RSI-BB combina tres indicadores: DPD, RSI y Bandas de Bollinger para el comercio de acciones.
La estrategia consta de los siguientes componentes principales:
Indicador DPD para determinar la tendencia
Construye la línea DEMA utilizando promedios dobles de EMA y calcula el porcentaje de diferencia de precio frente a DEMA como indicador de determinación de tendencia.
Indicador RSI para juzgar las condiciones de sobrecompra y sobreventa
Se calcula el valor del RSI durante un cierto período. El RSI por encima del límite superior se juzga como una zona de sobrecompra y el RSI por debajo del límite inferior se juzga como una zona de sobreventa.
Bandas de Bollinger para identificar soporte y resistencia
Se calcula la banda media, la banda superior y la banda inferior durante un cierto período.
El juicio general
Cuando el porcentaje de diferencia de precio del DPD es inferior al umbral, el RSI es inferior al límite inferior de la zona de sobreventa y el precio es inferior a la banda superior de Bollinger, se genera una señal alcista.
La estrategia tiene las siguientes ventajas:
El juicio global basado en múltiples indicadores evita señales falsas de un único indicador.
El uso del indicador RSI para juzgar las condiciones de sobrecompra y sobreventa permite establecer puntos de stop loss y take profit de antemano.
El indicador DPD puede determinar mejor las tendencias de los precios, mientras que las bandas de Bollinger pueden identificar los niveles de soporte y resistencia.
Los parámetros flexibles permiten la optimización de las diferentes existencias.
La estrategia también tiene algunos riesgos:
La combinación de múltiples indicadores hace que la estrategia sea bastante compleja con dificultad para ajustar los parámetros.
Los indicadores como DPD y RSI tienen ciertos retrasos, que pueden perder el mejor momento de entrada.
Los parámetros deben optimizarse para adaptarse a los diferentes ciclos y características de las existencias.
Se pueden optimizar los siguientes aspectos:
Ajustar los parámetros del indicador para optimizar los puntos de entrada y salida.
Añadir mecanismos de stop loss para controlar estrictamente la pérdida por operación.
Prueba con diferentes existencias y parámetros del ciclo para evaluar el rendimiento de la estrategia.
La estrategia DPD-RSI-BB combina múltiples indicadores para juicios para evitar señales falsas de un solo indicador. A través de la optimización de parámetros, puede convertirse en una estrategia de negociación de acciones relativamente fuerte.
/*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")