Strategi Perdagangan Kuantitatif FNGU Berdasarkan Bollinger Bands dan RSI

Penulis:ChaoZhang, Tarikh: 2024-01-29 14:53:47
Tag:

img

Ringkasan

Strategi ini dipanggil FNGU Quantitative Trading Strategy Based on Bollinger Bands and RSI. Ia adalah strategi jangka panjang yang direka khas untuk saham FNGU. Strategi ini terutamanya menggunakan Bollinger Bands dan penunjuk RSI untuk mengenal pasti keadaan beli dan jual berlebihan saham untuk menjana isyarat beli dan jual.

Logika Strategi

Logik teras strategi ini adalah berdasarkan gabungan Bollinger Bands dan penunjuk RSI.

Pertama, Bollinger Bands mengandungi tiga garis: garisan tengah, garisan atas dan garisan bawah. Garis tengah adalah purata bergerak mudah n hari, sementara garisan atas dan garisan bawah adalah k kali penyimpangan standard di atas dan di bawah garisan tengah. Apabila harga mencapai atau menyentuh garisan atas atau bawah, ia menunjukkan stok berada dalam keadaan overbought atau oversold.

Dalam strategi ini, panjang tempoh garis tengah Bollinger Bands adalah 235 hari, dan nilai parameter k adalah 2. Ia menghasilkan isyarat beli apabila harga jatuh di bawah garis bawah Bollinger atau melintasi di atas garis tengah, dan isyarat jual apabila harga meningkat di atas garis atas Bollinger.

Kedua, penunjuk RSI mencerminkan tahap overbought / oversold saham. RSI di atas 70 menunjukkan status overbought, sementara di bawah 30 status oversold. Panjang tempoh parameter untuk RSI dalam strategi ini adalah 2.

Dalam strategi ini, Bollinger Bands dan penunjuk RSI digunakan bersama-sama: Isyarat beli dihasilkan apabila RSI memecahkan tahap oversold sementara harga menyentuh atau jatuh di bawah garis bawah Bollinger. Isyarat jual dihasilkan apabila RSI pecah dari tahap overbought sementara harga naik di atas garis atas Bollinger.

Kelebihan Strategi

Strategi ini mempunyai kelebihan berikut:

  1. Menggabungkan Bollinger Bands dan RSI menjadikan isyarat beli / jual lebih tepat dan boleh dipercayai.
  2. Bollinger Bands mengenal pasti zon harga overbought / oversold, sementara RSI menapis isyarat palsu. Kedua-duanya saling melengkapi.
  3. Ia hanya menjalankan perdagangan panjang, tidak perlu mempertimbangkan risiko pendek.
  4. Parameter yang dioptimumkan menjadikannya sesuai khusus untuk stok FNGU yang sangat tidak menentu.
  5. Ia melaksanakan stop loss automatik untuk mengurangkan risiko kerugian.
  6. Kesedaran pengekodan adalah mudah dan jelas, mudah difahami dan diubah suai.

Risiko dan Penyelesaian

Terdapat juga beberapa risiko yang berkaitan dengan strategi ini:

  1. Kedua-dua Bollinger Bands dan RSI boleh menghasilkan isyarat palsu, dengan mudah membawa kepada overfit. Parameter boleh diselaraskan atau lebih banyak penapis ditambahkan.
  2. FNGU sendiri mempunyai turun naik yang tinggi. Tetapan stop loss yang tidak betul boleh meningkatkan kerugian. Julat stop loss harus diperluaskan.
  3. Strategi ini hanya berlaku untuk stok yang sangat tidak menentu seperti FNGU dan bukannya yang lain. Parameter perlu disesuaikan untuk stok yang berbeza.
  4. Walaupun dioptimumkan, parameter mungkin menjadi usang dengan perubahan pasaran, yang memerlukan pemantauan dan pengoptimuman yang berterusan.

Arahan untuk Pengoptimuman Strategi

Terdapat beberapa arah untuk mengoptimumkan lagi strategi ini:

  1. Tambah penunjuk teknikal lain seperti KDJ dan MACD untuk menghasilkan isyarat yang lebih tepat.
  2. Mengoptimumkan parameter Bollinger Bands dan RSI untuk menyesuaikan lebih banyak jenis saham.
  3. Menggabungkan model pembelajaran mesin untuk membantu membuat keputusan dengan lebih banyak data.
  4. Melaksanakan perdagangan antara tempoh menggunakan data jangka masa yang lebih tinggi.
  5. Gabungkan analisis sentimen menggunakan data media sosial untuk menjana isyarat perdagangan.
  6. Membangunkan sistem backtesting kuantitatif untuk menguji dengan cepat tetapan parameter yang berbeza.

Kesimpulan

Ini adalah strategi jangka panjang yang sangat sesuai untuk saham yang sangat tidak menentu seperti FNGU. Dengan menggabungkan Bollinger Bands dan RSI, ia menjana isyarat perdagangan di sekitar tahap harga terlalu banyak beli / terlalu banyak jual, bertujuan untuk menangkap peluang pembalikan harga. Masih ada ruang yang besar untuk pengoptimuman untuk memperluaskan penerapannya dan meningkatkan prestasi.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
BBtarget38 = BBbasis + 0.38 * BBdev  // Line at 38% of Bollinger Band width
BBtarget50 = BBbasis + 0.50 * BBdev  // Line at 50% of Bollinger Band width

///////////// EMA
emaLength = input(20, title="EMA Period Length")
ema = ema(close, emaLength)

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width")  // Line at 38%
plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width")  // Line at 50%
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
longCondition = crossover(vrsi, RSIoverSold) and buyEntry
sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper

close_long = close > BBbasis
close_short = close < BBbasis

if (not na(vrsi))
    if longCondition
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")

if (sellCondition)
    strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell")
else
    strategy.cancel(id="Sell")

if close_short
    strategy.close("Sell")


Lebih lanjut