MCL-YG Bollinger Band Breakout Pair Trading Strategy

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

img

Ringkasan

Strategi ini menggunakan penembusan Bollinger Band untuk menjana isyarat perdagangan dan melaksanakan perdagangan pasangan antara dua aset yang berkorelasi positif MCL dan YG. Ia pergi panjang MCL dan YG pendek apabila harga MCL menyentuh jalur atas, dan pergi pendek MCL dan YG panjang apabila harga MCL menyentuh jalur bawah, untuk berdagang di sepanjang trend harga.

Logika Strategi

Pertama, strategi ini mengira garis SMA dan StdDev berdasarkan harga penutupan dalam tempoh tertentu. Kemudian ia menambah ofset di atas dan di bawah SMA untuk membentuk jalur atas dan bawah Bollinger Bands. Isyarat beli dihasilkan apabila harga menyentuh jalur atas, dan isyarat jual apabila harga menyentuh jalur bawah.

Strategi ini menggunakan logik perdagangan breakout Bollinger Bands - pergi lama apabila harga pecah di atas band atas dan pergi pendek apabila harga pecah di bawah band bawah. Bollinger Bands secara dinamik menyesuaikan lebar band berdasarkan turun naik pasaran, yang membantu menapis bunyi pasaran semasa tempoh julat. Tidak seperti jalur saluran tetap, Bollinger Bands meluas semasa turun naik tinggi dan sempit semasa turun naik rendah. Ini membolehkan ia menapis beberapa bunyi apabila turun naik tinggi, dan menangkap pecah kecil apabila turun naik rendah.

Ia melaksanakan perdagangan pasangan antara dua aset yang berkorelasi positif MCL dan YG. Apabila MCL memecahkan band atas, ia menunjukkan MCL berada dalam trend menaik. Strategi ini pergi panjang MCL dan pendek YG - membeli aset yang lebih kuat dan menjual yang lebih lemah, untuk mendapat manfaat daripada perbezaan harga mereka.

Kelebihan

  1. Perdagangan pecah berdasarkan Bollinger Bands dapat menapis bunyi pasaran dengan berkesan dan mengenal pasti trend
  2. Perdagangan pasangan pada aset korelasi boleh memperoleh pulangan alpha dari perbezaan harga
  3. Ukuran kedudukan dinamik membantu mengawal risiko untuk perdagangan individu
  4. Logik kemasukan dan keluar pembalikan standard menjadikan logik strategi mudah dan jelas

Risiko

  1. Penyesuaian parameter Bollinger Bands yang buruk boleh menyebabkan terlalu banyak isyarat atau isyarat yang tidak jelas
  2. Penurunan korelasi antara aset boleh mengurangkan keuntungan dari perdagangan pasangan
  3. Penembusan boleh ditipu oleh isyarat palsu di pasaran bergelombang, menyebabkan kerugian
  4. Tiada stop loss boleh membawa kepada kerugian yang lebih besar untuk perdagangan tunggal

Risiko boleh dikurangkan dengan mengoptimumkan parameter, memilih aset dengan korelasi dan kecairan yang lebih kuat, menetapkan stop loss yang betul dan sebagainya.

Peluang Pengoptimuman

  1. Mengoptimumkan parameter Bollinger Bands untuk mencari kombinasi terbaik
  2. Uji lebih banyak pasangan aset yang berkaitan dan pilih kombinasi terbaik
  3. Tambah logik stop loss untuk mengehadkan kerugian untuk perdagangan tunggal
  4. Tambah lebih banyak penapis untuk mengelakkan isyarat pecah palsu
  5. Masukkan faktor lain seperti pengesahan jumlah untuk meningkatkan masa kemasukan

Ringkasan

Secara keseluruhan strategi ini mudah dan mudah, menangkap trend dengan Bollinger Bands dan mendapat alpha dari perdagangan pasangan. tetapi terdapat ruang untuk penambahbaikan dalam penyesuaian parameter, stop loss, dan pemilihan pasangan. pengujian lanjut parameter, kenderaan perdagangan, penapis trend dan lain-lain boleh meningkatkan prestasi 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 lanjut