Esta estratégia é um sistema de negociação que combina vários indicadores técnicos. Integra sinais de mercado de várias dimensões, incluindo a média móvel (EMA), rastreamento de volatilidade (ATR), tendência de volume (PVT) e oscilador de momento (Ninja) para melhorar a precisão da negociação. A estratégia emprega um mecanismo dinâmico de stop-loss para controlar estritamente o risco enquanto acompanha tendências.
A lógica central baseia-se em quatro pilares principais: 1. Usando a EMA de 200 períodos como base primária de determinação da tendência, dividindo o mercado em estados de alta e baixa 2. Sistema de saída de candelabro baseado no ATR, determinando pontos de virada da tendência rastreando altos e baixos combinados com volatilidade 3. Indicador PVT que combina as variações de preços com o volume para confirmar a validade da tendência de preços 4. Oscilador Ninja que capta as mudanças do momento do mercado comparando médias móveis de curto e médio prazo
Os sinais de negociação são gerados nas seguintes condições: - Long: Preço acima de 200EMA, Chandelier Exit mostra sinal de compra, confirmado pelo indicador PVT ou Ninja - Curto: Preço abaixo de 200EMA, Chandelier Exit mostra sinal de venda, confirmado por PVT ou Ninja indicador
Esta estratégia constrói um sistema de negociação relativamente completo através de sinergia de múltiplos indicadores e mecanismo dinâmico de stop-loss. Suas principais vantagens estão na confirmação de sinal multidimensional e no controle rigoroso de riscos. Embora existam riscos de atraso e falsos sinais, através de otimização e melhoria contínua, a estratégia tem o potencial de manter um desempenho estável em diferentes ambientes de mercado.
/*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!")