
Die Strategie verwendet mehrere Indikatoren wie die Durchschnittslinie, MACD und RSI in Kombination, um die Trendrichtung über mehrere Zeiträume zu identifizieren und den Trend auf dem SPX 500 Index zu verfolgen.
Der 10-Tage-Simple Moving Average wird verwendet, um die Richtung der Preisentwicklung zu bestimmen. Wenn der Preis die 10-Tage-Linie überschreitet, ist er positiv, wenn er die 10-Tage-Linie überschreitet, ist er negativ.
Die MACD-Dynamik wird positiv-negativ beurteilt. Die Differenz zwischen dem 12- und dem 21-Tage-Moving Average wird berechnet, und die schnellen und langsamen Linien werden durch die Differenz zwischen den Durchschnittslinien gekreuzt, um ein Kauf- und Verkaufssignal zu erkennen. Die Schnellen durchbrechen die langsamen Linien, die nach unten gehen.
Der 14-Tage-RSI und sein 50-Tage-Mittelwert werden berechnet, wobei der RSI oben als bullish und unten als bearish Signal bezeichnet wird.
Die Trendkonformität wird durch die Zeiträume 1, 3 und 5 Minuten bestätigt.
Ein Kaufsignal wird erzeugt, wenn der Preis über die 10-Tage-Linie, über die RSI über die Durchschnittslinie und über die MACD-Schnelllinie über die langsame Linie geht; ein Verkaufsignal wird erzeugt, wenn der Preis unter die 10-Tage-Linie, die Durchschnittslinie unter dem RSI und die langsame Linie unter der MACD-Schnelllinie geht.
Die 10-Tage-Durchschnittslinie beurteilt die Richtung des Haupttrends, die MACD beurteilt die starke Dynamik, der RSI bestätigt den Überkauf und den Überverkauf. Die Indikator-Palette kann gegenseitig verifiziert werden, um Fehlhandlungen zu reduzieren.
Mehrfache Zeitrahmenbestätigung, um von Marktlärm abzulenken. Doppelprüfung der Zeitrahmen von 1, 3 und 5 Minuten, um sicherzustellen, dass die Signale synchron erscheinen und falsche Signale zu filtern.
In Kombination mit einer grafischen Form der Beurteilung, intuitiv zuverlässig. Die Grafik hilft bei der Beurteilung der Preisform Charakteristik, vermeiden Kauf- und Verkaufsposten extreme Bereiche, Verlustrisiken zu reduzieren.
Die Handelsfrequenz ist moderat und entspricht den Merkmalen des Indexhandels. Die 10-Tage-Durchschnittslinie wird als Hauptindikator verwendet. Die Handelsfrequenz ist nicht zu hoch und es werden keine überhöhten Handelskosten für wiederholte Geschäfte bezahlt.
Unmöglichkeit der Erkennung von Bruchfällen durch unvorhergesehene Ereignisse. Irrationale Ereignisse stören die Modellbeurteilung und sollten das Risiko der Positionsvermeidung verringern.
Die Parameter sind fest eingestellt und berücksichtigen nicht die Veränderungen der Marktumgebung. In der Praxis sollten die Parameter an die Dynamik der Großstadtumgebung angepasst werden, damit die Strategie an verschiedene Situationen angepasst wird.
Die Kauf- und Verkaufspunkte sind zu idealisiert, die tatsächliche Ausführung ist schwierig. Die Kauf- und Verkaufspunkte sollten in Kombination mit Faktoren wie den Kosten der Gleitpunkte verfeinert werden, um die Signale umsetzbarer zu machen.
Mehrfache Zeitrahmen erhöhen die Verzögerung bei der Entscheidungsfindung.
Erhöhung der Stop-Loss-Mechanismen, wie beispielsweise mobile Stop-Losses, Prozentsatz Stop-Losses usw., um Einzelschäden zu kontrollieren.
Optimierung der Parameter-Einstellungen, um die Dynamik der Parameter an die Marktumgebung anzupassen und die Strategie zu verbessern.
In Kombination mit der Steuerung von Ereignissen in den Hotspots der Märkte, um zu verhindern, dass große Ereignisse Auswirkungen auf die Strategie haben.
Berücksichtigen Sie die tatsächlichen Transaktionskosten, wie z. B. die Gleitpunkte, und passen Sie die Kauf- und Verkaufspunkte an, damit die Signale ausgeführt werden können.
Verschiedene Methoden wie K-Linien können als Signalbestätigungsquellen getestet werden.
Die Erweiterung der Maschinenlern-Algorithmen, die Nutzung von Big-Data-Trainingsmodellen und die automatische Optimierung von Strategieparametern.
Die Strategie ermöglicht die Trendverfolgung des SPX 500 Index durch mehrere Indikatoren, Trends und Signalbestätigungen in mehreren Zeitrahmen. Die Strategie hat den Vorteil, dass sie eine hohe Signalgenauigkeit und eine starke Anti-Noise-Interferenz bietet, jedoch muss auf die Risikokontrolle und die dynamische Optimierung der Strategie-Parameter geachtet werden. Als ein effektiver Versuch zur Optimierung einer einfachen Moving-Average-Strategie bietet die Strategie einen nützlichen Auftakt und eine nützliche Lehre für die Optimierung einer quantitativen Handelsstrategie.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)
//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)
data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1
bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)
//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
sh = ta.ema(close,sma)
lon= ta.ema(close,lma)
ratio = math.min(sh,lon)/math.max(sh,lon)
Mac = ratio - 1
if(sh>lon)
Mac := 2-ratio - 1
else
Mac := ratio - 1
MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = MacNorm
if(np<2)
MacNorm2 := Mac
else
MacNorm2 := MacNorm
Trigger = ta.wma(MacNorm2, tsp)
trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)
//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr
//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
strategy.entry("LONG", strategy.long, 1)
if (shortSignal)
strategy.entry("SHORT", strategy.short, 1)
// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)