
La stratégie de croisement de tendance des moyennes mobiles à zéro décalage est un système de suivi des tendances basé sur des moyennes mobiles améliorées. Le cœur de la stratégie est d’utiliser la relation croisée entre les moyennes mobiles à zéro décalage (ZLMA) et les moyennes mobiles traditionnelles (EMA) pour identifier les points de changement de tendance du marché, afin de capturer les tendances à la hausse et d’éviter les tendances à la baisse.
Les principes techniques de cette stratégie sont basés sur des solutions innovantes aux problèmes de latence des moyennes mobiles traditionnelles. Son processus de calcul central est le suivant:
L’introduction d’un facteur de correction est une innovation clé de la stratégie, qui permet à la ZLMA finale de suivre plus étroitement les variations de prix en compensant les caractéristiques de retard de l’EMA, réduisant ainsi la réaction retardée des moyennes mobiles traditionnelles aux points de basculement de la tendance.
La logique de génération de signaux de trading est la suivante :
L’analyse approfondie du code stratégique permet de dégager les avantages évidents suivants:
Bien que cette stratégie présente de nombreux avantages, il y a quelques risques à prendre en compte:
Cette stratégie, basée sur une analyse approfondie du code, peut être optimisée dans les directions suivantes:
L’idée centrale de l’optimisation est d’augmenter l’adaptabilité et la robustesse des stratégies, leur permettant de maintenir une performance relativement stable dans différents environnements de marché.
La stratégie de croisement de tendance des moyennes mobiles à zéro retard offre un cadre simple et efficace pour les transactions de suivi de tendance en résolvant de manière innovante les problèmes de retard des moyennes mobiles traditionnelles. La stratégie utilise la relation croisée de ZLMA et d’EMA pour capturer les points de basculement de tendance, combinée à la gestion des risques du mécanisme de placement automatique, pour les traders qui recherchent des avantages de suivi de tendance tout en souhaitant réduire le retard des moyennes mobiles traditionnelles.
Bien que la stratégie soit simple et facile à utiliser, elle doit être adaptée à l’environnement du marché, à l’optimisation des paramètres et à la gestion des risques. La direction d’optimisation proposée peut améliorer encore la robustesse et l’adaptabilité de la stratégie, ce qui lui permet de maintenir une performance relativement stable dans différentes conditions de marché.
/*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")