Esta estrategia utiliza los indicadores de impulso ADX, RSI y Bollinger Bands para determinar las tendencias del mercado y las situaciones de sobrecompra/sobreventa, con el fin de implementar operaciones automatizadas para comprar bajo y vender alto.
El indicador ADX determina la tendencia. Cuando el ADX es mayor que 32, indica un mercado en tendencia.
El indicador RSI determina los niveles de sobrecompra / sobreventa. Cuando el RSI cruza por encima de 30, indica un mercado sobreventa. Cuando el RSI cruza por debajo de 70, indica un mercado sobrecomprado.
Las bandas de Bollinger determinan la consolidación y la ruptura. Cuando el precio de cierre se rompe por encima de la banda superior, indica el final de la consolidación y la ruptura al alza. Cuando el precio de cierre se rompe por debajo de la banda inferior, indica el final de la consolidación y la ruptura a la baja.
Basándose en los indicadores anteriores, la estrategia de negociación se define de la siguiente manera:
Condición de compra:
Condición de venta:
Esta estrategia utiliza múltiples indicadores para determinar las condiciones del mercado, evitando la probabilidad de error al confiar en un solo indicador.
En comparación con el uso de indicadores de tendencia solo, esta estrategia puede capturar oportunidades a corto plazo de una manera más oportuna. En comparación con el uso de solo osciladores, esta estrategia puede comprender mejor la dirección de la tendencia. Por lo tanto, conserva la ventaja de rastrear tendencias, al tiempo que también tiene la flexibilidad de la inversión media de la negociación. Es una estrategia cuantitativa potencialmente eficiente.
Los principales riesgos de esta estrategia incluyen:
Riesgo de señales falsas de los indicadores: los indicadores pueden fallar cuando los mercados experimentan eventos extremos.
El riesgo de que las paradas sean demasiado ajustadas Las fluctuaciones del mercado a corto plazo pueden afectar la posición si las paradas son demasiado ajustadas.
Si los parámetros de los indicadores se ajustan únicamente a datos históricos, la estabilidad sería cuestionable y podría no adaptarse a la dinámica cambiante del mercado.
Medidas de gestión de riesgos:
Intervenir manualmente en condiciones de mercado anormales para detener la estrategia y evitar pérdidas por señales falsas.
Establezca una distancia de parada razonable, combinando con las medias móviles para determinar los niveles de parada, evitando ser detenido prematuramente.
Introduzca el módulo de ajuste de parámetros, optimice dinámicamente los parámetros utilizando el análisis de avanzada para garantizar la robustez.
Los principales aspectos para mejorar esta estrategia incluyen:
Optimizar los parámetros de los indicadores, utilizando algoritmos de aprendizaje automático adaptados a cada mercado.
Ingeniería de características, introduciendo más indicadores técnicos y modelos de capacitación como SVM para mejorar la precisión de la señal.
Incorporar estrategias de ruptura basadas en las características de cada mercado utilizando canales de precios, soportes/resistencias, etc. para mejorar la estabilidad.
Optimizar los mecanismos de toma de ganancias y de detención de pérdidas mediante la introducción de paradas de seguimiento, paradas de movimiento, etc., para maximizar las ganancias y controlar los riesgos de manera efectiva.
Esta estrategia de negociación cuantitativa a mediano plazo utiliza múltiples indicadores técnicos como ADX, RSI y Bollinger Bands para determinar las condiciones del mercado y realizar operaciones cuando se identifican cambios estructurales significativos. La lógica es clara e interpretable, reduciendo drásticamente la dependencia de un solo indicador. Mientras tanto, los riesgos como señales falsas, paradas demasiado ajustadas y exceso de parámetros deben abordarse a través de la gestión de riesgos y la optimización del modelo para mejorar la estabilidad y la eficiencia.
/*backtest start: 2023-11-10 00:00:00 end: 2023-12-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("DAX Shooter 5M Strategy", overlay=true) //Creo ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") th = input(title="threshold", type=input.integer, defval=20) dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : up > down and up > 0 ? up : 0 minusDM = na(down) ? na : down > up and down > 0 ? down : 0 truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) adx [plus, minus] = dirmov(dilen) sig = adx(dilen, adxlen) //Creo RSI src = close len = input(7, minval=1, title="Periodo RSI") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) bandainf = input(30, title="Livello Ipervenduto") bandasup = input(70, title="Livello Ipercomprato") //Creo Bande di Bollinger source = close length = input(50, minval=1, title="Periodo BB") mult = input(2.0, minval=0.001, maxval=50, title="Dev BB") basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev plot(basis, color=color.white) p1 = plot(upper, color=color.aqua) p2 = plot(lower, color=color.aqua) fill(p1, p2) //Stabilisco regole di ingresso if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA") else //strategy.exit("exit", "COMPRA", loss = 90) strategy.cancel(id="COMPRA") if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI") else //strategy.exit("exit", "VENDI", loss = 90) strategy.cancel(id="VENDI") //Imposto gli alert buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper alertcondition(buy, title='Segnale Acquisto', message='Compra DAX') alertcondition(sell, title='Segnale Vendita', message='Vendi DAX') //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)