Cette stratégie est un système de trading qui combine plusieurs indicateurs techniques. Elle intègre des signaux de marché de différentes dimensions, y compris la moyenne mobile (EMA), le suivi de la volatilité (ATR), la tendance du volume (PVT) et l'oscillateur de momentum (Ninja) pour améliorer la précision du trading.
La logique de base repose sur quatre piliers principaux: 1. Utiliser l'EMA de 200 périodes comme base principale de détermination de la tendance, en divisant le marché en états haussiers et baissiers 2. Système de sortie de l'ampoule basé sur l'ATR, déterminant les points tournants de la tendance en suivant les hauts et les bas combinés à la volatilité Indicateur PVT combinant les variations de prix avec le volume pour confirmer la validité de l'évolution des prix L'oscillateur Ninja capture les changements de dynamique du marché en comparant les moyennes mobiles à court et à moyen terme
Les signaux de négociation sont générés dans les conditions suivantes: - Long: Prix supérieur à 200EMA, Chandelier Exit montre un signal d'achat, confirmé par l'indicateur PVT ou Ninja - court: prix inférieur à 200EMA, Chandelier Exit montre un signal de vente, confirmé par PVT ou indicateur Ninja
Cette stratégie construit un système de trading relativement complet grâce à une synergie multi-indicateurs et un mécanisme de stop-loss dynamique. Ses principaux avantages résident dans la confirmation de signal multidimensionnel et le contrôle strict des risques. Bien qu'il existe des risques de retard et de faux signaux, grâce à une optimisation et une amélioration continues, la stratégie a le potentiel de maintenir une performance stable dans différents environnements de marché.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true) // --- Inputs --- var string calcGroup = "Calculation Parameters" atrLength = input.int(22, title="ATR Period", group=calcGroup) atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup) emaLength = input.int(200, title="EMA Length", group=calcGroup) // --- ATR and EMA Calculations --- atr = atrMult * ta.atr(atrLength) ema200 = ta.ema(close, emaLength) // --- Chandelier Exit Logic --- longStop = ta.highest(high, atrLength) - atr shortStop = ta.lowest(low, atrLength) + atr var int dir = 1 dir := close > shortStop ? 1 : close < longStop ? -1 : dir buySignal = dir == 1 and dir[1] == -1 sellSignal = dir == -1 and dir[1] == 1 // --- Price Volume Trend (PVT) --- pvt = ta.cum((close - close[1]) / close[1] * volume) pvtSignal = ta.ema(pvt, 21) pvtBuy = ta.crossover(pvt, pvtSignal) pvtSell = ta.crossunder(pvt, pvtSignal) // --- Ninja Indicator --- ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100 ninjaSignal = ta.ema(ninjaOsc, 24) ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal) ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal) // --- Strategy Conditions --- longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy) shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell) if longCondition strategy.entry("Buy", strategy.long) strategy.exit("Exit Long", "Buy", stop=low - atr) if shortCondition strategy.entry("Sell", strategy.short) strategy.exit("Exit Short", "Sell", stop=high + atr) // --- Plotting --- plot(ema200, title="EMA 200", color=color.blue, linewidth=2) plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // --- Labels for Buy/Sell with price --- if buySignal label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small) if sellSignal label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small) // --- Alerts --- alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!") alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")