Cette stratégie est un système de suivi des tendances basé sur des bougies Heikin-Ashi lissées et des croisements de moyennes mobiles simples (SMA). Elle identifie les changements de tendance à travers l'intersection des bougies Heikin-Ashi lissées par EMA avec une SMA de 44 périodes pour capturer les principales opportunités de tendance sur le marché.
La logique de base se compose de trois éléments clés: premièrement, la conversion des bougies traditionnelles en bougies Heikin-Ashi en calculant la moyenne arithmétique des prix d'ouverture, haut, bas et de fermeture pour filtrer le bruit du marché; deuxièmement, l'utilisation d'une EMA de 6 périodes pour lisser le Heikin-Ashi, améliorant encore la fiabilité du signal; enfin, la combinaison du prix de clôture Heikin-Ashi lissé avec un SMA de 44 périodes, générant des signaux longs sur les croisements ascendants et des signaux courts sur les croisements descendants.
La stratégie construit un système de trading de suivi de tendance robuste en combinant des chandeliers Heikin-Ashi avec des systèmes SMA. Elle comporte des mécanismes complets de génération de signaux et un contrôle de risque raisonnable, particulièrement adapté aux marchés présentant des caractéristiques de tendance distinctes. L'efficacité pratique de la stratégie peut être encore améliorée grâce aux directions d'optimisation suggérées.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Smoothed Heikin Ashi with SMA Strategy", overlay=true) // Input parameters for SMAs s1 = input.int(11, title="Short SMA Period") s2 = input.int(44, title="Long SMA Period") noPositionThreshold = input.float(0.001, title="No Position Threshold", step=0.0001) // Calculate the original Heikin-Ashi values haClose = (open + high + low + close) / 4 var float haOpen = na haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 haHigh = math.max(high, math.max(haOpen, haClose)) haLow = math.min(low, math.min(haOpen, haClose)) // Smoothing using exponential moving averages smoothLength = input.int(6, title="Smoothing Length") smoothedHaClose = ta.ema(haClose, smoothLength) smoothedHaOpen = ta.ema(haOpen, smoothLength) smoothedHaHigh = ta.ema(haHigh, smoothLength) smoothedHaLow = ta.ema(haLow, smoothLength) // Calculate SMAs smaShort = ta.sma(close, s1) smaLong = ta.sma(close, s2) // Plotting the smoothed Heikin-Ashi values plotcandle(smoothedHaOpen, smoothedHaHigh, smoothedHaLow, smoothedHaClose, color=(smoothedHaClose >= smoothedHaOpen ? color.green : color.red), title="Smoothed Heikin Ashi") plot(smaShort, color=color.blue, title="SMA Short") plot(smaLong, color=color.red, title="SMA Long") // Generate buy/sell signals based on SHA crossing 44 SMA longCondition = ta.crossover(smoothedHaClose, smaLong) shortCondition = ta.crossunder(smoothedHaClose, smaLong) noPositionCondition = math.abs(smoothedHaClose - smaLong) < noPositionThreshold // Strategy logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (noPositionCondition and strategy.position_size != 0) strategy.close_all("No Position") // Plot buy/sell signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) plotshape(series=noPositionCondition and strategy.position_size != 0, location=location.belowbar, color=color.yellow, style=shape.labeldown, text="EXIT", size=size.small)