
Strategi ini menggunakan Bollinger Bands Breakthrough untuk mendeteksi sinyal perdagangan, yang memungkinkan pair trading pada dua aset yang terkait secara positif, MCL dan YG. Ketika harga MCL menyentuh Bollinger Bands, melakukan over MCL dan over YG; Ketika harga MCL menyentuh Bollinger Bands, melakukan over MCL dan over YG, untuk mencapai perdagangan berlanjut pada tren harga.
Pertama, strategi ini menghitung SMA rata-rata dan standar deviasi StdDev berdasarkan harga close out dalam periode tertentu. Kemudian, masing-masing nilai offset ditambahkan ke SMA rata-rata, membentuk lintasan atas dan bawah Brin-band.
Strategi ini mengadopsi strategi perdagangan terobosan burin, yaitu melihat lebih banyak saat harga menerobos ke atas dan tidak melihat apa-apa saat terobos ke bawah. Burin menyesuaikan lebar saluran secara dinamis untuk beradaptasi dengan perubahan pasar, sehingga dapat secara efektif menyaring kebisingan pasar yang bergoyang. Berbeda dengan saluran tetap, lebar saluran burin akan meluas atau menyusut seiring dengan perubahan volatilitas pasar.
Perdagangan pasangan pada dua aset yang terkait positif, MCL dan YG. Ketika MCL terjatuh, menunjukkan bahwa harga MCL berada dalam tren naik, maka melakukan lebih banyak MCL, sementara melakukan YG kosong, yaitu membeli aset yang lebih kuat dan menjual aset yang lebih lemah, untuk mendapatkan keuntungan dari perbedaan harga dua aset.
Risiko dapat dikurangi dengan mengoptimalkan parameter, memilih objek perdagangan yang lebih relevansi dan likuiditas yang lebih baik, dan menetapkan posisi stop loss yang wajar.
Strategi ini secara keseluruhan lebih sederhana dan langsung, menangkap tren melalui Brin band dan mendapatkan keuntungan alfa dari perdagangan pasangan. Namun, ada beberapa ruang yang dapat dioptimalkan seperti optimasi parameter, stop loss, dan pilihan pasangan. Efek strategi yang lebih baik dapat diperoleh dengan menguji berbagai parameter, obyek perdagangan, dan metode seperti penyaringan tren yang diperkenalkan dengan tepat.
/*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)