Stratégie de suivi des tendances basée sur un modèle à facteurs multiples avec arrêt de traînée adaptatif

Auteur:ChaoZhang est là., Date: 2023-12-19 11:04:27 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de suivi de tendance pilotée par un modèle multi-facteur avec un stop-loss adaptatif. Elle intègre plusieurs indicateurs tels que RSI, MACD, Stochastique pour construire un modèle multi-facteur permettant de déterminer la direction de la tendance.

Principaux

Cette stratégie tire parti de plusieurs indicateurs pour construire un modèle pour juger de la tendance. Premièrement, elle combine le RSI et le MACD pour déterminer la direction de la tendance; puis elle utilise le Stochastique pour filtrer les signaux de surachat ou de survente excessif. Après avoir entré des ordres, elle utilise l'ATR pour calculer le paramètre de risque et mettre en œuvre un stop-loss adaptatif.

Plus précisément, il génère un signal d'achat lorsque le RSI est supérieur à 52 et que le MACD est en croisement doré; il génère un signal de vente lorsque le RSI est inférieur à 48 et que le MACD est en croisement mort. Pour filtrer les faux signaux, il détecte également si le stochastique est suracheté ou survendu.

Les avantages

Le plus grand avantage de cette stratégie réside dans sa forte capacité de contrôle des risques. En jugeant la direction de la tendance avec un modèle à facteurs multiples, il peut filtrer un peu de bruit et améliorer la qualité du signal. Pendant ce temps, le mécanisme d'arrêt adaptatif peut ajuster la plage d'arrêt en fonction de la volatilité du marché pour contrôler efficacement une seule perte.

En outre, les paramètres de cette stratégie sont raisonnablement définis avec de bons résultats de backtesting.

Les risques

Le principal risque de cette stratégie est la qualité de la construction de modèles multifactoriels. Si le modèle ne parvient pas à déterminer efficacement la tendance, il générerait de massifs faux signaux.

Pour atténuer ces risques, des améliorations peuvent être apportées à partir d'aspects tels que l'ajustement du poids du modèle, l'optimisation des paramètres, la combinaison avec d'autres stratégies de stop-loss.

Directions d'optimisation

Cette stratégie peut être optimisée par les aspects suivants:

  1. Ajuster les pondérations des indicateurs dans le modèle multifactoriel pour trouver la combinaison optimale

  2. Tester plus d'indicateurs tels que l'ICC, la volatilité, etc. pour enrichir le modèle à facteurs multiples

  3. Optimiser les paramètres pour plus de produits et de cycles

  4. Essayez différentes stratégies de stop-loss pour trouver la combinaison optimale

  5. Ajout de modèles de formation et de modules d'évaluation de stratégie pour permettre l'apprentissage automatique

Résumé

Cette stratégie intègre un modèle multifactoriel et un mécanisme d'arrêt adaptatif pour obtenir une combinaison organique de jugement de tendance et de contrôle des risques.


/*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)

Plus de