Dies ist eine auf dem MACD-Indikator basierende komplexe quantitative Handelsstrategie, die mehrere Indikatoren wie MACD und KDJ kombiniert, um Handelssignale durch die Kombination von Indikatoren zu generieren.
Der Kernindikator dieser Strategie ist der MACD. Der MACD steht für Moving Average Convergence Divergence, ein Trend-Folgende Indikator. Er besteht aus einem schnellen gleitenden Durchschnitt (EMA) und einem langsamen gleitenden Durchschnitt (EMA). Die Standardparameter sind 12 für die schnelle Linie und 26 für die langsame Linie. Die Strategie berechnet den Unterschied zwischen den beiden EMA-Linien, die DIF genannt wird. Dann wird ein 9-tägiger EMA auf dem DIF berechnet, um den DEA-Indikator zu erhalten. Wenn der DIF über den DEA überschreitet, wird ein Kaufsignal generiert. Wenn er unterhalb überschreitet, wird ein Verkaufssignal generiert.
Die Strategie beinhaltet auch den KDJ-Indikator. Der KDJ-Indikator umfasst den K-Wert, den D-Wert und den J-Wert. Unter ihnen bezieht sich der K-Wert auf den zufälligen Wert, der D-Wert auf den gleitenden Durchschnitt des K-Wertes und der J-Wert auf den deterministischen Wert. Der KDJ-Indikator spiegelt die überkauften und überverkauften Niveaus auf dem Markt wider. Wenn der J-Wert größer als 100 ist, repräsentiert er überkaufte Bedingungen. Wenn er kleiner als 10 ist, repräsentiert er überverkaufte Bedingungen. Die Strategie kombiniert den KDJ-Indikator, um falsche Signale an Marktturnpunkten zu vermeiden.
Die Strategie kombiniert mehrere Indikatoren wie MACD und KDJ, die effektiv Marktlärm filtern und Trendrichtungen identifizieren können. Der MACD-Indikator kann kurzfristige Preisänderungen rechtzeitig erfassen, während der KDJ-Indikator mittelfristige und langfristige Trends bestätigen kann. Die Kombination der beiden kann das Streben nach Agilität und Stabilität ausgleichen.
Darüber hinaus enthält die Strategie einen Zeitrahmen-Selektor, der eine größere Flexibilität bei der Bewertung der Strategieleistung bietet.
Wenn der Markt für einen längeren Zeitraum schwankt, wird der MACD mehrere falsche Signale haben. An diesem Punkt können wir die Parameter der EMA-Linien richtig anpassen, um etwas Lärm zu filtern.
Wir können mehrere Parametergruppen testen und eine stabilere Parameterkombination auswählen.
Eine unangemessene Auswahl des Backtest-Zeitrahmens wird die Rentabilität der Strategie überschätzen oder unterschätzen.
Die Strategie kann in folgenden Aspekten optimiert werden:
Fügen Sie einen Stop-Loss-Mechanismus hinzu. Wenn der Preis die Stop-Loss-Linie auslöst, wird er einen Ausgang der Position für Stop-Loss-Zwecke erzwingen.
Mehr Indikatorfilter, die Indikatoren wie RSI und Bollinger Bands kombinieren, um die Genauigkeit des Signals zu verbessern.
Optimierung der Indikatorparameter, Änderung der Kombination der EMA- und KDJ-Parameter, um die optimalen Einstellungen zu finden.
Verwenden Sie maschinelle Lerntechniken zur automatischen Optimierung. Verwenden Sie neuronale Netzwerke für Parameter-Training und Optimierung.
Dies ist eine typische quantitative Strategie, die hauptsächlich dem Trend folgt, ergänzt durch Überkauf- und Überverkaufskontrolle. Sie kombiniert die Vorteile mehrerer Indikatoren und balanciert effektiv Stabilität und Empfindlichkeit. Durch kontinuierliche Optimierung und Anpassung kann die Anwendbarkeit der Strategie weiter erweitert werden, um langfristige stabile Gewinne zu erzielen.
/*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