
Il s’agit d’une stratégie de suivi de tendance auto-adaptative combinant plusieurs indicateurs techniques. Cette stratégie intègre le système d’alerte UT Bot, les filtres RSI (indicateur de force relative), les arrêts de suivi ATR non redessinés et le canal Donchian. La stratégie utilise un délai de 15 minutes, utilise le diagramme de Heikin Ashi pour améliorer l’exactitude du signal et définit un objectif d’exit basé sur le pourcentage.
Le cœur de la stratégie est d’identifier et de suivre les tendances du marché grâce à la synergie de plusieurs indicateurs, tout en offrant un mécanisme de gestion des risques flexible. Il combine des informations sur le marché à plusieurs dimensions telles que la dynamique (RSI), la volatilité (ATR) et la tendance (channel de Dongguan) pour des décisions de négociation plus complètes et plus solides.
ATR tracking stop: utilise l’amplitude réelle moyenne ((ATR) pour calculer le niveau de stop dynamique et fournir des contrôles de risque adaptatifs.
Filtre RSI: utilise l’indicateur relativement faible ((RSI) pour confirmer la direction de la tendance et améliorer la fiabilité du signal d’entrée.
Le canal Dongjian: un outil supplémentaire de confirmation des tendances pour aider à identifier l’orientation générale du marché.
Conditions d’entrée :
Mécanisme de sortie: définir des objectifs de profit et des niveaux de stop-loss basés sur des pourcentages.
Option de graphique Wiggin-Achille: utilisé pour lisser les données de prix et réduire les faux signaux.
L’analyse multidimensionnelle, qui combine des indicateurs de tendances, de dynamique et de volatilité, fournit une vision globale du marché.
L’ATR traque les stop-loss et s’adapte automatiquement aux fluctuations du marché.
Une bonne gestion des risques: objectifs clairs de stop-loss et de profit, contrôle efficace des risques.
Amélioration de la qualité du signal: double confirmation par le RSI et le canal de Dongjian, réduction des faux signaux.
Flexibilité: utilisation de la carte Wickin-Achilles pour s’adapter à différents styles de négociation
Pas de redimensionnement: les calculs de l’ATR pour suivre les pannes assurent la fiabilité et la cohérence du signal.
La performance du marché en tremblement de terre: Faux signaux peuvent être fréquents dans les marchés à plat ou en tremblement de terre.
Le système de confirmation multiple peut entraîner un léger retard dans l’admission.
Risque d’optimisation excessive: les paramètres sont nombreux et peuvent conduire à une surcompatibilité avec les données historiques.
Dépendance aux conditions du marché: la réactivité peut être insuffisante dans un marché en évolution rapide.
Points de glissement d’exécution: Les sorties basées sur les pourcentages peuvent présenter des défis d’exécution dans des marchés très volatils.
Ajustement des paramètres dynamiques: optimisation automatique des paramètres clés (par exemple, le seuil RSI, le multiplicateur ATR).
Identification des régimes de marché: augmentation du jugement sur les différents états du marché (trends, fluctuations), stratégie d’ajustement dynamique.
Synchronisation des délais: synthèse des signaux de plusieurs délais pour améliorer la robustesse de la prise de décision.
Filtrage de volatilité: suspendre les transactions dans un environnement de très faible volatilité pour éviter les signaux inefficaces.
Amélioration des mécanismes d’exit: introduction de règles d’exit basées sur le trailing stop ou le temps, optimisation de la gestion des bénéfices.
Ajout d’une analyse de la quantité de transactions: une combinaison d’indicateurs de la quantité de transactions pour confirmer davantage la force de la tendance.
Intégration de l’apprentissage automatique: optimisation de la sélection de paramètres et de la génération de signaux à l’aide d’algorithmes d’apprentissage automatique.
Cette stratégie de suivi des tendances auto-adaptative, intégrant plusieurs indicateurs, présente les avantages de la systématisation et de l’analyse multidimensionnelle dans les transactions quantifiées. En intégrant plusieurs indicateurs tels que l’ATR, le RSI, l’UT Bot et le canal de Tangqian, la stratégie est capable de capturer la dynamique du marché sous différents angles et de fournir un signal de négociation relativement complet et robuste.
Cependant, la complexité des stratégies comporte également des risques potentiels tels que la suradaptation et la sensibilité des paramètres. Les orientations d’optimisation futures devraient se concentrer sur l’amélioration de l’adaptabilité et de la robustesse des stratégies, telles que l’introduction de fonctionnalités avancées telles que l’ajustement des paramètres dynamiques et l’identification de l’état du marché.
Dans l’ensemble, cette stratégie fournit un cadre complet et perspicace pour le suivi des tendances, avec le potentiel d’être un outil de trading efficace, grâce à une optimisation continue et une application prudente.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("UT Bot Alerts - Non-Repainting with RSI Filter and Donchian Channels", overlay=true)
// Inputs for UT Bot
a = input.int(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")
percentage = input.float(0.002, title="Percentage for Exit (0.2% as decimal)")
// RSI Inputs
rsiPeriod = input.int(14, title="RSI Period")
rsiSource = input.source(close, title="RSI Source")
// ATR Calculation
xATR = ta.atr(c)
nLoss = a * xATR
// Heikin Ashi Calculation
haClose = request.security(syminfo.tickerid, timeframe.period, close, lookahead=barmerge.lookahead_on)
haOpen = request.security(syminfo.tickerid, timeframe.period, open, lookahead=barmerge.lookahead_on)
haHigh = request.security(syminfo.tickerid, timeframe.period, high, lookahead=barmerge.lookahead_on)
haLow = request.security(syminfo.tickerid, timeframe.period, low, lookahead=barmerge.lookahead_on)
haCloseSeries = (haOpen + haHigh + haLow + haClose) / 4
src = h ? haCloseSeries : close
// RSI Calculation
rsiValue = ta.rsi(rsiSource, rsiPeriod)
// Non-repainting ATR Trailing Stop Calculation
var float xATRTrailingStop = na
if (barstate.isconfirmed)
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
// Position Calculation
var int pos = 0
if (barstate.isconfirmed)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : 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 = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
// Track entry prices
var float entryPrice = na
// Donchian Channels
length = input.int(20, minval = 1, title="Donchian Channels Length")
offset = input.int(0, title="Donchian Channels Offset")
lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)
plot(basis, "Basis", color = #FF6D00, offset = offset)
u = plot(upper, "Upper", color = #2962FF, offset = offset)
l = plot(lower, "Lower", color = #2962FF, offset = offset)
fill(u, l, color = color.rgb(33, 150, 243, 95), title = "Background")
// Buy and sell conditions with RSI filter and basis condition
buy = src > xATRTrailingStop and above and barstate.isconfirmed and rsiValue > 50 and src > basis
sell = src < xATRTrailingStop and below and barstate.isconfirmed and rsiValue < 50 and src < basis
// Calculate target prices for exit
var float buyTarget = na
var float sellTarget = na
if (buy)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Buy", strategy.long)
if (sell)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Sell", strategy.short)
// Exit conditions
var bool buyExit = false
var bool sellExit = false
var bool stopLossExit = false
if (strategy.position_size > 0 and barstate.isconfirmed)
if (src >= buyTarget)
strategy.exit("Take Profit", "Buy", limit=buyTarget)
buyExit := true
if (src <= sellTarget)
strategy.exit("Stoploss exit", "Buy", stop=src)
stopLossExit := true
if (strategy.position_size < 0 and barstate.isconfirmed)
if (src <= sellTarget)
strategy.exit("Take Profit", "Sell", limit=sellTarget)
sellExit := true
if (src >= buyTarget)
strategy.exit("Stoploss exit", "Sell", stop=src)
stopLossExit := true
// Plotting
plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)
barcolor(src > xATRTrailingStop ? color.green : na)
barcolor(src < xATRTrailingStop ? color.red : na)
alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")
alertcondition(buyExit, "UT Long Exit", "UT Long Exit")
alertcondition(sellExit, "UT Short Exit", "UT Short Exit")
alertcondition(stopLossExit, "Stoploss exit", "Stoploss exit")