
A estratégia é um sistema de negociação de acompanhamento de tendências baseado em canais G personalizados e em média móvel do índice (EMA). O canal G é composto por vias superiores (a), inferiores (b) e médias (avg) para determinar as fronteiras do canal através do cálculo dinâmico dos preços atuais e históricos. A estratégia combina o EMA como um filtro de tendência, gerando sinais de negociação através da interseção dos preços com a linha do canal e a relação de posição com o EMA, capturando efetivamente os pontos de mudança de tendência do mercado.
A lógica central da estratégia inclui dois componentes principais: o canal G e o filtro EMA. O canal G é calculado com base no preço atual e nos dados históricos, ajustando dinamicamente a largura do canal por meio de algoritmos de adaptação. A linha de cima (a) leva o valor maior do preço atual em relação ao da linha de cima anterior e o ajusta dinamicamente com base nos parâmetros de largura e comprimento do canal; a linha de baixo (b) usa um método semelhante para calcular o valor mínimo; a linha de meio é a média aritmética da linha de cima para baixo.
O canal G e o sistema de negociação de filtragem de tendências EMA são estratégias de negociação completas que combinam o rompimento de canais e o acompanhamento de tendências. Através das características dinâmicas do canal G e da função de confirmação de tendências do EMA, a estratégia é capaz de capturar efetivamente os pontos de inflexão do mercado e controlar o risco de negociação.
/*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")