
La estrategia de cruce de tendencias de media móvil de cero retardo es un sistema de seguimiento de tendencias basado en promedios móviles mejorados. El núcleo de la estrategia es utilizar la relación de cruce entre la media móvil de cero retardo (ZLMA) y la media móvil de índices tradicionales (EMA) para identificar los puntos de cambio de tendencia del mercado, para capturar tendencias al alza y evitar tendencias a la baja.
El principio técnico de la estrategia se basa en soluciones innovadoras para el problema de la latencia de las medias móviles tradicionales. Su proceso de cálculo central es el siguiente:
La introducción de un factor de corrección es una innovación clave de la estrategia, que permite a la ZLMA final seguir más de cerca los movimientos de precios, compensando la latencia de la EMA y reduciendo la reacción tardía de las medias móviles tradicionales en los puntos de inflexión de tendencias.
La lógica de generación de señales comerciales es la siguiente:
A partir de un análisis profundo del código de la estrategia, se pueden resumir las siguientes ventajas evidentes:
A pesar de las ventajas de esta estrategia, existen algunos riesgos notables:
Basado en un análisis en profundidad del código, la estrategia puede ser optimizada en las siguientes direcciones:
La idea central de la optimización es aumentar la adaptabilidad y la robustez de las estrategias para que puedan mantener un rendimiento relativamente estable en diferentes entornos de mercado.
La estrategia de cruce de tendencias de promedio móvil de demora cero ofrece un marco conciso y eficaz para el seguimiento de tendencias mediante la solución innovadora de la demora de las promedios móviles tradicionales. La estrategia utiliza la relación cruzada de ZLMA con EMA para capturar los puntos de inflexión de la tendencia, en combinación con el riesgo de gestión de la posición automática, y es adecuada para los comerciantes que buscan ventajas de seguimiento de tendencias al mismo tiempo que desean reducir el atraso de las promedios móviles tradicionales.
Aunque la estrategia es sencilla y fácil de usar en su diseño, la aplicación práctica aún debe considerar factores como la adaptabilidad al entorno del mercado, la optimización de los parámetros y la gestión del riesgo. A través de la dirección de optimización recomendada, se puede mejorar aún más la solidez y la adaptabilidad de la estrategia para que pueda mantener un rendimiento relativamente estable en diferentes condiciones de mercado.
/*backtest
start: 2024-03-06 00:00:00
end: 2025-03-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ChartPrime
//@version=5
strategy("Zero-Lag MA Trend Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 10)
// --------------------------------------------------------------------------------------------------------------------}
// 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎
// --------------------------------------------------------------------------------------------------------------------{
int length = input.int(15, title="Length") // Length for moving averages
// Colors for visualization
color up = input.color(#30d453, "+", group = "Colors", inline = "i")
color dn = input.color(#4043f1, "-", group = "Colors", inline = "i")
// --------------------------------------------------------------------------------------------------------------------}
// 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎
// --------------------------------------------------------------------------------------------------------------------{
emaValue = ta.ema(close, length) // EMA
correction = close + (close - emaValue) // Correction factor
zlma = ta.ema(correction, length) // Zero-Lag Moving Average (ZLMA)
// Entry signals
longSignal = ta.crossover(zlma, emaValue) // Bullish crossover
shortSignal = ta.crossunder(zlma, emaValue) // Bearish crossunder
// Close positions before the market closes
var int marketCloseHour = 15
var int marketCloseMinute = 45
timeToClose = hour == marketCloseHour and minute >= marketCloseMinute
// --------------------------------------------------------------------------------------------------------------------}
// 𝙏𝙍𝘼𝘿𝙀 𝙀𝙓𝙀𝘾𝙐𝙏𝙄𝙊𝙉
// --------------------------------------------------------------------------------------------------------------------{
if longSignal
strategy.entry("Long", strategy.long)
if shortSignal
strategy.close("Long")
if timeToClose
strategy.close_all("EOD Exit")
// --------------------------------------------------------------------------------------------------------------------}
// 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉
// --------------------------------------------------------------------------------------------------------------------{
// Plot the Zero-Lag Moving Average and EMA
plot(zlma, color = zlma > zlma[3] ? up : dn, linewidth = 2, title = "ZLMA")
plot(emaValue, color = emaValue < zlma ? up : dn, linewidth = 2, title = "EMA")
// Mark trade entries with shapes
plotshape(series=longSignal, location=location.belowbar, color=up, style=shape.labelup, title="Buy Signal")
plotshape(series=shortSignal, location=location.abovebar, color=dn, style=shape.labeldown, title="Sell Signal")