Strategi Penembusan Purata Bergerak dan Penembusan Bollinger Band

Penulis:ChaoZhang, Tarikh: 2024-02-19 14:18:00
Tag:

img

Ringkasan

Strategi ini menggabungkan penggunaan penunjuk RSI untuk mengenal pasti isyarat overbought dan oversold, Bollinger Bands untuk menentukan penembusan harga, dan crossover purata bergerak untuk menilai pasaran dalam peringkat trend yang berbeza, untuk mendapat keuntungan.

Logika Strategi

Strategi ini terdiri daripada penunjuk utama berikut:

  1. Indikator RSI: Apabila garisan RSI melintasi ambang overbought atau melintasi di bawah ambang oversold, perdagangan panjang atau pendek diletakkan dengan sewajarnya.

  2. Bollinger Bands: Apabila harga menembusi band atas Bollinger, perdagangan pendek diletakkan; apabila harga memecahkan band bawah Bollinger, perdagangan panjang diletakkan.

  3. Moving Average: Harga tertinggi dan terendah dalam tempoh tertentu (contohnya 5 tempoh) dikira. Apabila harga lebih tinggi daripada titik tertinggi dalam tempoh 5 tempoh terakhir, perdagangan panjang diletakkan; apabila harga lebih rendah daripada titik terendah dalam tempoh 5 tempoh terakhir, perdagangan pendek diletakkan.

  4. MACD: Salib silang dan silang kematian garis pantas, garis perlahan dan garis MACD digunakan sebagai penunjuk penilaian tambahan.

Indikator-indikator ini bekerjasama untuk menilai pasaran pada peringkat trend dan penyatuan. Bollinger Bands mengenal pasti pecah dan pembalikan ke rata-rata. Purata bergerak menentukan titik pembalikan trend semasa penyatuan. RSI melampau melihat keadaan pasaran yang terlalu banyak dibeli / terlalu banyak dijual untuk perdagangan kontra-trend.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Gabungan pelbagai penunjuk meningkatkan ketepatan. RSI, Bollinger Bands, purata bergerak dan banyak lagi berinteraksi untuk menghasilkan isyarat perdagangan yang boleh dipercayai.

  2. Berlaku pada keadaan pasaran yang berbeza. Bollinger Bands untuk trend, purata bergerak untuk penyatuan, RSI untuk ekstrem. Fleksibiliti dijamin.

  3. Frekuensi dagangan yang munasabah. Parameter penunjuk ditetapkan secara konservatif untuk mengelakkan perdagangan berlebihan.

  4. Struktur kod yang bersih, mudah difahami, diedit dan dibina.

Analisis Risiko

Beberapa risiko memerlukan perhatian:

  1. Risiko parameter. Parameter penunjuk yang tidak sesuai boleh menghasilkan isyarat perdagangan yang salah. Parameter memerlukan ujian dan pengoptimuman berterusan.

  2. Risiko pertukaran panjang/pendek. Perubahan kedudukan panjang/pendek yang kerap di sekitar pembalikan trend meningkatkan kos dagangan. Tempoh pegangan boleh diselaraskan.

  3. Risiko pengekodan. Kelemahan logik yang tersembunyi dalam kod boleh membawa kepada perdagangan yang tidak normal. Pengendalian pengecualian dan pencatatan harus ditingkatkan.

Pengoptimuman

Strategi ini boleh ditingkatkan dalam aspek berikut:

  1. Tambah stop loss untuk mengunci keuntungan dan mengurangkan kerugian.

  2. Menggabungkan jumlah dagangan untuk mengelakkan isyarat palsu.

  3. Memperkenalkan pembelajaran mesin untuk mencari parameter optimum berdasarkan data sejarah.

  4. Membina antara muka grafik untuk paparan prestasi yang intuitif.

  5. Melakukan backtesting untuk mencari kombinasi parameter terbaik.

Kesimpulan

Strategi ini menggabungkan purata bergerak, Bollinger Bands, RSI dan banyak lagi untuk menjana isyarat perdagangan. Kepelbagaian dan ketepatannya adalah kekuatan yang jelas, sementara tetapan parameter dan risiko pengekodan perlu diuruskan. Langkah seterusnya adalah menambah berhenti, pembelajaran mesin untuk pengoptimuman parameter, GUI untuk pemantauan, dan untuk meningkatkan penanganan pengecualian.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(close[lengthch]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
    
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Lebih lanjut