Esta estratégia é um sistema de negociação de tendência baseado no canal G personalizado e na média móvel exponencial (EMA). O canal G consiste em linhas superiores (a), inferiores (b) e médias (avg), determinando os limites do canal através do cálculo dinâmico dos preços atuais e históricos.
A lógica principal compreende dois componentes principais: G-Channel e filtro EMA. Os cálculos do G-Channel são baseados em preços atuais e dados históricos, ajustando dinamicamente a largura do canal através de um algoritmo adaptativo. A linha superior (a) leva o máximo do preço atual e da linha superior anterior, ajustado por parâmetros de largura e comprimento do canal; a linha inferior (b) usa um método semelhante para valores mínimos; a linha média é a média aritmética. Os sinais de negociação são desencadeados pela combinação de cruzamento de preços com linhas de canal e posição relativa à EMA: sinais de compra ocorrem quando o preço quebra acima da linha inferior enquanto está abaixo da EMA; sinais de venda ocorrem quando o preço quebra a linha superior enquanto está abaixo da EMA.
O G-Channel e EMA Trend Filter Trading System é uma estratégia de negociação completa que combina breakouts de canal e tendência seguindo. Através das características dinâmicas do G-Channel e da função de confirmação de tendência do EMA, a estratégia captura efetivamente pontos de virada do mercado enquanto controla os riscos de negociação. Embora existam certas limitações, o desempenho geral da estratégia pode ser melhorado através das direções de otimização propostas. Esta estratégia é adequada para mercados de tendências e pode servir como uma estrutura de base para a construção de sistemas de negociação mais complexos.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy", overlay=true) // G-Channel Indicator length = input.int(100, title="G-Channel Length") src = input(close, title="Source") var float a = na var float b = na a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length avg = (a + b) / 2 // G-Channel buy/sell signals crossup = ta.crossover(close, b) crossdn = ta.crossunder(close, a) bullish = ta.barssince(crossdn) <= ta.barssince(crossup) // EMA Indicator emaLength = input.int(200, title="EMA Length") ema = ta.ema(close, emaLength) // Buy Condition: G-Channel gives a buy signal and price is below EMA buySignal = bullish and close < ema // Sell Condition: G-Channel gives a sell signal and price is above EMA sellSignal = not bullish and close > ema // Plotting the G-Channel and EMA plot(a, title="Upper", color=color.blue, linewidth=2, transp=100) plot(b, title="Lower", color=color.blue, linewidth=2, transp=100) plot(avg, title="Average", color=bullish ? color.lime : color.red, linewidth=1, transp=90) plot(ema, title="EMA", color=color.orange, linewidth=2) // Strategy Execution if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Plot Buy/Sell Signals plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")