Zusammengesetzte quantitative Handelsstrategie basierend auf MACD


Erstellungsdatum: 2023-12-13 16:44:46 zuletzt geändert: 2023-12-13 16:44:46
Kopie: 0 Klicks: 921
1
konzentrieren Sie sich auf
1621
Anhänger

Zusammengesetzte quantitative Handelsstrategie basierend auf MACD

Überblick

Die Strategie ist eine auf MACD-Indikatoren basierende Komplex-Quantitative-Trading-Strategie. Sie verwendet mehrere Indikatoren wie MACD, KDJ und andere, um ein Handelssignal durch Kombinationen zwischen den Indikatoren zu erzeugen.

Strategieprinzip

Der MACD steht für Index Moving Average und ist ein Trend-Tracking-Indikator. Es besteht aus einem schnellen Moving Average (EMA) und einem langsamen Moving Average (EMA). Die Schnelllinie-Defaultparameter sind 12, die Langlinie-Defaultparameter sind 26. Die Strategie berechnet die Differenz zwischen den beiden EMA-Linien, DIF.

Die Strategie führte auch die KDJ-Indikatoren ein. KDJ-Indikatoren umfassen K-Werte, D-Werte und J-Werte. K-Werte sind Zufallswerte, D-Werte sind Moving Averages von K-Werten und J-Werte sind Bestimmtheitswerte. KDJ-Indikatoren spiegeln den Überkauf-Überverkauf-Zustand des Marktes wider.

Strategische Vorteile

Die Strategie verwendet mehrere Indikatoren wie MACD und KDJ, um Marktlärm effektiv zu filtern und die Richtung der Trends zu erkennen. Der MACD-Indikator kann kurzfristige Preisveränderungen rechtzeitig erfassen, der KDJ-Indikator kann mittelfristige Trends bestätigen. Die Kombination der beiden kann die Beziehung zwischen der Suche nach Agilität und Stabilität ausgleichen.

Außerdem wurde ein Zeit-Selektor hinzugefügt, der den Zeitrahmen für die Rückmessung selbst wählt. Dies bietet eine größere Flexibilität bei der Bewertung der Strategie-Performance.

Strategische Risiken und Lösungen

  • Wenn der Markt langfristig schwankt, wird der MACD mehrere Fehlmeldungen erhalten. In diesem Fall können die Parameter der EMA-Linie entsprechend angepasst werden, um die teilweise Geräusche zu filtern.

  • Die falsche Einstellung der KDJ-Indikatorparameter beeinflusst auch die Ergebnisse. Sie können mehrere Gruppen von Parametern testen und eine stabilere Kombination von Parametern wählen.

  • Die falsche Auswahl der Rücklaufzeit kann die Erträge der Strategie überschätzen oder unterschätzen. Eine repräsentative Zeitspanne für die Tests sollte gewählt werden.

Optimierungsrichtung

Diese Strategie kann optimiert werden durch:

  1. Erhöhung der Stop-Loss-Mechanismen. Zwangsweise Stop-Loss-Plating, wenn der Preis die Stop-Loss-Linie auslöst.

  2. Hinzufügen von mehr Indikatorfiltern. In Kombination mit anderen Indikatoren wie RSI, Brin-Band, kann die Genauigkeit des Signals verbessert werden.

  3. Optimierung der Parameter des Indikators. Ändern Sie die Kombination der EMA- und KDJ-Parameter, um die optimalen Parameter zu finden.

  4. Automatische Optimierung mit Hilfe von maschinellen Lerntechnologien. Trainieren und optimieren von Strategieparametern, z. B. mit Hilfe von neuronalen Netzwerken.

Zusammenfassen

Die Strategie ist eine typische quantitative Strategie, die auf Trendverfolgung basiert und mit Überkauf-Überverkaufskontrollen unterstützt wird. Sie kombiniert die Vorteile verschiedener Indikatoren und kann Stabilität und Sensibilität effektiv ausgleichen. Durch kontinuierliche Optimierung und Anpassung erweitert die Strategie die Einsatzszenarien weiter, um langfristige stabile Gewinne zu erzielen.

Strategiequellcode
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000)

source = close

fastlength=input(12, minval=1)
slowlength=input(26,minval=1)
signallength=input(9,minval=1)

// === Defining the MACD oscillator
fastMA=ema(source,fastlength)
slowMA=ema(source,slowlength)
MACD=fastMA-slowMA
signal=sma(MACD,signallength)
delta=MACD-signal

// === Buy and Sell Signals ===
buy=crossover(MACD, signal)
sell=crossunder(MACD, signal)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2018, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2020, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell)                   // exit long when "within window of time" AND crossunder