Die Ressourcen sind geladen. Beförderung...

Quantitative Strategie des Goldenen Kreuzes

Schriftsteller:ChaoZhang, Datum: 2023-11-22 14:39:33
Tags:

img

Übersicht

Diese Strategie berechnet einen benutzerdefinierten Nettovolumenindikator, um eine Handelsstrategie zu implementieren, bei der der Kauf auf dem goldenen Crossover und der Verkauf auf dem Death Crossover erfolgt.

Strategieprinzip

Die Kernlogik der Strategie besteht darin, einen benutzerdefinierten Nettovolumen (NV) -Indikator zu berechnen. Der NV-Indikator beurteilt die Richtung der Preisänderungen. Wenn positiv, nimmt er das Tagesvolumen. Wenn negativ, nimmt er den negativen Wert des Tagesvolumens. Wenn unverändert, nimmt er 0. Dies kann die Beziehung zwischen Preisänderungen und Volumen klarer widerspiegeln.

Die Strategie berechnet dann die 3-tägige einfache gleitende Durchschnittslinie des NV-Indikators als goldene Kreuzlinie und Todeskreuzlinie. Wenn der NV-Indikator die goldene Kreuzlinie von unten nach oben durchbricht, gehen Sie lang. Wenn NV die Todeskreuzlinie von oben nach unten durchbricht, gehen Sie kurz.

Darüber hinaus legt die Strategie auch parametrierte Start- und Endzeiten fest, um die Handelszeiten zu steuern.

Vorteile der Strategie

Der größte Vorteil dieser Strategie besteht darin, dass die Strategie einfach und klar ist, leicht verständlich, flexible Parameter-Einstellungen, anpassbare Handelsvarianten, Handelszeiten usw. Darüber hinaus gehört diese Strategie zu einer Trend-Folge-Strategie, die Preistrends effektiv erfassen, die Handelsfrequenz reduzieren und höhere Renditen erzielen kann.

Risiken der Strategie

Die wichtigsten Risiken dieser Strategie sind:

  1. Die tägliche Strategie kann nicht sofort auf Veränderungen der Kursentwicklung reagieren. Sie kann einige Handelsmöglichkeiten verpassen oder Verluste nicht rechtzeitig stoppen.

  2. Das quantitative Goldkreuze selbst hat eine gewisse Hysterese, die zu einem späten Einstieg und zu verstärkten Verlusten führen kann.

  3. Sie sind nicht in der Lage, Marktlärm effektiv zu filtern und sind anfällig für Fallen.

Gleitende Durchschnitte können dynamisch verwendet werden, kombiniert mit anderen Indikatoren, um Risiken zu reduzieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Steigern Sie die Stop-Loss-Strategien, um einzelne Verluste mit beweglichen Stop-Loss- und Overnight-Stop-Loss-Methoden zu kontrollieren.

  2. Erhöhen Sie die Filterindikatoren und verwenden Sie MACD, KDJ und andere Indikatoren, um falsche Signale zu filtern und die Stabilität der Strategie zu verbessern.

  3. Parameteroptimierung, iterative Suche nach der optimalen Parameterkombination durch genetische Algorithmen, Markovketten und andere Methoden.

  4. Das Strategieportfolio kann mit anderen unabhängigen Strategien kombiniert werden, um die Risiken weiter zu diversifizieren und die Gesamtrendite zu erhöhen.

Schlussfolgerung

Diese Strategie implementiert einen einfachen und effektiven Trend, der durch quantitative goldene Kreuze folgt. Obwohl es einen gewissen Grad an Hysterese gibt, sind die Parameter-Einstellungen flexibel und leicht zu verstehen. Es ist eine Strategie, die für Anfänger geeignet ist. Durch kontinuierliche Optimierung kann der Strategieeffekt allmählich verbessert und die Risiken reduziert werden.


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

//@version=3
strategy(title="@DankCoins - Customized Net Volume")
src = input(defval = close, title = "VA Source")
nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume



// Inputs //
VHigh = input(defval = 50, title = "VHigh Amount")
VLow = input(defval = -50, title = "VLow Amount")


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2012)

MAV1 = sma(volume, 3)
MAV2 = -sma(volume, 3)

enterShort = crossunder(nv, MAV1)
exitShort = crossunder(nv, MAV2)
enterLong = crossover(nv, MAV2)
exitLong = crossover(nv, MAV1)

// Time Function 
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=enterShort and window())
strategy.exit("Exit Long", from_entry = "Long Entry",  when=exitLong and window())
strategy.exit("Exit Short", from_entry = "Short Entry",  when=exitShort and window())


// Plot
plot(nv, color=blue, title="NV")
plot(VHigh, color=red)
plot(VLow, color=red)
plot(MAV1, color=green)
plot(MAV2, color=green)

Mehr