Strategie zur Nachverfolgung von Trends über mehrere Zeitrahmen

Schriftsteller:ChaoZhang, Datum: 2023-11-14 14:29:39
Tags:

img

Übersicht

Diese Strategie kombiniert gleitende Durchschnitte, MACD und RSI über mehrere Zeitrahmen hinweg, um Trendrichtungen zu identifizieren und S&P500-Indextrends zu handeln.

Strategie Logik

  1. Ein 10-Tage-einfacher gleitender Durchschnitt beurteilt die Kursentwicklung.

  2. Die MACD-Linien werden von den einzelnen Marktteilnehmern berechnet. Die MACD beurteilt die Momentumstärke. Sie berechnet die Differenz zwischen den exponentiellen gleitenden Durchschnitten von 12 und 21 Tagen, und die Überquerung zwischen der MACD-Linie und der Signallinie erzeugt Handelssignale. Die MACD-Linie, die über der Signallinie kreuzt, zeigt Aufwärts und die unterhalb kreuzt, zeigt Abwärts.

  3. Der 14-Tage-RSI und sein 50-Tage-MA werden berechnet.

  4. Die Zeitrahmen von 1 min, 3 min und 5 min bestätigen die Trendkonsistenz.

  5. Wenn der Preis über die 10-Tage-Ma überschreitet, überschreitet der RSI seine MA und die MACD-Linie über die Signallinie, wird ein Kaufsignal generiert.

Vorteile

  1. Die Kombination von Indikatoren verbessert die Signalgenauigkeit. Der 10-Tage-MA beurteilt den Haupttrend, der MACD bestimmt die Dynamikstärke und der RSI bestätigt Überkauf/Überverkauf. Die Indikatorenkombination überprüft sich gegenseitig und reduziert falsche Trades.

  2. Eine Doppelbestätigung in Zeitrahmen von 1 min, 3 min und 5 min sorgt für ein gleichzeitiges Signal und filtert falsche Signale aus.

  3. Graphische Musteranalysen verhindern extreme Überkauf-/Überverkaufswerte und reduzieren Verlustrisiken.

  4. Durchschnittliche Handelsfrequenz eignet sich für den Indexhandel. Ein 10-Tage-MA als primärer Indikator verhindert einen übermäßigen Handel und zusätzliche Transaktionskosten durch Überhandel.

Risiken

  1. Nichtentdeckung einer abrupten Umkehrung bei irrationalen Ereignissen. Solche Marktstörungen stören das Modell und sollten die Positionsgröße zur Risikokontrolle reduzieren.

  2. Festparameter-Einstellungen ohne Berücksichtigung der sich ändernden Marktbedingungen.

  3. Eintrittssignale sollten mit Schlüpfen fein abgestimmt werden, um die ausführbare Liquidität zu verbessern.

  4. Mehrere Zeitrahmen erhöhen die Signalverzögerung. Eine angemessene Risikokontrolle ist erforderlich, um Verluste durch Verzögerungen bei plötzlichen Ereignissen zu minimieren.

Erweiterung

  1. Einbeziehen Sie Stop-Loss-Mechanismen wie Trailing-Stop-Loss und Prozentsatz-Stop-Loss, um Einzelhandelsverluste zu kontrollieren.

  2. Optimierung der dynamischen Parameter-Einstellungen zur Anpassung an sich entwickelnde Märkte und Verbesserung der Robustheit der Strategie.

  3. Bei Änderungen des Marktregimes aufgrund bedeutender Ereignisse sollten Modellschokke vermieden werden.

  4. Berechnung von Handelskosten wie Schlupf und Anpassung der Ein-/Ausgangspunkte für eine bessere Ausführung.

  5. Testen Sie verschiedene Preiseinträge wie Kerzen als Signalbestätigung, um die Validierung mit mehreren Zeitrahmen zu diversifizieren.

  6. Maschinelle Lernalgorithmen auf Big Data nutzen, um die Strategieoptimierung zu automatisieren.

Schlussfolgerung

Diese Strategie handelt effektiv mit den Trends des S&P500 durch Trendidentifizierung mit mehreren Indikatoren und Signalbestätigung über Zeiträume hinweg. Ihre Stärken liegen in der hohen Signalgenauigkeit und Lärmbeständigkeit, aber Risikokontrolle und dynamische Parameter-Tuning sind erforderlich. Als Optimierung gegenüber einfachen gleitenden Durchschnittsstrategien bietet sie wertvolle Inspirationen und Referenzen für die quantitative Handelsstrategieverbesserung.


/*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)

Mehr