Strategi Breakout Rata-rata Bergerak dan Breakout Bollinger Band

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

img

Gambaran umum

Strategi ini menggabungkan penggunaan indikator RSI untuk mengidentifikasi sinyal overbought dan oversold, Bollinger Bands untuk menentukan price breakout, dan moving average crossover untuk menilai pasar pada tahap tren yang berbeda, untuk mendapatkan keuntungan.

Logika Strategi

Strategi ini terdiri dari indikator utama berikut:

  1. Indikator RSI: Ketika garis RSI melintasi ambang overbought atau melintasi di bawah ambang oversold, perdagangan panjang atau pendek ditempatkan sesuai.

  2. Bollinger Bands: Ketika harga menembus Bollinger band atas, perdagangan pendek ditempatkan; ketika harga menembus Bollinger band bawah, perdagangan panjang ditempatkan.

  3. Moving Average: Harga tertinggi dan terendah selama periode tertentu (misalnya 5 periode) dihitung. Ketika harga lebih tinggi dari titik tertinggi selama 5 periode terakhir, perdagangan panjang ditempatkan; ketika harga lebih rendah dari titik terendah selama 5 periode terakhir, perdagangan pendek ditempatkan.

  4. MACD: Crossover dan death cross dari garis cepat, garis lambat dan garis MACD digunakan sebagai indikator penilaian tambahan.

Indikator ini bekerja sama untuk menilai pasar pada tahap tren dan konsolidasi. Bollinger Bands mengidentifikasi breakout dan pembalikan ke rata-rata. Rata-rata bergerak menentukan titik pembalikan tren selama konsolidasi. RSI ekstrim melihat kondisi pasar yang terlalu banyak dibeli / terlalu banyak dijual untuk perdagangan kontra-tren.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Kombinasi dari beberapa indikator meningkatkan akurasi. RSI, Bollinger Bands, moving average dan banyak lagi berinteraksi untuk menghasilkan sinyal perdagangan yang dapat diandalkan.

  2. Berlaku pada kondisi pasar yang berbeda. Bollinger Bands untuk tren, moving average untuk konsolidasi, RSI untuk ekstrim. Fleksibilitas dijamin.

  3. Frekuensi perdagangan yang wajar. parameter indikator diatur secara konservatif untuk menghindari over-trading.

  4. Struktur kode yang bersih, mudah dimengerti, diedit dan dibangun.

Analisis Risiko

Beberapa risiko membutuhkan perhatian:

  1. Risiko parameter. parameter indikator yang tidak tepat dapat menghasilkan sinyal perdagangan yang salah. parameter membutuhkan pengujian dan optimasi terus menerus.

  2. Risiko switch panjang/pendek. Perubahan posisi panjang/pendek yang sering terjadi di sekitar pembalikan tren meningkatkan biaya perdagangan. Periode kepemilikan dapat disesuaikan.

  3. Risiko pengkodean. kelemahan logis yang tersembunyi dalam kode dapat menyebabkan perdagangan yang tidak normal. penanganan pengecualian dan logging harus ditingkatkan.

Optimalisasi

Strategi ini dapat ditingkatkan dalam aspek berikut:

  1. Tambahkan stop loss untuk mengunci keuntungan dan mengurangi kerugian.

  2. Masukkan volume perdagangan untuk menghindari sinyal palsu.

  3. Memperkenalkan pembelajaran mesin untuk menemukan parameter optimal berdasarkan data historis.

  4. Bangun antarmuka grafis untuk tampilan kinerja yang intuitif.

  5. Melakukan backtesting untuk menemukan kombinasi parameter terbaik.

Kesimpulan

Strategi ini menggabungkan rata-rata bergerak, Bollinger Bands, RSI dan banyak lagi untuk menghasilkan sinyal perdagangan. fleksibilitas dan akurasi adalah kekuatan yang jelas, sementara pengaturan parameter dan risiko pengkodean perlu dikelola. Langkah selanjutnya adalah menambahkan stop, pembelajaran mesin untuk optimasi 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 banyak