Quantitative Handelsstrategie auf Basis von SMA und EMA

Schriftsteller:ChaoZhang, Datum: 2023-12-12 12:31:25
Tags:

img

I. Überblick über die Strategie

Diese Strategie heißt Quantitative Trading Strategy Based on SMA and EMA.

II. Strategieprinzip

  1. Berechnen Sie den SMA9, SMA50, SMA180 des Schlusskurses und den EMA20.

  2. Beurteilen Sie Kauf- und Verkaufssignale basierend auf der Beziehung zwischen Schließpreis und Support Sup und Widerstand Res. Genereren Sie ein Kaufsignal BuySignal, wenn Schließen durch Sup bricht, und erzeugen Sie ein Verkaufssignal SellSignal, wenn Schließen durch Res bricht.

  3. Wenn Sie Signal-Trigger kaufen, führen Sie die Long-Positionsstrategie aus; wenn Sie Signal-Trigger verkaufen, schließen Sie die Long-Position.

  4. Wenn Sie Signal-Trigger verkaufen, führen Sie die Short-Positionsstrategie aus; wenn Sie Signal-Trigger kaufen, schließen Sie die Short-Position.

III. Analyse der Vorteile

  1. Die Kombination mehrerer gleitender Durchschnitte zur Bildung von Handelssignalen verbessert die Genauigkeit und Stabilität.

  2. Die Berechnung dynamischer Unterstützung und Widerstand macht Handelssignale zuverlässiger.

  3. Die Annahme von gleitenden Durchschnitten mit hoher, mittlerer und niedriger Volatilität berücksichtigt sowohl langfristige Trends als auch kurzfristige Durchbrüche und verbessert somit die Rentabilität der Strategie.

  4. Die Unterstützung sowohl langer als auch kürzerer Positionen kann in Trend- und Seitenmärkten Gewinne erzielen.

IV. Risikoanalyse

  1. Der SMA hat einen Verzögerungseffekt, der Kauf- und Verkaufssignale verzögern und die Strategieleistung beeinträchtigen kann.

  2. Ohne Stopp-Loss-Mechanismus können sich die Verluste vergrößern.

  3. Da die Daten aus dem Backtesting unzureichend sind, müssen die Parameter an den Markt angepasst werden.

  4. Sie verlassen sich auf technische Indikatoren und können mit Schwarzen Schwanen nicht umgehen.

Lösungen:

  1. Passen Sie die SMA-Perioden ordnungsgemäß an.
  2. Stellen Sie einen angemessenen Stop-Loss fest.
  3. Erhöhen Sie die Stichprobengröße für Backtesting, passen Sie die Parameter an.
  4. Verbesserung der Risikokontrollmechanismen.

V. Optimierung

  1. Die Risikopositionen werden in der Tabelle 1 aufgeführt.

  2. Hinzufügen von Modellen für maschinelles Lernen zur Unterstützung der Trendbeurteilung und Signalgenerierung.

  3. Hinzufügen von Preis-Key-Analysen zur Verbesserung der Support- und Widerstandsgenauigkeit.

  4. Verschiedene Parameterkombinationen testen, um bessere Parameter zu finden.

VI. Zusammenfassung

Diese Strategie kombiniert die technischen Indikatoren von SMA und EMA, um Handelssignale zu konstruieren, und berechnet dynamische Unterstützung und Widerstand, um eine vollständige Kauf- und Verkaufslogik zu bilden. Die Vorteile sind flexible Parameter, Zwei-Wege-Handel, anpassungsfähig an verschiedene Märkte, aber es gibt auch Probleme wie Verzögerung und unzureichender Stop-Loss. Zukünftige Optimierungen können in Aspekten wie Stop-Loss, Trendbeurteilung, Schlüsselpreisanalyse zur Verbesserung der Stabilität und Rentabilität vorgenommen werden.

]


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)


Mehr