
La stratégie est une stratégie de suivi de tendance auto-adaptative pilotée par un modèle multi-facteur. Elle intègre plusieurs indicateurs tels que le RSI, le MACD et les stochastics pour construire un modèle multi-facteur pour juger de la direction de la tendance. Elle dispose également d’un mécanisme d’arrêt auto-adaptatif qui permet d’ajuster le prix d’arrêt en fonction de la dynamique de l’ATR pour réaliser un contrôle du risque.
La stratégie utilise plusieurs indicateurs pour construire un modèle de jugement de tendance. Tout d’abord, il décide de la direction de la tendance en combinaison avec le RSI et le MACD; puis, en combinaison avec Stochastics, il détermine s’il s’agit d’un surachat ou d’une survente et filtre certains signaux. Après l’entrée d’une commande, il utilise l’ATR pour calculer les paramètres de risque et réaliser un arrêt automatique.
Plus précisément, il génère un signal d’achat lorsque le RSI est supérieur à 52 et que le MACD Gold Fork; il génère un signal de vente lorsque le RSI est inférieur à 48 et que le MACD Dead Fork. Afin de filtrer les faux signaux, il détecte également si Stochastics est en sur-achat ou en sur-vente. En ce qui concerne les arrêts, il prend en compte les paramètres calculés par l’ATR pour réaliser des arrêts adaptatifs, ce qui permet de contrôler efficacement le risque de stop loss unique.
Le plus grand avantage de cette stratégie réside dans sa capacité à contrôler les risques. En utilisant un modèle multi-facteurs pour déterminer la direction de la tendance, il est possible de filtrer une partie du bruit et d’améliorer la qualité du signal. En même temps, le mécanisme d’arrêt de perte adaptatif peut ajuster l’amplitude de l’arrêt de perte en fonction de la volatilité du marché et contrôler efficacement les pertes individuelles.
De plus, la stratégie est rationnelle dans la définition des paramètres et offre une meilleure rétroactivité. Les actifs à différentes périodes peuvent être optimisés en ajustant les paramètres.
Le principal risque de cette stratégie réside dans la qualité de la construction du modèle multifonctionnel. Si le modèle n’est pas bien construit, il ne peut pas détecter efficacement les tendances, ce qui génère un grand nombre de signaux erronés. De plus, la stratégie de stop loss elle-même présente un risque d’arbitrage.
Pour réduire ces risques, des améliorations peuvent être apportées en ajustant le poids du modèle, en optimisant les paramètres de réglage et en combinant d’autres stratégies d’arrêt des pertes. Des interventions manuelles sont également nécessaires en cas de marché anormal.
Cette stratégie peut être optimisée dans les domaines suivants:
Adapter les poids des indicateurs dans les modèles multifactoriels pour trouver la combinaison optimale de poids
Test d’autres indicateurs, tels que le CCI, la volatilité, etc., avec des modèles riches en facteurs
Optimisation des paramètres pour plus de variétés et de cycles
Essayez différentes stratégies de stop-loss pour trouver la meilleure combinaison
Ajout de modules de formation des modèles et d’évaluation des stratégies pour une utilisation de l’apprentissage automatique
La stratégie intègre des modèles multifactoriels et des mécanismes d’arrêt de perte adaptatifs, permettant une combinaison organique de jugement de tendance et de contrôle du risque. Elle est bien rétroactive et extensible. Avec une optimisation continue, elle peut devenir une stratégie quantitative qui vaut la peine d’être détenue à long terme.
/*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)