Esta estrategia combina los promedios móviles y el indicador MACD para determinar tendencias y generar señales comerciales. Pertenece a una estrategia típica de seguimiento de tendencias. Utiliza dos promedios móviles ZLSMA de diferentes marcos de tiempo para determinar la dirección de la tendencia y un cruce MACD para generar señales específicas de compra y venta. Esto le permite capturar de manera efectiva las tendencias a medio y largo plazo, evitando ser engañado por el ruido del mercado a corto plazo.
La estrategia consta de los siguientes componentes principales:
ZLSMA rápido y ZLSMA lento: La comparación de los promedios móviles de ZLSMA de diferentes marcos de tiempo determina la dirección general de la tendencia. La línea rápida se compone de ZLSMA de 32 períodos, y la línea lenta se compone de ZLSMA de 400 períodos. Cuando la línea rápida cruza por encima de la línea lenta, es una señal alcista, y viceversa.
Indicador MACD: se calcula restando la línea lenta (EMA de 26 períodos) de la línea rápida (EMA de 12 períodos). La línea de señal es una EMA de 9 períodos del MACD. Cuando el MACD cruza por encima de la línea de señal, es una señal de compra, y cuando el MACD cruza por debajo de la línea de señal, es una señal de venta.
Las señales de compra y venta se generan solo cuando la dirección de la tendencia ZLSMA se alinea con las señales de cruce del MACD.
Stop loss y take profit: la estrategia actualmente no incluye la lógica de stop loss y take profit, que necesita una mayor optimización.
La combinación de utilizar medias móviles para determinar la tendencia principal y MACD para cronometrar la entrada puede filtrar eficazmente las fallas y evitar ser engañado por el ruido del mercado a corto plazo.
Las principales ventajas de esta estrategia son las siguientes:
Captura de tendencias: el uso de promedios móviles de diferentes marcos de tiempo para determinar la dirección de la tendencia permite operar con la tendencia y capturar las tendencias a medio y largo plazo de manera efectiva.
Filtración del ruido: la aplicación del indicador MACD ayuda a filtrar el ruido del mercado a corto plazo y evitar ser engañado por mercados de pequeños rangos.
Parámetros personalizables: los períodos de media móvil y los parámetros MACD son personalizables y pueden optimizarse para diferentes mercados.
Fácil de aplicar: todos los indicadores utilizados son indicadores técnicos comunes.
Riesgo controlable: con un stop loss y take profit claros, el riesgo y la recompensa de cada operación se pueden controlar.
Los principales riesgos de esta estrategia son:
Determinación errónea de la tendencia: Si la tendencia principal se determina incorrectamente, todas las operaciones pueden resultar en pérdidas.
Optimización inadecuada de los parámetros: Los parámetros de la media móvil y el MACD deben probarse y optimizarse a fondo, de lo contrario los resultados pueden ser insatisfactorios.
No hay un stop loss: actualmente no existe un stop loss, lo que plantea el riesgo de pérdidas de gran tamaño.
Potencial de ganancias limitado: como una tendencia que sigue la estrategia, el potencial de ganancias de cada comercio es limitado, lo que requiere un gran volumen para aumentar la rentabilidad.
Frecuencia de negociación alta: la ajuste inadecuado de los parámetros puede dar lugar a una frecuencia de negociación excesiva, aumentando los costes de transacción y el deslizamiento.
La estrategia se puede optimizar aún más en los siguientes aspectos:
Agregue un mecanismo de stop loss: Establezca los puntos de stop loss adecuados para controlar estrictamente la pérdida máxima por operación.
Optimizar parámetros: hacer pruebas de retroceso y optimizar para encontrar la combinación óptima de promedio móvil y parámetros MACD.
Menor frecuencia de negociación: ajustar los parámetros para garantizar que las señales de negociación solo se generen cuando la tendencia es pronunciada.
Incorporar otros factores: Se pueden añadir factores como cambios de volumen para confirmar la tendencia y las señales.
Mejorar el tiempo de entrada: Mejorar aún más el uso del MACD para aumentar la precisión de entrada.
Hacer que sea universalmente aplicable: optimizar los parámetros para hacer que la estrategia sea ampliamente aplicable en diferentes productos, ampliando la aplicabilidad.
En conclusión, esta estrategia captura efectivamente las tendencias a medio y largo plazo a través de una combinación simple pero efectiva de promedios móviles y MACD, lo que la convierte en una sólida base de estrategia comercial cuantitativa.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-10 05:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © veryfid //@version=5 strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false) source = close useCurrentRes = input(true, title="Use Current Chart Resolution?") smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below") sd = input(true, title="Show Dots When MacD Crosses Signal Line?") sh = input(true, title="Show Histogram?") macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?") hist_colorChange = input(true,title="MacD Histogram 4 Colors?") //res = useCurrentRes ? period : resCustom fastLength = input(12), slowLength=input(26) signalLength=input(9) fastMA = ta.ema(source, fastLength) slowMA = ta.ema(source, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) hist = macd - signal outMacD = macd outSignal = signal outHist = hist histA_IsUp = outHist > outHist[1] and outHist > 0 histA_IsDown = outHist < outHist[1] and outHist > 0 histB_IsDown = outHist < outHist[1] and outHist <= 0 histB_IsUp = outHist > outHist[1] and outHist <= 0 //MacD Color Definitions macd_IsAbove = outMacD >= outSignal macd_IsBelow = outMacD < outSignal //plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red //signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime circleYPosition = outSignal //plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4) //plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2) //plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4) plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color) hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white) // Paramètres de la ZLSMA length = input(32, title="Longueur") offset = input(0, title="Décalage") src = input(close, title="Source") lsma = ta.linreg(src, length, offset) lsma2 = ta.linreg(lsma, length, offset) eq = lsma - lsma2 zlsma = lsma + eq length_slow = input(400, title="Longueur") offset_slow = input(0, title="Décalage") lsma_slow = ta.linreg(src, length_slow, offset_slow) lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow) eq_slow = lsma_slow - lsma2_slow zlsma_slow = lsma_slow + eq_slow // Paramètres de la sensibilité sensitivity = input(0.5, title="Sensibilité") // Règles de trading longCondition = zlsma < zlsma_slow and zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut shortCondition = zlsma > zlsma_slow and zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas // Entrée en position strategy.entry("Achat", strategy.long, when=longCondition) strategy.entry("Vente", strategy.short, when=shortCondition) botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0 plot(botifySignalZLSMA, title='Botify_signal', display=display.none) // Sortie de position strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position // Tracé de la courbe ZLSMA plot(zlsma, color=color.yellow, linewidth=3) plot(zlsma_slow, color=color.red, linewidth=3)