
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.
Die Strategie besteht aus folgenden Teilen:
Die 13-, 50- und 100-Tage-Linien bilden eine Mehrfachsicht, um die wichtigsten Trends zu bestimmen.
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.
Der K-Linien-Abschlusskurs wird mit einem zyklischen SMA-Gleichung ausgeglichen, um Fehlsignale zu vermeiden.
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.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt einige Risiken:
Diese Risiken können durch Parameteroptimierung und Adaptionstests verringert werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
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.
/*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")