MCL-YG Bollinger Band Breakout Pair Trading Strategy

Penulis:ChaoZhang, Tanggal: 2023-11-14 13:49:12
Tag:

img

Gambaran umum

Strategi ini menggunakan Bollinger Band breakout untuk menghasilkan sinyal perdagangan dan menerapkan perdagangan pasangan antara dua aset yang berkorelasi positif MCL dan YG. Ini pergi panjang MCL dan pendek YG ketika harga MCL menyentuh band atas, dan pergi pendek MCL dan panjang YG ketika harga MCL menyentuh band bawah, untuk berdagang sepanjang tren harga.

Logika Strategi

Pertama, strategi ini menghitung garis SMA dan StdDev berdasarkan harga penutupan selama periode tertentu. Kemudian menambahkan offset di atas dan di bawah SMA untuk membentuk band atas dan bawah Bollinger Bands. Sinyal beli dihasilkan ketika harga menyentuh band atas, dan sinyal jual ketika harga menyentuh band bawah.

Strategi ini menggunakan logika perdagangan breakout dari Bollinger Bands - pergi panjang ketika harga pecah di atas band atas dan pergi pendek ketika harga pecah di bawah band bawah. Bollinger Bands secara dinamis menyesuaikan lebar band berdasarkan volatilitas pasar, yang membantu menyaring kebisingan pasar selama periode rentang. Tidak seperti band saluran tetap, Bollinger Bands melebar selama volatilitas tinggi dan sempit selama volatilitas rendah. Hal ini memungkinkan untuk menyaring beberapa kebisingan ketika volatilitas tinggi, dan menangkap breakout yang lebih kecil ketika volatilitas rendah.

Ini menerapkan perdagangan pasangan antara dua aset yang berkorelasi positif MCL dan YG. Ketika MCL pecah di atas band atas, itu menunjukkan MCL berada dalam tren naik. Strategi pergi panjang MCL dan pendek YG - membeli aset yang lebih kuat dan menjual yang lebih lemah, untuk mendapatkan keuntungan dari perbedaan harga mereka.

Keuntungan

  1. Perdagangan breakout berdasarkan Bollinger Bands dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi tren
  2. Perdagangan pasangan pada aset korelasi dapat mendapatkan pengembalian alfa dari perbedaan harga
  3. Dimensi posisi dinamis membantu mengendalikan risiko untuk perdagangan individu
  4. Logika masuk dan keluar retargeting standar membuat logika strategi sederhana dan jelas

Risiko

  1. Penyesuaian parameter Bollinger Bands yang buruk dapat menyebabkan terlalu banyak sinyal atau sinyal yang tidak jelas
  2. Penurunan korelasi antara aset dapat mengurangi keuntungan dari perdagangan pasangan
  3. Penembusan dapat ditipu oleh sinyal palsu di pasar yang bergolak, menyebabkan kerugian
  4. Tidak ada stop loss dapat menyebabkan kerugian yang diperbesar untuk perdagangan tunggal

Risiko dapat dikurangi dengan mengoptimalkan parameter, memilih aset dengan korelasi dan likuiditas yang lebih kuat, mengatur stop loss yang tepat, dll.

Peluang Optimalisasi

  1. Mengoptimalkan parameter Bollinger Bands untuk menemukan kombinasi terbaik
  2. Uji lebih banyak pasangan aset yang berkorelasi dan pilih kombinasi terbaik
  3. Tambahkan logika stop loss untuk membatasi kerugian untuk perdagangan tunggal
  4. Tambahkan lebih banyak filter untuk menghindari sinyal breakout palsu
  5. Masukkan faktor lain seperti konfirmasi volume untuk meningkatkan waktu masuk

Ringkasan

Secara keseluruhan strategi ini sederhana dan langsung, menangkap tren dengan Bollinger Bands dan mendapatkan alpha dari perdagangan pasangan. tetapi ada ruang untuk perbaikan dalam pengaturan parameter, stop loss, dan pemilihan pasangan. pengujian lebih lanjut dari parameter, kendaraan perdagangan, filter tren dll dapat meningkatkan kinerja strategi.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shark792

//@version=5

// 1. Define strategy settings
strategy(title="MCL-YG Pair Trading Strategy", overlay=true,
     pyramiding=0, initial_capital=10000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

smaLength = input.int(title="SMA Length", defval=20)
stdLength = input.int(title="StdDev Length", defval=20)

ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5)
lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5)

usePosSize = input.bool(title="Use Position Sizing?", defval=true)
riskPerc   = input.float(title="Risk %", defval=0.5, step=0.25)


// 2. Calculate strategy values
smaValue = ta.sma(close, smaLength)
stdDev   = ta.stdev(close, stdLength)

upperBand = smaValue + (stdDev * ubOffset)
lowerBand = smaValue - (stdDev * lbOffset)

riskEquity  = (riskPerc / 100) * strategy.equity
atrCurrency = (ta.atr(20) * syminfo.pointvalue)
posSize     = usePosSize ? math.floor(riskEquity / atrCurrency) : 1


// 3. Output strategy data
plot(series=smaValue, title="SMA", color=color.teal)

plot(series=upperBand, title="UB", color=color.green,
     linewidth=2)
plot(series=lowerBand, title="LB", color=color.red,
     linewidth=2)


// 4. Determine long trading conditions
enterLong = ta.crossover(close, upperBand)
exitLong  = ta.crossunder(close, smaValue)


// 5. Code short trading conditions
enterShort = ta.crossunder(close, lowerBand)
exitShort  = ta.crossover(close, smaValue)


// 6. Submit entry orders
if enterLong
    strategy.entry(id="EL", direction=strategy.long, qty=posSize)

if enterShort
    strategy.entry(id="ES", direction=strategy.short, qty=posSize)


// 7. Submit exit orders
strategy.close(id="EL", when=exitLong)
strategy.close(id="ES", when=exitShort)



Lebih banyak