Esta estrategia utiliza la técnica de velas Heikin-Ashi combinada con señales de cruce de promedio móvil e indicador MACD para la filtración para construir una estrategia de seguimiento de tendencias.
La estrategia se basa principalmente en tres indicadores técnicos principales:
Heikin-Ashi Candlesticks: modifica el precio de cierre para construir barras de candlesticks
Promedio móvil exponencial (EMA). La EMA rápida captura tendencias a corto plazo mientras que la EMA lenta juzga las direcciones de tendencia a largo plazo. Se genera una señal de compra cuando la EMA rápida cruza por encima de la EMA lenta; Una señal de venta se genera cuando la EMA rápida cruza por debajo de la EMA lenta.
Indicador MACD. Combina EMAs rápidas y lentas. Cuando la línea MACD está por encima de la línea de señal, es una señal alcista; cuando está por debajo, es una señal bajista.
Las señales comerciales de esta estrategia provienen de la cruz dorada/muerta de las EMA rápidas y lentas. Para filtrar las señales falsas, se introduce el indicador MACD para el juicio auxiliar. Solo cuando el MACD emite una señal que se alinea con el cruce de la EMA se activará la señal comercial final, lo que reduce en gran medida la probabilidad de operaciones incorrectas.
Específicamente, cuando la EMA rápida cruza por encima de la EMA lenta (cruz dorada) y la línea MACD supera la línea de señal (señal alcista) simultáneamente, se genera una señal de compra; cuando la EMA rápida cruza por debajo de la EMA lenta (cruz muerta) y la línea MACD pasa por debajo de la línea de señal (señal bajista) al mismo tiempo, se genera una señal de venta.
Esta combinación de cruce de medias móviles y filtración MACD puede identificar eficazmente los puntos de inflexión clave en el mercado y capturar las tendencias de precios en consecuencia.
La estrategia tiene las siguientes ventajas destacadas:
Mejor probabilidad de captura de señales de tendencia. La técnica Heikin-Ashi ofrece un juicio de tendencia más claro, mientras que la fuerza de las señales de cruce de las dos EMA también es poderosa. La confiabilidad es aún mayor después de integrar el filtro MACD.
El MACD, que sirve como indicador auxiliar, puede mitigar los riesgos de stop-loss hasta cierto punto y reducir eficazmente las pérdidas de liquidación no deseadas.
Los periodos de las velas Heikin-Ashi, las EMA rápidas/lentas del sistema de medias móviles, los parámetros del MACD, etc. pueden ajustarse en función de las condiciones del mercado para hacer que la estrategia sea más adaptable.
Utilizando velas Heikin-Ashi para indicar precios y ayudado con indicadores comunes para la determinación, es fácil de programar, con códigos limpios y concisos que son intuitivos de entender.
Una mayor eficiencia en el uso del capital: al seguir la tendencia, la mayoría de las veces la estrategia puede alinear los movimientos de capital con la dirección principal del mercado y generar rendimientos de manera más efectiva.
La estrategia también presenta los siguientes riesgos potenciales:
Cuando los precios difieren significativamente o se invierten rápidamente en el corto plazo, las medidas de stop loss podrían fallar, incurriendo en pérdidas mucho más altas de lo esperado.
Posibilidades de error de juicio del MACD. El MACD como indicador auxiliar también puede hacer llamadas erróneas, lo que resulta en que la estrategia establezca o cierre posiciones erróneamente.
Configuración de parámetros inflexibles: es posible que las combinaciones de parámetros fijos no se adapten al mercado en constante cambio, perdiendo así buenas oportunidades comerciales.
Los métodos de seguimiento de tendencias podrían inducir a operaciones frecuentes, aumentando los costes y las pérdidas por deslizamiento.
Para mitigar y reducir los riesgos mencionados anteriormente, pueden adoptarse las siguientes medidas:
Establezca puntos de stop-loss para limitar las pérdidas en operaciones individuales.
Ajustar los parámetros MACD para disminuir las probabilidades de señal incorrecta.
Construir mecanismos de optimización de parámetros, emplear aprendizaje automático, etc. para ajustar automáticamente las combinaciones de parámetros para una mayor adaptabilidad.
Relajar adecuadamente las condiciones de activación de las señales de negociación para reducir la frecuencia de negociación o establecer umbrales mínimos de cambio de precio.
Un gran potencial reside en una mayor optimización de la estrategia, que incluye:
Optimice las duraciones de las velas Heikin-Ashi. Pruebe períodos más largos o más cortos para encontrar los que mejor muestran las tendencias del mercado.
Ajustar los parámetros del sistema de medias móviles Modificar los períodos de las EMA rápidas / lentas para descubrir conjuntos óptimos de parámetros.
Optimización de múltiples parámetros del MACD. Ajuste fino de los parámetros de las EMA rápidas / lentas y la línea de señal del MACD para localizar configuraciones superiores.
Reforzar los módulos de gestión de riesgos, elaborar reglas más científicas de stop-loss/take-profit, integrar el tamaño de las posiciones, la gestión de capital, etc.
Añadir otros indicadores como KD, RSI para la confirmación de múltiples factores, mejorando la calidad de la señal.
Emplear técnicas de aprendizaje automático. Aprovechar las redes neuronales, algoritmos genéticos, etc. para optimizar en tiempo real los parámetros de estrategia para una mayor adaptabilidad.
Con combinaciones iterativas de indicadores técnicos, optimizaciones continuas de parámetros, módulos de control de riesgos más fuertes, etc., se puede esperar un aumento significativo del rendimiento de la estrategia para una rentabilidad más estable y eficiente.
Esta estrategia captura las tendencias del mercado mediante la combinación de velas Heikin-Ashi y cruces de promedios móviles, ayudados por la filtración MACD para detectar puntos de inflexión y señales comerciales de alta confiabilidad. Los resultados de las pruebas de retroceso son sobresalientes, con ventajas como alta probabilidad de ganar, bajas reducciones, alta capacidad de ajuste. Mientras tanto, el control de riesgos también necesita atención a los impactos de cobertura de movimientos extremos del mercado. Con mejoras y optimización continuas, la estrategia demuestra un gran potencial como una estrategia de negociación cuantitativa altamente efectiva.
/*backtest start: 2022-12-26 00:00:00 end: 2024-01-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Heikin Ashi Strategy V1 by nachobuey strategy("Heikin Ashi Strategy V2",shorttitle="HAS V2",overlay=true) res = input(title="Heikin Ashi Candle Time Frame", defval="15") hshift = input(0,title="Heikin Ashi Candle Time Frame Shift") //res1 = input(title="Heikin Ashi EMA Time Frame", type=resolution, defval="180") res1 = input(title="Time frame (Minutes. Not lower than chart)",defval="300") mhshift = input(0,title="Heikin Ashi EMA Time Frame Shift") fama = input(16,"Heikin Ashi EMA Period") test = input(0,"Heikin Ashi EMA Shift") sloma = input(21,"Slow EMA Period") slomas = input(0,"Slow EMA Shift") macdf = input(false,title="With MACD filter") res2 = input(title="MACD Time Frame", defval="60") macds = input(1,title="MACD Shift") //Heikin Ashi Open/Close Price ha_t = heikinashi(syminfo.tickerid) ha_open = request.security(ha_t, res, open[hshift]) ha_close = request.security(ha_t, res, close[hshift]) mha_close = request.security(ha_t, res1, close[mhshift]) //macd [macdLine, signalLine, histLine] = macd(close, 12, 26, 9) macdl = request.security(ha_t,res2,macdLine[macds]) macdsl= request.security(ha_t,res2,signalLine[macds]) //Moving Average fma = ema(mha_close[test],fama) sma = ema(ha_close[slomas],sloma) plot(fma,title="MA",color=lime,linewidth=2,style=line) plot(sma,title="SMA",color=red,linewidth=2,style=line) //Strategy golong = crossover(fma,sma) and (macdl > macdsl or macdf == false ) goshort = crossunder(fma,sma) and (macdl < macdsl or macdf == false ) strategy.entry("Long",strategy.long,when = golong) strategy.entry("Short",strategy.short,when = goshort) plotchar(golong,char="L", color=green) plotchar(goshort,char="S", color=red) alertcondition(golong, "HAS GO LONG", "OPEN LONG") alertcondition(goshort, "HAS GO SHORT", "OPEN SHORT")