Sumber dimuat naik... memuat...

Strategi Dagangan Kuantitatif Lanjutan Menggabungkan Divergensi RSI dan Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2024-06-28 15:02:37
Tag:RSIMABBSMAEMASMMAWMAVWMA

img

Ringkasan

Ini adalah strategi perdagangan kuantitatif lanjutan berdasarkan perbezaan Indeks Kekuatan Relatif (RSI) dan gabungan pelbagai purata bergerak. Strategi ini terutamanya direka untuk perdagangan jangka pendek, bertujuan untuk menangkap titik pembalikan yang berpotensi dengan mengenal pasti perbezaan antara RSI dan tindakan harga. Ia menggabungkan RSI, pelbagai jenis purata bergerak, dan Bollinger Bands untuk menyediakan pedagang dengan kerangka analisis teknikal yang komprehensif.

Inti strategi ini terletak pada menggunakan perbezaan RSI untuk mengenal pasti keadaan overbought dan oversold yang berpotensi. Ia mengesan perbezaan dengan membandingkan tinggi dan rendah RSI dan harga, dan menggabungkan tahap RSI untuk menentukan titik masuk. Di samping itu, strategi ini menggabungkan pelbagai jenis purata bergerak, seperti Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponensial (EMA), Purata Bergerak Lesu (SMMA), dan lain-lain, untuk memberikan isyarat pengesahan trend tambahan.

Prinsip Strategi

  1. Pengiraan RSI: Menggunakan tempoh RSI yang boleh disesuaikan (default 60) untuk mengira nilai RSI.

  2. RSI Moving Average: Menggunakan purata bergerak kepada RSI, menyokong pelbagai jenis MA termasuk SMA, EMA, SMMA, WMA, dan VWMA.

  3. Pengesanan Perbezaan:

    • Divergensi Bullish: Bentuk apabila harga membuat rendah yang lebih rendah tetapi RSI tidak.
    • Divergensi Bearish: Bentuk apabila harga membuat tertinggi yang lebih tinggi tetapi RSI tidak.
  4. Syarat kemasukan:

    • Long Entry: Perbezaan bullish dikesan dan RSI di bawah 40.
    • Short Entry: Perbezaan menurun dikesan dan RSI di atas 60.
  5. Pengurusan Perdagangan:

    • Stop Loss: ditetapkan pada bilangan titik tetap (default 11 mata).
    • Ambil Keuntungan: Tetapkan pada bilangan mata tetap (default 33 mata).
  6. Imej:

    • Grafik garis RSI dan purata bergerak RSI.
    • Menampilkan garis mendatar pada tahap 30, 50, dan 70 RSI.
    • Pemandangan Bollinger Bands pilihan.
    • Tanda lokasi perbezaan pada carta.

Kelebihan Strategi

  1. Analisis Multi-Indikator: Menggabungkan RSI, purata bergerak, dan Bollinger Bands untuk pandangan pasaran yang komprehensif.

  2. Tetapan Parameter Fleksibel: Membolehkan pengguna menyesuaikan panjang RSI, jenis MA, dan parameter lain untuk keadaan pasaran yang berbeza.

  3. Pengesanan Perbezaan: Mengambil peluang pembalikan yang berpotensi dengan mengenal pasti perbezaan antara RSI dan harga.

  4. Pengurusan Risiko: Mekanisme stop loss dan mengambil keuntungan yang terbina dalam membantu mengawal risiko.

  5. Perwakilan Visual: Intuitif memaparkan isyarat perdagangan dan perbezaan pada carta.

  6. Kebolehsesuaian: Boleh digunakan untuk instrumen perdagangan dan jangka masa yang berbeza.

  7. Potensi Automasi: Mudah disatukan ke dalam sistem perdagangan automatik.

Risiko Strategi

  1. Risiko isyarat palsu: Boleh menghasilkan isyarat perbezaan palsu yang berlebihan di pasaran yang berbeza.

  2. Lag: RSI dan purata bergerak adalah penunjuk yang tertinggal, yang berpotensi membawa kepada entri yang sedikit tertunda.

  3. Overtrading: Dalam pasaran yang sangat tidak menentu, strategi boleh mencetuskan terlalu banyak isyarat perdagangan.

  4. Sensitiviti Parameter: Prestasi strategi sangat bergantung kepada tetapan parameter, yang mungkin memerlukan pengoptimuman yang berbeza untuk pasaran yang berbeza.

  5. Prestasi Pasaran Trend: Strategi divergensi sering boleh berdagang menentang trend di pasaran trend yang kuat.

  6. Risiko Stop Loss Tetap: Menggunakan bilangan titik tetap sebagai stop loss mungkin tidak sesuai untuk semua keadaan pasaran.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan Penapis Trend: Tambahkan purata bergerak jangka panjang atau penunjuk ADX untuk mengelakkan dagangan yang bertentangan dengan trend dalam trend yang kuat.

  2. Stop Loss Dinamik: Melaksanakan ATR atau stop loss dinamik berasaskan peratusan turun naik untuk menyesuaikan diri dengan turun naik pasaran yang berbeza.

  3. Analisis Pelbagai Jangka Masa: Menggabungkan isyarat dari jangka masa yang lebih tinggi untuk mengesahkan arah perdagangan.

  4. Integrasi Analisis Volume: Sertakan penunjuk jumlah untuk meningkatkan kebolehpercayaan isyarat.

  5. Mengoptimumkan Waktu Masuk: Pertimbangkan untuk menggunakan corak tindakan harga atau pembentukan candlestick untuk kemasukan yang tepat.

  6. Pengoptimuman Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter dan penjanaan isyarat.

  7. Syarat Penapisan Tambahan: Tambah penunjuk teknikal tambahan atau faktor asas untuk menapis isyarat perdagangan.

