Die goldene Kreuzhandelsstrategie ist eine mittelfristige bis langfristige Trendverfolgungsstrategie. Sie identifiziert die Trendrichtung der Aktienkurse durch Berechnung des SR-Indikators und des SR-Signalindikators und implementiert Trendverfolgungsoperationen durch Zeichnen eines Trendkanals mithilfe von Neuralnetzwerk-Algorithmen. Wenn der SR-Indikator über das SR-Signal überquert, wird ein Kaufsignal generiert. Wenn der SR-Indikator unter das SR-Signal überquert, wird ein Verkaufssignal generiert. Diese Strategie verwendet auch eine adaptive lineare Regressionsfiltertechnik, um die Kanalkurve zu optimieren, die falsche Signale effektiv unterdrückt.
Die Kernindikatoren dieser Strategie sind der SR-Indikator und der SR-Signalindikator. Der SR-Indikator ist eine sekundäre Synthese des gleitenden Durchschnitts der WMA und des gleitenden Durchschnitts der SMA mit einer Periode von 8. Der SR-Signalindikator ist der SR-Indikator, der mit einer Periode von 20 berechnet wird.
Diese Strategie verwendet einen neuronalen Netzwerk-Algorithmus, um automatisch die oberen und unteren Grenzen des Aktienkurses zu zeichnen, um einen anpassungsfähigen Kanal zu bilden. Die oberste Grenze nimmt den historischen maximalen Wert des SR-Indikators als Eingang, die untere Grenze nimmt den historischen Mindestwert als Eingang, und die Regressionskurven werden als die oberen und unteren Grenzen des Kanals berechnet. Die Kanalkurve ist nach adaptivem linearem Regressionsfiltern glatter.
Wenn der SR-Indikator über das SR-Signal überschreitet, wird ein Kaufsignal generiert. Wenn der SR-Indikator unter dem SR-Signal überschreitet, wird ein Verkaufssignal generiert. Nachdem die langen und kurzen Signale ausgegeben wurden, bestimmt die Beziehung zwischen dem Aktienkurs und den oberen und unteren Grenzen des Kanals die Stop-Loss- und Take-Profit-Positionen.
Die wichtigsten Risiken dieser Trendverfolgungsstrategie sind:
Um Risiken zu kontrollieren, wird empfohlen, sich mit anderen Strategien zu kombinieren, anstatt sich auf eine einzige Strategie zu verlassen; gleichzeitig werden die Parameter-Einstellungen optimiert, um sich an verschiedene Marktumgebungen anzupassen.
Diese Strategie kann in folgenden Aspekten optimiert werden:
Optimierung der Parameter des SR-Anzeigers und des Signalanzeigers zur Verbesserung der Stabilität der Crossover-Signale;
Optimierung der Zyklusdauer des adaptiven Kanals, um die Kanalkurve zu glätten;
Hinzufügen anderer Filterindikatoren, um Fehlfunktionen zu vermeiden, wie z. B. Energieindikatoren, Volatilitätsindikatoren usw.;
Einbeziehung von Deep-Learning-Algorithmen zur Optimierung von Kanalkurven in Echtzeit und Verbesserung der Anpassungsfähigkeit.
Die Golden Cross Trading Strategie ist eine effektive quantitative Strategie zur Verfolgung mittelfristiger bis langfristiger Trends. Sie hat eine hohe Wahrscheinlichkeit, die Trendrichtung und niedrige Betriebsrisiken korrekt zu bestimmen.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // strategy(title = " Strategy PyramiCover", shorttitle = "S-PC", overlay = true, precision = 8, calc_on_order_fills = true, calc_on_every_tick = true, backtest_fill_limits_assumption = 0, default_qty_type = strategy.fixed, default_qty_value = 2, initial_capital = 10000, pyramiding=50, currency = currency.USD, linktoseries = true) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool) FromMonth = input(defval = 1, title = "Month", minval = 1) FromDay = input(defval = 1, title = "Day", minval = 1) FromYear = input(defval = 2014, title = "Year", minval = 2014) backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool) ToMonth = input(defval = 31, title = "Month", minval = 1) ToDay = input(defval = 12, title = "Day", minval = 1) ToYear = input(defval = 9999, title = "Year", minval = 2014) backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // per = input(14,title="🔹 Length") // up = 0.0 nup= 0.0 lowl = 0.0 nin = 0.0 // srl=wma(close,8) srr = sma(close,8) sr = 2*srl - srr // srsl=wma(close,20) srsr= sma(close,20) srsignal = 2*srsl - srsr // if sr>srsignal up := highest(sr,round(150)) nup :=highest(srsignal,round(20)) else up := highest(srsignal,round(150)) nup := highest(sr,round(20)) // if sr<srsignal lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) else lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) //reg alexgrover f_reg(src,length)=> x = bar_index y = src x_ = sma(x, length) y_ = sma(y, length) mx = stdev(x, length) my = stdev(y, length) c = correlation(x, y, length) slope = c * (my / mx) inter = y_ - slope * x_ reg = x * slope + inter reg // up_=f_reg(up,per) lowl_=f_reg(lowl,per) nup_=f_reg(nup,per) nin_=f_reg(nin,per) // plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0) plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0) plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0) b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0) fill(a, b, color=color.gray) plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0) plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // if backTestPeriod() strategy.entry("Buy", true, 1, when = crossover(sr,nin_)) strategy.entry("Short", false, 1, when = crossunder(sr,nup_))