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.
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.
Risiko boleh dikurangkan dengan mengoptimumkan parameter, memilih aset dengan korelasi dan kecairan yang lebih kuat, menetapkan stop loss yang betul dan sebagainya.
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)