Quantitative Verfolgung der Bullenmarktstrategie


Erstellungsdatum: 2024-01-04 15:25:42 zuletzt geändert: 2024-01-04 15:25:42
Kopie: 0 Klicks: 572
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Verfolgung der Bullenmarktstrategie

Überblick

Die Quantitative Tracking Bull Market Strategie ist eine Trend-Tracking-Strategie, die auf EMA-Mean und ATR-Stopp basiert. Sie nutzt die EMA-Mean, um die Richtung des großen Trends zu bestimmen, und nutzt ATR-Dynamische Tracking-Stopps, um Trendgewinne zu locken und Gewinne zu maximieren.

Strategieprinzip

Die Strategie besteht aus folgenden Teilen:

  1. Die EMA beurteilt die Haupttrends

Die 13-, 50- und 100-Tage-Linien bilden eine Mehrfachsicht, um die wichtigsten Trends zu bestimmen.

  1. ATR-Dynamik ausgeschaltet

Der ATR-Indikator wird verwendet, um die Preissteigerung innerhalb dieses Zeitraums zu berechnen, um den Stop-Loss-Bereich zu setzen und den Stop-Loss zu erreichen.

  1. Das Signal ist glatt.

Der K-Linien-Abschlusskurs wird mit einem zyklischen SMA-Gleichung ausgeglichen, um Fehlsignale zu vermeiden.

  1. Mehrfachsignal

Wenn der Preis über die EMA-Mittellinie geht, machen Sie mehr, wenn er über die EMA-Mittellinie geht, machen Sie weniger. Und setzen Sie den ATR-Dynamik-Tracking-Stopp.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Rückzugskontrolle ist hervorragend, die maximale Rückzugskontrolle liegt bei 160%.
  2. Der Tracking-Stop ist intelligenter als der Fix-Stop und kann mehr Trends und Gewinne abschließen.
  3. Die EMA nutzt diese Daten, um die wichtigsten Trends zu bestimmen und um eine Umkehrung zu vermeiden.
  4. Glatte K-Linie, die falsche Signale filtert und die Gewinnrate erhöht.

Risikoanalyse

Die Strategie birgt einige Risiken:

  1. Die Festparameter-Einstellungen sind für verschiedene Sorten möglicherweise nicht geeignet und müssen optimiert werden.
  2. Bei Erschütterungen kann es zu Stoppschlägen kommen.
  3. Wir brauchen Stabilitätsunterstützung für den Server, um nicht zu übersehen, dass wir ein Signal verpassen.

Diese Risiken können durch Parameteroptimierung und Adaptionstests verringert werden.

Optimierungsrichtung

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Automatische Optimierung der Parameter mithilfe von Machine Learning-Algorithmen.
  2. Erhöhung der Anpassungsfähigkeit der Stop-Loss-Mechanismen und Anpassung an die Marktlage.
  3. Mehr Kombinationskriterien zur Steigerung der Stabilität der Strategien.
  4. Überlegungen zu interspeziellen Tests und zur Verbesserung der Anpassungsfähigkeit von Strategien.

Zusammenfassen

Die Strategie ist eine quantitative Strategie, die im Allgemeinen auf dem Trendverfolgungskonzept basiert. Sie nutzt die EMA, um die Richtung der Tendenz zu bestimmen, und nutzt ATR für einen intelligenten Stop-Loss. Sie kann den Rückzug effektiv kontrollieren und gleichzeitig Trendgewinne erzielen. Durch kontinuierliche Optimierung und Wiederholung können bessere Strategieeffekte erzielt werden.

Strategiequellcode
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Combined Strategy", overlay=true)

// Input variables for EMA Crossover
ema13_length = input(13, title="EMA 13 Length")
ema50_length = input(50, title="EMA 50 Length")
ema100_length = input(100, title="EMA 100 Length")
ema200_length = input(200, title="EMA 200 Length")

// Calculate EMAs for EMA Crossover
ema13 = ema(close, ema13_length)
ema50 = ema(close, ema50_length)
ema100 = ema(close, ema100_length)
ema200 = ema(close, ema200_length)

// Plot EMAs for EMA Crossover
plot(ema13, color=color.blue, title="EMA 13")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
plot(ema200, color=color.red, title="EMA 200")

// Input variables for LinReg Candles
signal_length = input(title="Signal Smoothing", type=input.integer, minval=1, maxval=200, defval=11)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)

lin_reg = input(title="Lin Reg", type=input.bool, defval=true)
linreg_length = input(title="Linear Regression Length", type=input.integer, minval=1, maxval=200, defval=11)

// Calculate LinReg Candles
bopen = lin_reg ? linreg(open, linreg_length, 0) : open
bhigh = lin_reg ? linreg(high, linreg_length, 0) : high
blow = lin_reg ? linreg(low, linreg_length, 0) : low
bclose = lin_reg ? linreg(close, linreg_length, 0) : close

r = bopen < bclose

signal = sma_signal ? sma(bclose, signal_length) : ema(bclose, signal_length)

plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true)
plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true)

plot(signal, color=color.white)

// Input variables for UT Bot Alerts
a = input(1, title="Key Value. 'This changes the sensitivity'")
c = input(10, title="ATR Period")
h = input(false, title="Signals from Heikin Ashi Candles")

// Calculate UT Bot Alerts
xATR = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))

pos = 0   
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

strategy.entry("Buy", strategy.long, when=buy)
strategy.close("Buy", when=sell)
strategy.entry("Sell", strategy.short, when=sell)
strategy.close("Sell", when=buy)

plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")