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:
Les signaux de négociation sont générés dans les conditions suivantes:
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!")