Kesimpulan

Strategi perdagangan kuantitatif canggih ini berdasarkan perbezaan RSI dan pelbagai kombinasi purata bergerak menyediakan pedagang dengan kerangka analisis yang kuat dan fleksibel. Dengan menggabungkan perbezaan RSI, pelbagai jenis purata bergerak, dan Bollinger Bands, strategi ini dapat menangkap titik pembalikan pasaran yang berpotensi sambil memberikan isyarat pengesahan trend.

Kelebihan utama strategi ini terletak pada kepelbagaian dan fleksibiliti, yang mampu menyesuaikan diri dengan keadaan pasaran yang berbeza. Walau bagaimanapun, pengguna perlu menyedari potensi risiko seperti isyarat palsu dan kemungkinan overtrading. Melalui pengoptimuman berterusan dan pengenalan alat analisis tambahan, strategi ini berpotensi menjadi sistem perdagangan yang boleh dipercayai.

Kuncinya adalah untuk menyesuaikan parameter mengikut instrumen dagangan tertentu dan keadaan pasaran, dan untuk mengesahkan isyarat bersama-sama dengan kaedah analisis lain.


/*backtest
start: 2024-05-28 00:00:00
end: 2024-06-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Advanced Gold Scalping Strategy with RSI Divergence", overlay=false)

// Input parameters
rsiLengthInput = input.int(60, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(ohlc4, "Source", group="RSI Settings")
maTypeInput = input.string("SMMA (RMA)", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(3, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input(true, title="Show Divergence", group="RSI Settings")
stopLoss = input.float(11, title="Stop Loss (pips)", group="Trade Settings")
takeProfit = input.float(33, title="Take Profit (pips)", group="Trade Settings")

// RSI and MA calculation
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

// Divergence detection
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5

plFound = na(ta.pivotlow(rsi, lookbackLeft, lookbackRight)) ? false : true
phFound = na(ta.pivothigh(rsi, lookbackLeft, lookbackRight)) ? false : true

_inRange(cond) =>
    bars = ta.barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

// Bullish divergence
rsiHL = rsi[lookbackRight] > ta.valuewhen(plFound, rsi[lookbackRight], 1) and _inRange(plFound[1])
priceLL = low[lookbackRight] < ta.valuewhen(plFound, low[lookbackRight], 1)
bullishDivergence = priceLL and rsiHL and plFound

// Bearish divergence
rsiLH = rsi[lookbackRight] < ta.valuewhen(phFound, rsi[lookbackRight], 1) and _inRange(phFound[1])
priceHH = high[lookbackRight] > ta.valuewhen(phFound, high[lookbackRight], 1)
bearishDivergence = priceHH and rsiLH and phFound

// Entry conditions
longCondition = bullishDivergence and rsi < 40
shortCondition = bearishDivergence and rsi > 60

// Convert pips to price for Gold (assuming 1 pip = 0.1 for XAUUSD)
stopLossPrice = stopLoss * 0.1
takeProfitPrice = takeProfit * 0.1

// Execute trades
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL", "Long", stop=strategy.position_avg_price - stopLossPrice, limit=strategy.position_avg_price + takeProfitPrice)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL", "Short", stop=strategy.position_avg_price + stopLossPrice, limit=strategy.position_avg_price - takeProfitPrice)

// Plotting
plot(rsi, "RSI", color=#7E57C2)
// plot(rsiMA, "RSI-based MA", color=color.yellow)
hline(60, "RSI Upper Band", color=#787B86)
// hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
hline(40, "RSI Lower Band", color=#787B86)
fill(hline(60), hline(40), color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

// Divergence visualization
plotshape(showDivergence and bullishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bullish Divergence", text="Bull", style=shape.labelup, location=location.absolute, color=color.green, textcolor=color.white)
plotshape(showDivergence and bearishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bearish Divergence", text="Bear", style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white)


Berkaitan

Lebih lanjut