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.
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.
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.
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.
Cette stratégie peut être optimisée par les aspects suivants:
Ajuster les pondérations des indicateurs dans le modèle multifactoriel pour trouver la combinaison optimale
Tester plus d'indicateurs tels que l'ICC, la volatilité, etc. pour enrichir le modèle à facteurs multiples
Optimiser les paramètres pour plus de produits et de cycles
Essayez différentes stratégies de stop-loss pour trouver la combinaison optimale
Ajout de modèles de formation et de modules d'évaluation de stratégie pour permettre l'apprentissage automatique
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)