
Esta estrategia combina la línea media y el indicador MACD para determinar la tendencia y emitir señales de negociación, y es una estrategia típica de seguimiento de tendencias. Utiliza la línea media ZLSMA de dos períodos diferentes para determinar la dirección de la tendencia, y luego se combina con el cruce de líneas blancas del indicador MACD para emitir señales de compra y venta específicas, que pueden capturar eficazmente las tendencias de la línea media y larga y evitar ser engañados por el ruido del mercado a corto plazo.
La estrategia se compone principalmente de las siguientes partes:
ZLSMA promedio rápido y ZLSMA promedio lento: para determinar la dirección de la tendencia general mediante la comparación de los promedios ZLSMA de diferentes períodos. 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.
Indicador MACD: la línea rápida ((EMA del día 12) menos la línea lenta ((EMA del día 26) obtiene el MACD de diferenciación, y luego la línea de señal con la EMA del día 9; cuando la línea de señal cruza por encima de la MACD, es una señal de compra, y cuando la línea de señal cruza por debajo es una señal de venta.
Señales de negociación: solo se emiten señales de compra o venta cuando la forma ZLSMA y la señal MACD están en sincronía. Es decir, la tendencia de más cabeza más el tenedor de oro de MACD se compra, la tendencia de cabeza vacía más el tenedor de muerto de MACD se vende.
Detener la pérdida: La estrategia no se ha incorporado a la lógica de detener la pérdida y se necesita una optimización posterior.
La combinación anterior utiliza la línea media para determinar la tendencia general, el MACD para determinar el momento de entrada, y puede filtrar eficazmente las falsas rupturas para evitar ser engañados por el ruido del mercado a corto plazo.
La estrategia tiene las siguientes ventajas:
Captura de tendencias: la dirección de la tendencia se determina mediante la combinación de diferentes líneas medias periódicas, lo que permite capturar efectivamente las tendencias de línea media y larga.
Filtración de ruido: La aplicación del indicador MACD puede filtrar el ruido del mercado a corto plazo y evitar ser engañado por las oscilaciones de menor alcance.
Parámetros ajustables: el ciclo de la línea media y los parámetros MACD pueden ser personalizados y optimizados para diferentes mercados.
Facilidad de implementación: los indicadores son indicadores técnicos de uso común, la lógica de la combinación es simple y clara, fácil de entender e implementar.
El riesgo es controlado: hay una clara estrategia de stop loss y stop loss para controlar el riesgo y la ganancia de cada operación.
La estrategia también tiene los siguientes riesgos:
Error en la dirección de la tendencia: Si se hace un error en la dirección de la tendencia, todas las transacciones pueden perder.
Optimización incorrecta de los parámetros: los parámetros de la línea media y los parámetros MACD deben ser probados y optimizados en detalle, de lo contrario, el resultado puede ser ineficaz.
La falta de un mecanismo de detención de pérdidas: no hay un punto de detención de pérdidas establecido en la actualidad y existe un riesgo de pérdidas excesivas.
Espacio de ganancias limitado: Como estrategia de seguimiento de tendencias, el espacio de ganancias por cada operación es limitado y se necesita una cantidad para obtener mayores ganancias.
Frecuencia de transacción excesiva: la configuración incorrecta de los parámetros puede causar una frecuencia de transacción excesiva, aumentando los costos de transacción y los costos de los puntos de deslizamiento.
La estrategia puede ser optimizada en los siguientes aspectos:
Incorporar un mecanismo de stop loss: establecer un punto de stop loss razonable y controlar rigurosamente la pérdida máxima de una sola transacción.
Parámetros de optimización: encontrar la combinación óptima de la línea media y los parámetros MACD mediante el retroceso y la optimización.
Reducir la frecuencia de las operaciones: ajustar los parámetros para garantizar que las señales de operaciones se emitan solo cuando la tendencia es más evidente.
Combinación con otros factores: Se pueden agregar otros factores como el cambio en el volumen de transacciones para confirmar tendencias y señales.
Optimizar el tiempo de ingreso: optimizar aún más la aplicación de los indicadores MACD para mejorar la precisión de la admisión.
Generalidad de variedades: Optimización de parámetros para que las estrategias se puedan aplicar ampliamente a diferentes variedades, ampliando el alcance de aplicación.
En general, la estrategia capta las tendencias de las líneas medias y largas a través de una combinación simple y efectiva de indicadores de medias y MACD, lo que puede ser una estrategia básica para el comercio cuantitativo. Sin embargo, aún se necesitan parámetros de optimización adicional, control de riesgos y combinación con otros factores para lograr un efecto de negociación más estable. Tiene cierto valor en el terreno y espacio para la expansión.
/*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)