Trendverfolgungsstrategie auf der Grundlage eines Multifaktormodells mit adaptiven Trailing Stoploss

Schriftsteller:ChaoZhang, Datum: 2023-12-19 11:04:27
Tags:

img

Übersicht

Diese Strategie ist eine Trend-Tracking-Strategie, die durch ein Multi-Faktor-Modell mit adaptivem Trailing Stoploss angetrieben wird. Sie enthält mehrere Indikatoren wie RSI, MACD, Stochastics, um ein Multi-Faktor-Modell zu erstellen, um die Trendrichtung zu bestimmen.

Grundsätze

Diese Strategie nutzt mehrere Indikatoren, um ein Modell für die Beurteilung des Trends zu erstellen. Erstens kombiniert sie RSI und MACD, um die Trendrichtung zu bestimmen; dann verwendet sie Stochastics, um übermäßig überkaufte oder überverkaufte Signale zu filtern.

Speziell erzeugt es ein Kaufsignal, wenn der RSI über 52 liegt und ein MACD-Golden Cross auftritt; es erzeugt ein Verkaufssignal, wenn der RSI unter 48 liegt und ein MACD-Totkreuz auftritt. Um gefälschte Signale zu filtern, erkennt es auch, ob der Stochastic überkauft oder überverkauft ist. Für Stoploss berechnet es einen Parameter auf der Grundlage von ATR, um einen adaptiven Stoploss zu realisieren, der das einzelne Stoploss-Risiko effektiv kontrollieren kann.

Vorteile

Der größte Vorteil dieser Strategie liegt in ihrer starken Risikokontrollfähigkeit. Durch das Beurteilen der Trendrichtung mit einem Multifaktormodell kann sie etwas Rauschen filtern und die Signalqualität verbessern.

Darüber hinaus sind die Parameter dieser Strategie vernünftigerweise mit guten Backtesting-Ergebnissen festgelegt. Verschiedene Zyklus-Assets können durch Parameter-Tuning optimiert werden.

Risiken

Das Hauptrisiko dieser Strategie ist die Qualität des Multifaktor-Modellbaus. Wenn das Modell den Trend nicht effektiv bestimmen kann, würde es massive gefälschte Signale erzeugen. Auch Stoploss-Strategien tragen inhärent das Risiko, gejagt zu werden.

Um diese Risiken zu mindern, können Verbesserungen in Aspekten wie Anpassung des Modellgewichts, Optimierung der Parameter-Einstellungen, Kombination mit anderen Stoploss-Strategien vorgenommen werden.

Optimierungsrichtlinien

Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Anpassen der Gewichte der Indikatoren im Multifaktormodell, um eine optimale Kombination zu finden

  2. Test mehr Indikatoren wie CCI, Volatilität usw. zur Bereicherung des Multifaktormodells

  3. Optimierung der Parameter-Einstellungen für mehr Produkte und Zyklen

  4. Versuchen Sie verschiedene Stoploss-Strategien, um eine optimale Kombination zu finden

  5. Ergänzung von Modellschulungen und Strategiebewertungsmodulen, um maschinelles Lernen zu ermöglichen

Zusammenfassung

Diese Strategie integriert ein Multi-Faktor-Modell und einen anpassungsfähigen Stoploss-Mechanismus, um eine organische Kombination aus Trendbeurteilung und Risikokontrolle zu erreichen.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="TradersAI_UTBot", overlay = true)
// CREDITS to @HPotter for the orginal code. 
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code - 
// I just added some simple code to turn it into a strategy so that you all can backtest it to see the results for yourself! 
// Use this strategy on your favorite instrumnet and timeframe, with your favorite settings
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above, 
// I am  happy to share here this working on a 15-minute chart on e-mini S&P 500 Index (using the KeyValue setting at 10)
// I am sure different people would discover different settings that work best for their preferred instrumnet/timeframe etc. 
// Play with it and enjoy! And, don't forget to share any positive results you might get! Good luck with your trading!

SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'") 
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close) 
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
     iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
     iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? red: pos == 1 ? green : blue 
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above 
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
alertcondition(buy, title='Buy', message='Buy')
alertcondition(sell, title='Sell', message='Sell')

if(buy)
    strategy.entry("UTBotBuy",strategy.long)
if(sell)
    strategy.entry("UTBotSell",strategy.short)

Mehr