Mengikuti Aliran Saluran Gaussian dan Strategi Dagangan RSI Stochastic

RSI GWMA GWSD SRSI
Tarikh penciptaan: 2025-02-20 11:01:36 Akhirnya diubah suai: 2025-02-20 11:01:36
Salin: 1 Bilangan klik: 638
2
fokus pada
319
Pengikut

Mengikuti Aliran Saluran Gaussian dan Strategi Dagangan RSI Stochastic Mengikuti Aliran Saluran Gaussian dan Strategi Dagangan RSI Stochastic

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking yang menggabungkan saluran rata-rata bergerak bertimbangan Gaussian dan indeks yang agak kuat secara rawak (RSI Stochastic). Strategi ini membina saluran harga melalui kaedah Gaussian dan menggabungkan isyarat silang RSI secara rawak untuk menentukan masa masuk dan keluar, untuk mendapatkan dan mengkonfirmasi dinamika trend. Strategi ini mempunyai asas matematik yang baik dan dapat menyaring bunyi pasaran dengan berkesan untuk menangkap trend utama.

Prinsip Strategi

Strategi ini mempunyai dua bahagian utama:

  1. Sistem saluran Gaussian: Membina saluran harga menggunakan purata bergerak berpaut Gaussian ((GWMA) dan perbezaan piawai berpaut Gaussian ((GWSD)). GWMA memberikan berat yang lebih besar kepada data terkini, menjadikan garis rata lebih sensitif terhadap tindak balas perubahan harga.

  2. Sistem RSI rawak: pengolahan RSI tradisional secara rawak, mengira nilai K dan nilai D. Pengolahan ini lebih baik untuk mengenal pasti kawasan overbought dan oversold, memberikan isyarat momentum yang lebih tepat.

Sinyal dagangan dihasilkan berdasarkan syarat berikut:

  • Buat lebih banyak masuk: harga menutup harga menembusi saluran Gauss dan melintasi garis D pada garis K RSI secara rawak
  • Sinyal Posisi Rendah: Harga Penutupan Penutupan Harga Menjatuhkan Saluran Gaus

Kelebihan Strategik

  1. Dasar matematik yang kukuh: Menggunakan kaedah Gauss untuk membina saluran harga dengan asas teori yang lebih baik daripada purata bergerak sederhana.
  2. Kebolehpercayaan isyarat yang tinggi: mekanisme pengesahan dua kali yang digabungkan dengan penembusan harga dan pengesahan momentum, dapat mengurangkan isyarat palsu secara berkesan.
  3. Adaptif: Kaos penambahan berat boleh menyesuaikan lebar saluran secara automatik mengikut turun naik pasaran.
  4. Kawalan risiko yang sempurna: Kawalan kos dan risiko perdagangan yang berkesan dicapai melalui pengurusan dana dan persediaan komisen.

Risiko Strategik

  1. Kepercayaan trend: Ia boleh menghasilkan isyarat palsu yang kerap dalam pasaran yang bergolak, yang menyebabkan perdagangan berlebihan.
  2. Kesan ketinggalan: Isyarat mungkin ketinggalan pada titik peralihan trend kerana penggunaan perapisan garis purata berganda.
  3. Sensitiviti parameter: Kesan strategi sangat dipengaruhi oleh tetapan parameter, yang memerlukan pengoptimuman parameter dengan teliti.

Arah pengoptimuman strategi

  1. Pengenalan keadaan pasaran: Menambah mekanisme penilaian keadaan pasaran, menggunakan parameter yang berbeza dalam keadaan pasaran yang berbeza.
  2. Pengoptimuman hentian: memperkenalkan mekanisme hentian dinamik, seperti hentian penyesuaian berdasarkan ATR atau kadar turun naik.
  3. Penapisan isyarat: menambah pengesahan jumlah transaksi atau petunjuk teknikal lain sebagai syarat penapisan tambahan.
  4. Pengurusan Wang: Strategi pengurusan kedudukan yang lebih fleksibel, menyesuaikan peratusan pegangan secara dinamik mengikut kekuatan isyarat.

ringkaskan

Strategi ini, dengan menggabungkan saluran Gaussian dan RSI acak, membina sistem pemantauan trend yang mempunyai asas matematik yang kukuh. Strategi ini berprestasi di pasaran yang jelas dalam trend, tetapi perlu berhati-hati dengan pengoptimuman parameter dan kesesuaian dengan persekitaran pasaran.

Kod 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))