Esta estratégia é um sistema de negociação de múltiplos indicadores que combina G-Channel, Exponential Moving Average (EMA) e Average True Range (ATR). Identifica sinais de negociação através de níveis dinâmicos de suporte / resistência e confirmação de tendência, enquanto gerencia o risco usando níveis de stop-loss e take-profit baseados em ATR. O sistema enfatiza a confiabilidade e o controle de risco, adequado para os traders que buscam uma abordagem de negociação robusta.
A lógica central da estratégia baseia-se nos seguintes elementos essenciais: O G-Channel calcula os níveis dinâmicos de suporte e resistência, ajustando continuamente as faixas superior e inferior 2. A EMA confirma a direcção geral da tendência, sendo a direcção do comércio determinada pela posição dos preços em relação à EMA 3. Os sinais de entrada são baseados em rupturas do canal G e confirmação da posição da EMA Os níveis de stop-loss e take-profit são definidos utilizando múltiplos de ATR, com 2x ATR para stop-loss e 4x ATR para take-profit. 5. O rastreamento do estado evita sinais duplicados consecutivos
A estratégia constrói um sistema de negociação completo, combinando vários indicadores técnicos maduros. Sua força reside no mecanismo de confirmação de sinal de vários níveis e na gestão de risco baseada na volatilidade, embora ainda exija otimização com base em características específicas do mercado em aplicações práticas. Através das direções de otimização sugeridas, a estabilidade e adaptabilidade da estratégia podem ser ainda melhoradas.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true) // Input parameters length = input.int(100, title="G-Channel Length") src = input.source(close, title="Source") ema_length = input.int(50, title="EMA Length") // EMA length atr_length = input.int(14, title="ATR Length") // ATR length // G-Channel calculation var float a = na var float b = na a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length avg = (a + b) / 2 // G-Channel cross conditions crossup = b[1] < close[1] and b > close crossdn = a[1] < close[1] and a > close bullish = ta.barssince(crossdn) <= ta.barssince(crossup) c = bullish ? color.lime : color.red // EMA calculation ema_value = ta.ema(src, ema_length) // ATR calculation atr_value = ta.atr(atr_length) // Plot G-Channel average and Close price p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90) p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100) fill(p1, p2, color=c, transp=90) // Plot EMA plot(ema_value, color=color.blue, linewidth=2, title="EMA") // Buy and Sell conditions buy_condition = bullish and close < ema_value sell_condition = not bullish and close > ema_value // Track the last signal state var bool last_was_buy = false var bool last_was_sell = false // ATR-based SL and TP calculations long_sl = close - 2 * atr_value // 2 ATR below the entry for SL long_tp = close + 4 * atr_value // 4 ATR above the entry for TP short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short) short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short) // Generate Buy signal only if the last signal was not Buy if (buy_condition and not last_was_buy) strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp) last_was_buy := true last_was_sell := false // Generate Sell signal only if the last signal was not Sell if (sell_condition and not last_was_sell) strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp) last_was_sell := true last_was_buy := false // Plot shapes for Buy and Sell signals plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white) plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)