
Strategi ini adalah sistem perdagangan pengesanan trend berdasarkan saluran G yang disesuaikan dan rata-rata bergerak indeks (EMA). Saluran G terdiri daripada saluran atas (a), saluran bawah (b) dan saluran tengah (avg) untuk menentukan sempadan saluran dengan mengira harga semasa dan sejarah secara dinamik. Strategi ini menggabungkan EMA sebagai penapis trend, menghasilkan isyarat perdagangan dengan cara memotong harga dengan garis saluran dan hubungan kedudukan dengan EMA, untuk menangkap titik peralihan trend pasaran dengan berkesan.
Logik teras strategi terdiri daripada dua komponen utama: saluran G dan penapis EMA. Pengiraan saluran G didasarkan pada harga semasa dan data sejarah, menyesuaikan lebar saluran secara dinamik melalui algoritma penyesuaian diri. Jalur atas (a) mengambil nilai yang lebih besar dari harga semasa dan mengikut parameter lebar dan panjang saluran; Jalur bawah (b) menggunakan kaedah yang sama untuk mengira nilai minimum; dan Jalur tengah adalah purata operasi dari arah atas ke bawah.
Sistem perdagangan penapisan trend G Channel dan EMA adalah strategi perdagangan lengkap yang menggabungkan penembusan saluran dan pengesanan trend. Dengan ciri-ciri dinamik G Channel dan fungsi pengesahan trend EMA, strategi ini dapat menangkap titik-titik perubahan pasaran dengan berkesan dan mengawal risiko perdagangan. Walaupun terdapat beberapa batasan, prestasi keseluruhan strategi ini dijangka meningkat lagi dengan arah pengoptimuman yang dikemukakan.
/*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")