
Die Dynamische Supertrend Moving Average Cross Quantified Trading Strategie ist ein Handelssystem, das den Supertrend und den Moving Average kombiniert. Es wird hauptsächlich für den Handel auf dem Forex-Markt im Zeitfenster von 1 bis 4 Stunden verwendet. Die Strategie nutzt die Kreuzung von Preisen und Moving Averages als Anfangssignale und baut dann eine vollständige Eintritts-, Stop-Loss- und Stop-Stop-System auf, um die Trendwende zu erfassen und die automatisierte Verwaltung der Gelder durch ein vorgegebenes Risiko-Rendite-Verhältnis zu ermöglichen.
Die Kernprinzipien der Strategie basieren auf einem Trend-Tracking-System mit mehreren Bestätigungen, das folgende Schlüsselkomponenten umfasst:
Moving-Average-KreuzsignaleDie Strategie verwendet einen einfachen Moving Average (SMA) mit 20 Perioden als Basislinie. Die Überschreitung dieses Moving Average wird als potenzieller Trendwechselsignal angesehen. Das System unterstützt zwei Crossover-Modi: Schließungskurs-Crossover (mehr konservativ) oder Hoch-Low-Crossover (mehr aggressiv).
Überschwänglichkeit bestätigt.: Der Überschwemmungsindikator mit einem Faktor von 2.8 (verstellbar zwischen 2.0 und 3.5) und 10 Perioden (verstellbar zwischen 5 und 20) wird als Bestätigungswerkzeug für die Trendrichtung verwendet. Der Überschwemmungsindikator zeigt bei grünen Farben einen Aufwärtstrend an, bei roten Farben einen Abwärtstrend.
Eingangslogik:
Risikomanagementsysteme:
MehrfachbestätigungDurch die Kombination von Moving Averages und Superpower Indicators reduziert die Doppelbestätigung die Anzahl der Falschsignale und erhöht die Handelsgenauigkeit. In trendigen Märkten filtert die Doppelbestätigung die falschen Signale aus den Schwankungen.
AnpassungsfähigkeitDie Strategieparameter sind sehr anpassungsfähig, einschließlich der Moving Average-Periode, der Überschwänglichkeitsindikatormultiplikation und der ATR-Periode. Dies ermöglicht eine optimierte Anpassung der Strategie an unterschiedliche Marktbedingungen und Volatilität. Insbesondere der Anpassungsbereich von 2,5 bis 3,2 der Überschwänglichkeitsindikatormultiplikation ist an unterschiedliche Marktbedingungen mit unterschiedlichen Schwankungen angepasst.
Gutes RisikomanagementDie Einrichtung eines dynamischen Stop-Loss-Systems auf der Basis von ATR sorgt dafür, dass das Risiko für jeden Handel innerhalb des vorgegebenen Rahmens kontrolliert wird. Die Festsetzung des Risikos / Renditeverhältnisses (RRR) in 3: 1 trägt zur Errichtung langfristiger Profitabilität bei.
Fluktuative AnpassungStrategie: Die Strategie passt die Stop-Loss- und Gewinnziele automatisch an die Veränderungen der Marktvolatilität an, indem sie die ATR-Indikatoren verwendet. Ein breiterer Stop-Loss wird in hoch-volatilen Märkten gesetzt und ein entsprechend engerer in niedrig-volatilen Märkten.
Moderate HandelsfrequenzDie Strategie verringert die Transaktionskosten und die Gefahr von Übertransaktionen durch die Verwendung von mehrfachen Bestätigungsmechanismen.
Trendwende, verspätete ErkennungAls Trend-Tracking-Strategie kann es zu Problemen mit der Verzögerung der Erkennung in den frühen Phasen des Trendwechsels kommen, was dazu führt, dass der Einstiegspunkt nicht optimal genug ist. Die Lösung besteht darin, die Hinzufügung eines empfindlicheren frühen Signalindikators als Hilfsmittel zu betrachten.
Schwache MarktentwicklungDie Strategie kann zu einem Verlust von mehreren Geschäften führen. Es wird empfohlen, die Strategie auszuhalten oder zu einem anderen Satz von Parametern zu wechseln, die speziell für den Schockmarkt entwickelt wurden, wenn ein Schockmarkt erkannt wird.
ParameterempfindlichkeitKleine Veränderungen in der Multiplikation der Hypermargin-Indikatoren können erhebliche Auswirkungen auf die Strategie-Performance haben. Die Einstellung der Parameter, die für bestimmte Handelsarten und Zeitrahmen am besten geeignet sind, muss durch Rückmeldung ermittelt werden.
Falsche DurchbruchgefahrWenn der Kurs kurz nach dem Durchschreiten des Moving Averages zurückfällt, wird ein falsches Signal ausgelöst. Es kann in Betracht gezogen werden, eine Bestätigungsfrist oder eine Bestätigung der Preisbewegung hinzuzufügen, um den Verlust durch falsche Durchbrüche zu verringern.
Abhängigkeit vom MarktumfeldEs wird empfohlen, die Parameter je nach Handelszeit anzupassen oder die Strategie selektiv zu einem bestimmten Zeitpunkt zu aktivieren.
Einführung eines ZeitfiltersDer Code kann so optimiert werden, dass er einen Zeit-Filter enthält, der nur dann ausgeführt wird, wenn die London- und New York-Handelszeiten aktiv sind. Dies kann durch das Hinzufügen von zeitbedingter Logik erreicht werden, um die niedrigeren Liquiditätsbedingungen zu vermeiden.
Dynamische Überspannungsfaktor-AnpassungDie Strategie verwendet derzeit eine festgelegte Überschwänglichkeitszahl, die als dynamische Parameter optimiert werden kann, die sich automatisch an die Marktvolatilität anpassen. Zum Beispiel werden höhere Multiplikationswerte ((3.0-3.2) bei hoher Volatilität und niedrigere Werte ((2.5-2.7) bei niedrigerer Volatilität verwendet.
Optimierung der KreuzbestätigungsmechanismenBerücksichtigen Sie, dass der Zusatzpreis eine Bestätigungsmechanik benötigt, um eine bestimmte Zeit oder einen bestimmten Abstand über / unter dem Moving Average zu bleiben, um falsche Durchbrüche zu verringern. Es kann verlangt werden, dass der Preis innerhalb von N Kreuzungszyklen in der gleichen Richtung bleibt.
Integrierte Analyse der MarktstrukturDie Einführung von Unterstützungs- oder Preisstrukturanalysen zur Verbesserung der Einstiegsqualität. Es können Kreuzungen berücksichtigt werden, die nur in der Nähe der Hauptunterstützungs- oder Widerstandslage auftreten.
Anpassung des RisikomanagementsDie aktuelle Rendite-Risiko-Relation ist fest und kann optimiert werden, um sich an die dynamischen Marktbedingungen anzupassen. Zum Beispiel erhöht die Rendite-Risiko-Relation in starken Trends und reduziert sie in schwächeren Trends.
Mehrfache Zeitrahmenanalyse: Einführung von Trendbestätigung für höhere Zeitrahmen, z. B. die Ausführung von Signalen für niedrigere Zeitrahmen, die nur dann ausgeführt werden, wenn die Richtung der Sonnenstrahl-Trends übereinstimmt. Dies erfordert die Hinzufügung von mehreren Zeitrahmen-Analysefunktionen.
Die Dynamische Hypertrend Moving Average Cross Quantification Trading Strategie baut ein relativ robustes Trend-Tracking-System auf, indem sie die Übertrend-Bestätigung in Kombination mit dem Moving Average Cross Signal und dem Hypertrend-Indikator bestätigt. Die Strategie eignet sich insbesondere für die Anwendung auf 1 bis 4 Stunden-Charts für die wichtigsten Währungspaare wie EUR/USD und GBP/USD und funktioniert am besten in den Handelszeiten von London und New York.
Die Kernvorteile der Strategie liegen in ihren mehrfachen Bestätigungsmechanismen und einem ausgefeilten Risikomanagementsystem, das einen systematischen Rahmen für den Handel bietet, durch einen vorgegebenen Risiko-Rendite-Verhältnis und eine auf Volatilität basierende Stop-Loss-Einstellung. Als Trend-Tracking-System kann es jedoch in turbulenten Märkten schlechte Leistungen erbringen und es besteht ein inhärentes Risiko, eine Trendwende zu verspäten.
Die Stabilität und Anpassungsfähigkeit der Strategie kann durch die Umsetzung der empfohlenen Optimierungsrichtung, insbesondere durch die Einführung von Zeitfiltern, dynamischen Parameteranpassungen und Multi-Time-Frame-Analysen, weiter verbessert werden. Letztendlich bietet die Strategie einen zuverlässigen Grundrahmen für quantitative Händler, der nach individuellen Risikopräferenzen und Marktbedingungen angepasst und erweitert werden kann.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Islamabad Forex Academy Strategy-1",
overlay=true,
margin_long=100,
margin_short=100,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=15,
commission_type=strategy.commission.percent,
commission_value=0.03,
pyramiding=0)
// ===== CORE PARAMETERS =====
maLength = input.int(20, "Moving Average Length", minval=10, maxval=50)
atrPeriod = input.int(10, "ATR Period", minval=5, maxval=20)
supertrendFactor = input.float(2.8, "Supertrend Multiplier", step=0.1, minval=2.0, maxval=3.5)
rrRatio = input.float(3.0, "Risk:Reward Ratio", minval=2.0, maxval=5.0)
useCloseFilter = input.bool(true, "Require Close Cross MA")
// ===== CALCULATIONS =====
// Single Moving Average
ma = ta.sma(close, maLength)
// Supertrend with tighter settings
[supertrendLine, supertrendDir] = ta.supertrend(supertrendFactor, atrPeriod)
// Trend Conditions
uptrend = supertrendDir < 0 // Supertrend green
downtrend = supertrendDir > 0 // Supertrend red
// Entry Logic - Price must cross MA and stay beyond it
maCrossUp = useCloseFilter ? ta.crossover(close, ma) : ta.crossover(high, ma)
maCrossDown = useCloseFilter ? ta.crossunder(close, ma) : ta.crossunder(low, ma)
// Confirm with Supertrend
longCondition = maCrossUp and uptrend
shortCondition = maCrossDown and downtrend
// ===== RISK MANAGEMENT =====
atrValue = ta.atr(atrPeriod)
stopDistance = atrValue * 1.8
profitDistance = stopDistance * rrRatio
// ===== EXECUTION =====
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long",
stop=close - stopDistance,
limit=close + profitDistance,
when=strategy.position_size > 0)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short",
stop=close + stopDistance,
limit=close - profitDistance,
when=strategy.position_size < 0)
// ===== VISUALS =====
// MA Plot
plot(ma, "20 MA", color=color.new(#FF6D00, 0), linewidth=2)
// Supertrend Plot
uPlot = plot(uptrend ? supertrendLine : na, "Up Trend", color=color.new(#00C805, 0), linewidth=2)
dPlot = plot(downtrend ? supertrendLine : na, "Down Trend", color=color.new(#FF1100, 0), linewidth=2)
fill(uPlot, dPlot, color=color.new(supertrendDir < 0 ? #00C805 : #FF1100, 90))
// Entry Signals
plotshape(longCondition, "Buy", shape.triangleup, location.belowbar, color=color.new(#00C805, 0), size=size.small)
plotshape(shortCondition, "Sell", shape.triangledown, location.abovebar, color=color.new(#FF1100, 0), size=size.small)