
Strategi ini menggunakan terobosan Bollinger Bands untuk mengesan isyarat perdagangan, mewujudkan perdagangan pasangan untuk dua aset yang berkaitan dengan baik, MCL dan YG. Apabila harga MCL menyentuh Bollinger Bands, lakukan plus MCL dan minus YG; Apabila harga MCL menyentuh Bollinger Bands, lakukan plus MCL dan minus YG, mewujudkan perdagangan beransur-ansur terhadap trend harga.
Pertama, strategi ini mengira StdDev rata-rata SMA dan standard deviasi berdasarkan harga penutupan dalam satu kitaran. Kemudian, satu perpindahan ditambah ke bawah rata-rata SMA, membentuk lintasan atas dan lintasan bawah Brin.
Strategi ini menggunakan strategi perdagangan terobosan beling, iaitu harga melihat lebih banyak ketika melintasi dan tidak melihat ketika melintasi. Dengan menyesuaikan lebar saluran secara dinamik untuk menyesuaikan diri dengan perubahan pasaran, beling dapat menyaring bunyi pasaran yang bergolak. Berbeza dengan saluran tetap, lebar saluran beling akan berkembang atau berkurangan dengan perubahan dalam turun naik pasaran.
Perdagangan berpasangan untuk dua aset yang berkaitan positif, MCL dan YG. Apabila MCL menembusi jalur, menunjukkan bahawa harga MCL berada dalam trend menaik, ketika ini melakukan lebih banyak MCL, sementara melakukan YG kosong, iaitu membeli aset yang lebih kuat dan menjual aset yang lebih lemah, untuk mendapatkan keuntungan dari perbezaan harga dua aset.
Risiko boleh dikurangkan dengan mengoptimumkan parameter, memilih objek dagangan yang lebih relevan dan lebih cair, dan menetapkan kedudukan hentian yang munasabah.
Strategi ini secara keseluruhannya lebih mudah dan langsung, menangkap trend melalui jalur Brin dan mendapatkan keuntungan alfa dari perdagangan pasangan. Tetapi terdapat beberapa ruang yang dapat dioptimumkan seperti pengoptimuman parameter, hentikan kerugian, dan pilihan pasangan. Dengan menguji parameter yang berbeza, objek perdagangan, dan memperkenalkan kaedah penapisan trend dengan betul, anda boleh mendapatkan kesan strategi yang lebih baik.
/*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)