Esta estrategia combina el uso del indicador RSI para identificar las señales de sobrecompra y sobreventa, las bandas de Bollinger para determinar las rupturas de precios y los cruces medios móviles para juzgar el mercado en diferentes etapas de tendencia, con el fin de obtener ganancias.
La estrategia consta de los siguientes indicadores principales:
Indicador RSI: cuando la línea RSI cruza el umbral de sobrecompra o cruza por debajo del umbral de sobreventa, se realizan operaciones largas o cortas en consecuencia.
Bandas de Bollinger: cuando el precio rompe la banda superior de Bollinger, se realiza una operación corta; cuando el precio rompe la banda inferior de Bollinger, se realiza una operación larga.
Promedio móvil: Se calculan los precios más altos y más bajos durante un determinado período (por ejemplo, 5 períodos). Cuando el precio es superior al punto más alto durante los últimos 5 períodos, se realiza una operación larga; cuando el precio es inferior al punto más bajo durante los últimos 5 períodos, se realiza una operación corta.
MACD: El cruce y la cruz de muerte de la línea rápida, la línea lenta y la línea MACD se utilizan como indicadores de juicio auxiliares.
Estos indicadores trabajan juntos para juzgar el mercado en las etapas de tendencia y consolidación. Las bandas de Bollinger identifican las rupturas y las reversiones a la media. Los promedios móviles determinan los puntos de inversión de tendencia durante la consolidación. Los extremos del RSI detectan las condiciones de mercado sobrecompradas / sobrevendidas para las operaciones contrarias a la tendencia.
Las ventajas de esta estrategia son:
La combinación de múltiples indicadores mejora la precisión. RSI, Bandas de Bollinger, promedio móvil y más interactúan para producir señales comerciales confiables.
Se aplican a diferentes condiciones de mercado: bandas de Bollinger para tendencias, promedios móviles para consolidación, RSI para extremos.
Los parámetros de los indicadores se establecen de forma conservadora para evitar el exceso de operaciones.
Estructura de código limpia, fácil de entender, editar y construir.
Algunos riesgos requieren atención:
Los riesgos de parámetros. Los parámetros de indicadores inadecuados pueden generar señales comerciales incorrectas. Los parámetros necesitan pruebas y optimización continuas.
Los riesgos de cambio largo/corto: los cambios frecuentes de posición larga/corta en torno a inversiones de tendencia aumentan los costes de negociación.
Los riesgos de codificación. Las fallas lógicas ocultas en el código podrían conducir a transacciones anormales.
La estrategia puede actualizarse en los siguientes aspectos:
Agregue stop loss para bloquear las ganancias y reducir las pérdidas.
Incorporar el volumen de operaciones para evitar señales falsas, por ejemplo, comprobar el volumen de las rupturas de Bollinger.
Introduzca el aprendizaje automático para encontrar parámetros óptimos basados en datos históricos.
Construir una interfaz gráfica para una visualización intuitiva del rendimiento.
Realizar pruebas para encontrar las mejores combinaciones de parámetros.
Esta estrategia combina promedios móviles, bandas de Bollinger, RSI y más para generar señales comerciales. Su versatilidad y precisión son claros puntos fuertes, mientras que la configuración de parámetros y los riesgos de codificación deben gestionarse.
/*backtest start: 2024-01-19 00:00:00 end: 2024-02-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MD strategy", overlay=true) lengthrsi = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close source = close lengthbb = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) direction = input(0, title = "Strategy Direction",minval=-1, maxval=1) fastLength = input(12) slowlength = input(26) MACDLength = input(9) consecutiveBarsUp = input(3) consecutiveBarsDown = input(3) lengthch = input( minval=1, maxval=1000, defval=5) upBound = highest(high, lengthch) downBound = lowest(low, lengthch) ups = price > price[1] ? nz(ups[1]) + 1 : 0 dns = price < price[1] ? nz(dns[1]) + 1 : 0 MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) basis = sma(source, lengthbb) dev = mult * stdev(source, lengthbb) upper = basis + dev lower = basis - dev vrsi = rsi(price, lengthrsi) if (not na(vrsi)) if (crossover(vrsi, overSold)) strategy.entry("RsiLE", strategy.long, comment="RsiLE") if (crossunder(vrsi, overBought)) strategy.entry("RsiSE", strategy.short, comment="RsiSE") if (crossover(source, lower)) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") if (not na(close[lengthch])) strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE") strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)