Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan G-Channel dan Exponential Moving Average (EMA). Konsep inti adalah untuk menangkap arah tren pasar melalui G-Channel sambil menggunakan EMA untuk konfirmasi sinyal dan pengendalian risiko, bertujuan untuk menghasilkan keuntungan dari fluktuasi pasar. Strategi ini beroperasi dalam mode otomatis sepenuhnya tanpa intervensi manual.
Strategi ini beroperasi berdasarkan dua indikator inti: G-Channel dan EMA. G-Channel mengidentifikasi tren harga dengan secara dinamis menghitung band atas dan bawah, menghasilkan sinyal perdagangan ketika harga menembus saluran. Secara khusus, strategi ini menggunakan perhitungan G-Channel 100 periode, terus memperbarui batas saluran melalui rumus matematika. Selain itu, EMA 50 periode diperkenalkan sebagai konfirmasi sekunder, mengeksekusi perdagangan hanya ketika posisi relatif harga terhadap EMA memenuhi harapan. Kondisi beli dipicu ketika sinyal G-Channel panjang dan harga penutupan di bawah EMA, sementara kondisi jual terjadi ketika sinyal G-Channel pendek dan harga penutupan di atas EMA.
Strategi ini membangun sistem perdagangan kuantitatif yang kuat dengan menggabungkan indikator teknis G-Channel dan EMA. Logika strategi jelas, implementasinya sederhana, dan menawarkan skalabilitas yang baik. Melalui optimasi parameter yang tepat dan langkah-langkah pengendalian risiko, strategi menunjukkan potensi untuk menghasilkan pengembalian yang stabil dalam perdagangan langsung.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © stanleygao01 //@version=5 strategy('G-Channel with EMA Strategy', overlay=true) // G-Channel parameters length = input(100, title='G-Channel Length') src = input(close, title='Source') a = 0.0 b = 0.0 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 = math.avg(a, b) crossup = b[1] < close[1] and b > close crossdn = a[1] < close[1] and a > close bullish = ta.barssince(crossdn) <= ta.barssince(crossup) // EMA parameters emaLength = input(50, title='EMA Length') ema = ta.ema(close, emaLength) // Buy and Sell Conditions buyCondition = bullish and close < ema sellCondition = not bullish and close > ema // Plot G-Channel c = bullish ? color.lime : color.red p1 = plot(avg, title='Average', color=c, linewidth=1, transp=90) p2 = plot(close, title='Close Price', color=c, linewidth=1, transp=100) fill(p1, p2, color=c, transp=90) // Plot EMA plot(ema, title='EMA', color=color.new(color.blue, 0), linewidth=2) // Strategy Entries and Exits if buyCondition strategy.entry('Buy', strategy.long) if sellCondition strategy.close('Buy') // Plot Buy/Sell Labels plotshape(buyCondition, title='Buy Signal', location=location.belowbar, color=color.new(color.lime, 0), style=shape.labelup, text='Buy') plotshape(sellCondition, title='Sell Signal', location=location.abovebar, color=color.new(color.red, 0), style=shape.labeldown, text='Sell')