
Die Strategie ist ein Trend-Tracking-System, das auf mehreren Ebenen von Moving Averages (SMA) basiert, kombiniert mit einer präzisen Split-Cross-Detection-Technologie. Es bestimmt Markttrends durch die hierarchische Beziehung von 20, 50, 100 und 200 Perioden von Moving Averages und verwendet die Kreuzung von Echtzeit-Preisen und Moving Averages, um Handelssignale auszulösen. Die Strategie ist so konzipiert, dass sie die Allgemeingültigkeit von verschiedenen Zeitzonen und Handelszeiten berücksichtigt und auf verschiedenen Zeitperioden funktioniert.
Die Strategie verwendet eine dreistufige Trendfiltermechanismus, der die 50-Zyklus-Durchschnittslinie über der 100-Zyklus-Durchschnittslinie und die 100-Zyklus-Durchschnittslinie über der 200-Zyklus-Durchschnittslinie erfordert, um einen Aufwärtstrend zu bestätigen, und umgekehrt einen Abwärtstrend zu bestätigen. Das Eintrittssignal basiert auf der Kreuzung des Preises mit der 50-Zyklus-Durchschnittslinie und ermöglicht eine genaue Kreuzungserkennung mithilfe von Splitterdaten, um den Zeitpunkt der Kreuzung zu bestimmen, indem das aktuelle Preisverhalten mit der Position der vorherigen K-Linie verglichen wird. Das Ausstiegssignal wird von der Beziehung des Preises zur 20-Zyklus-Durchschnittslinie bestimmt und löst ein Plateau-Signal aus, wenn der Preis die 20-Zyklus-Durchschnittszeitlinie durchbricht.
Es handelt sich um eine strukturierte, logisch klare Trendverfolgungsstrategie, die durch die kombinierte Verwendung von mehreren Ebenen von Moving Averages sowohl die Zuverlässigkeit der Signale als auch die effektive Verfolgung der Trends gewährleistet. Die Strategie wurde mit voller Berücksichtigung der Praktikabilität und Allgemeingültigkeit entwickelt und ist für den Einsatz in verschiedenen Marktumgebungen geeignet. Durch weitere Optimierung und Vervollkommnung wird die Strategie in der Lage sein, besser in der Praxis zu handeln.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-06-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-SMA Strategy - Core Signals", overlay=true)
// ———— Universal Inputs ———— //
int smaPeriod1 = input(20, "Fast SMA")
int smaPeriod2 = input(50, "Medium SMA")
bool useTickCross = input(true, "Use Tick-Precise Crosses")
// ———— Timezone-Neutral Calculations ———— //
sma20 = ta.sma(close, smaPeriod1)
sma50 = ta.sma(close, smaPeriod2)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)
// ———— Tick-Precise Cross Detection ———— //
golden_cross = useTickCross ?
(high >= sma50 and low[1] < sma50[1]) :
ta.crossover(sma20, sma50)
death_cross = useTickCross ?
(low <= sma50 and high[1] > sma50[1]) :
ta.crossunder(sma20, sma50)
// ———— Trend Filter ———— //
uptrend = sma50 > sma100 and sma100 > sma200
downtrend = sma50 < sma100 and sma100 < sma200
// ———— Entry Conditions ———— //
longCondition = golden_cross and uptrend
shortCondition = death_cross and downtrend
// ———— Exit Conditions ———— //
exitLong = ta.crossunder(low, sma20)
exitShort = ta.crossover(high, sma20)
// ———— Strategy Execution ———— //
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Long", when=exitLong)
strategy.close("Short", when=exitShort)
// ———— Clean Visualization ———— //
plot(sma20, "20 SMA", color.new(color.blue, 0))
plot(sma50, "50 SMA", color.new(color.red, 0))
plot(sma100, "100 SMA", color.new(#B000B0, 0), linewidth=2)
plot(sma200, "200 SMA", color.new(color.green, 0), linewidth=2)
// ———— Signal Markers ———— //
plotshape(longCondition, "Long Entry", shape.triangleup, location.belowbar, color.green, 0)
plotshape(shortCondition, "Short Entry", shape.triangledown, location.abovebar, color.red, 0)
plotshape(exitLong, "Long Exit", shape.xcross, location.abovebar, color.blue, 0)
plotshape(exitShort, "Short Exit", shape.xcross, location.belowbar, color.orange, 0)