
Die Strategie basiert auf einem Heikin-Ashi-Chart mit einer glatten Form und einem einfachen Moving Average (SMA) Kreuzung. Die Strategie verwendet die Heikin-Ashi-Chart mit einer EMA-Glattebehandlung, um Trendänderungen zu identifizieren und so die wichtigsten Trendchancen zu erfassen. Die Strategie hat eine dynamische Positionsverwaltung entwickelt, die automatisch platziert, wenn die Preise zu nahe von der langfristigen Durchschnittslinie entfernt sind, um das Risiko von Schwankungen auf dem gesamten Markt zu vermeiden.
Die Kernlogik der Strategie umfasst drei Schlüsselelemente: Erstens wird die traditionelle K-Linie in ein Heikin-Ashi-Diagramm umgewandelt, um Marktlärm durch Berechnung des arithmetischen Mittelwerts der vier Preise zu filtern; zweitens wird die Heikin-Ashi mit einer 6-Zyklus-EMA geschliffen, um die Reliabilität des Signals weiter zu verbessern; und schließlich wird der Heikin-Ashi-Schlusskurs nach der Schliffung mit einem 44-Zyklus-SMA kombiniert, um ein Mehr- und ein Leer-Signal zu erzeugen. Gleichzeitig wird das Konzept der “positionslosen Schwellung” eingeführt, um die Schwellungsschwellungsschwellung zu vermeiden, wenn der Preis und die langfristige Durchschnittslinie kleiner als die Schwellung sind.
Durch die Kombination des Heikin-Ashi-Diagramms und des SMA-Gleichlinien-Systems wurde ein robustes Trend-Tracking-Handelssystem aufgebaut. Die Signalgenerierungsmechanismen der Strategie sind ausgebaut, die Risikokontrolle ist vernünftig und eignet sich besonders für die Anwendung in Märkten mit deutlichen Trendmerkmalen. Durch die empfohlene Optimierungsrichtung können die praktischen Effekte der Strategie weiter verbessert werden.
/*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)