Strategi Perdagangan Mengikuti Tren Saluran Gaussian dan RSI Stokastik

RSI GWMA GWSD SRSI
Tanggal Pembuatan: 2025-02-20 11:01:36 Akhirnya memodifikasi: 2025-02-20 11:01:36
menyalin: 1 Jumlah klik: 638
2
fokus pada
319
Pengikut

Strategi Perdagangan Mengikuti Tren Saluran Gaussian dan RSI Stokastik Strategi Perdagangan Mengikuti Tren Saluran Gaussian dan RSI Stokastik

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan saluran rata-rata bergerak berskala Gaussian dan indeks relatif kuat acak (Stochastic RSI). Strategi ini membangun saluran harga dengan metode Gaussian, dan menggabungkan sinyal silang dari indikator RSI acak untuk menentukan waktu masuk dan keluar, untuk menangkap dan mengkonfirmasi dinamika tren. Strategi ini memiliki dasar matematika yang baik dan dapat menyaring kebisingan pasar secara efektif untuk menangkap tren utama.

Prinsip Strategi

Logika inti dari strategi ini terdiri dari dua bagian utama:

  1. Gaussian channel system: menggunakan Gaussian weighted moving average (GWMA) dan Gaussian weighted standard deviation (GWSD) untuk membangun harga channel. GWMA memberikan bobot yang lebih besar pada data terbaru, sehingga resonansi lebih sensitif terhadap perubahan harga.

  2. Sistem RSI acak: pengolahan acak dari indikator RSI tradisional untuk menghitung nilai K dan nilai D. Pengolahan ini dapat lebih baik mengidentifikasi zona overbought dan oversold, memberikan sinyal momentum yang lebih akurat.

Sinyal perdagangan dihasilkan berdasarkan kondisi berikut:

  • Multiple entry: harga menutup harga menembus Gaussian channel dan melewati garis D pada garis K dari RSI acak
  • Sinyal Posisi Rendah: Harga Menjatuh dari Jalur Gaus

Keunggulan Strategis

  1. Dasar matematika yang kuat: Menggunakan metode Gaussian weighted untuk membangun saluran harga, memiliki dasar teoretis yang lebih baik daripada rata-rata bergerak sederhana.
  2. Keandalan sinyal yang tinggi: mekanisme verifikasi ganda yang dikombinasikan dengan terobosan harga dan konfirmasi momentum, dapat secara efektif mengurangi sinyal palsu.
  3. Adaptif: Metode Gaussian dapat secara otomatis menyesuaikan lebar saluran sesuai dengan fluktuasi pasar.
  4. Pengendalian risiko yang baik: Pengendalian biaya dan risiko transaksi yang efektif melalui manajemen dana dan pengaturan komisi.

Risiko Strategis

  1. Tergantung pada tren: Seringnya sinyal palsu dapat dihasilkan di pasar yang bergejolak, yang menyebabkan overtrading.
  2. Dampak lag: Karena penggunaan multiple mean line smoothing, sinyal lag mungkin terjadi pada titik perputaran tren.
  3. Sensitivitas parameter: Efek strategi dipengaruhi oleh pengaturan parameter, yang perlu dioptimalkan dengan hati-hati.

Arah optimasi strategi

  1. Identifikasi lingkungan pasar: Menambahkan mekanisme penilaian lingkungan pasar, menggunakan pengaturan parameter yang berbeda dalam kondisi pasar yang berbeda.
  2. Optimasi Stop Loss: memperkenalkan mekanisme stop loss dinamis, seperti stop loss adaptif berdasarkan ATR atau volatilitas.
  3. Sinyal penyaringan: menambahkan konfirmasi volume transaksi atau indikator teknis lainnya sebagai syarat penyaringan tambahan.
  4. Pengelolaan dana: Strategi manajemen posisi yang lebih fleksibel, menyesuaikan rasio kepemilikan posisi secara dinamis sesuai dengan intensitas sinyal.

Meringkaskan

Strategi ini membangun sistem pelacakan tren yang memiliki dasar matematika yang kuat dengan menggabungkan saluran Gauss dan indikator RSI acak. Strategi ini berkinerja sangat baik di pasar yang jelas tren, tetapi perlu memperhatikan optimasi parameter dan adaptasi dengan lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Gaussian Channel + Stoch RSI Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1)

// User Inputs
length     = input.int(20, "Gaussian Length", minval=5)
multiplier = input.float(2.0, "Channel Multiplier", step=0.1)
rsiLength  = input.int(14, "RSI Length", minval=1)
stochLength= input.int(14, "Stoch RSI Length", minval=1)
kLength    = input.int(3, "Stoch K Smoothing", minval=1)
dLength    = input.int(3, "Stoch D Smoothing", minval=1)

// Gaussian Weighted Moving Average Function
f_gaussian(source, length) =>
    half = (length - 1) / 2.0
    sum = 0.0
    norm = 0.0
    // Gaussian standard deviation chosen as length/6 for a smooth curve
    denom = (length / 6.0) * (length / 6.0)
    for i = 0 to length - 1
        x = i - half
        w = math.exp(-(x * x) / (2 * denom))
        sum += source[i] * w
        norm += w
    sum / norm

// Gaussian Weighted Standard Deviation Function
f_gaussian_std(source, length) =>
    half = (length - 1) / 2.0
    gavg = f_gaussian(source, length)
    sum = 0.0
    norm = 0.0
    denom = (length / 6.0) * (length / 6.0)
    for i = 0 to length - 1
        x = i - half
        w = math.exp(-(x * x)/(2*denom))
        diff = source[i] - gavg
        sum += diff * diff * w
        norm += w
    math.sqrt(sum/norm)

// Compute Gaussian Channel
gaussMid = f_gaussian(close, length)
gaussStd = f_gaussian_std(close, length)
gaussUpper = gaussMid + gaussStd * multiplier
gaussLower = gaussMid - gaussStd * multiplier

// Stochastic RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stoch = 100 * (rsi - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10)
k = ta.sma(stoch, kLength)
d = ta.sma(k, dLength)

// Conditions
// Long entry: Price closes above upper Gaussian line AND Stoch RSI K > D (stochastic is "up")
longCondition = close > gaussUpper and k > d

// Exit condition: Price closes below upper Gaussian line
exitCondition = close < gaussUpper

// Only trade in the specified date range
inDateRange = time >= timestamp("2018-01-01T00:00:00") and time < timestamp("2069-01-01T00:00:00")

// Submit Orders
if inDateRange
    if longCondition and strategy.position_size <= 0
        strategy.entry("Long", strategy.long)
    if exitCondition and strategy.position_size > 0
        strategy.close("Long")
        
// Plot Gaussian Channel
plot(gaussMid, "Gaussian Mid", color=color.new(color.yellow, 0))
plot(gaussUpper, "Gaussian Upper", color=color.new(color.green, 0))
plot(gaussLower, "Gaussian Lower", color=color.new(color.red, 0))