
Chiến lược này sử dụng đợt phá vỡ vòng Brin để phát hiện tín hiệu giao dịch, thực hiện giao dịch cặp đối với hai tài sản có liên quan tích cực là MCL và YG. Khi giá MCL chạm đường dây Brin lên đường, hãy mua thêm MCL và mua thêm YG; Khi giá MCL chạm đường dây Brin xuống đường, hãy mua thêm MCL và mua thêm YG, thực hiện giao dịch theo xu hướng của xu hướng giá.
Đầu tiên, chiến lược này tính toán đường trung bình SMA và chênh lệch tiêu chuẩn StdDev dựa trên giá đóng cửa trong một chu kỳ nhất định. Sau đó, trên đường trung bình SMA, mỗi bên được thêm một số độ lệch, tạo thành đường ray trên và đường ray dưới của dải Brin.
Chiến lược này sử dụng tư duy giao dịch đột phá của bạch cầu, tức là giá sẽ nhìn nhiều khi phá vỡ đường lên và nhìn không khi phá vỡ đường xuống. Bạch cầu điều chỉnh chiều rộng kênh động để thích ứng với sự thay đổi của thị trường, có thể lọc hiệu quả tiếng ồn của thị trường dao động. Không giống như kênh cố định, chiều rộng kênh của bạch cầu sẽ mở rộng hoặc thu hẹp theo sự thay đổi của biến động thị trường.
Giao dịch cặp cho hai tài sản có liên quan tích cực là MCL và YG. Khi MCL phá vỡ đường ray, cho thấy giá MCL đang trong xu hướng tăng, hãy làm nhiều MCL và đồng thời làm YG, tức là mua tài sản mạnh hơn và bán tài sản yếu hơn để kiếm lợi nhuận từ sự chênh lệch giá của hai tài sản.
Có thể giảm rủi ro bằng cách tối ưu hóa các tham số, chọn đối tượng giao dịch có liên quan mạnh hơn, có tính thanh khoản tốt hơn, thiết lập vị trí dừng lỗ hợp lý.
Chiến lược này nhìn chung là đơn giản và trực tiếp, bắt xu hướng thông qua Brin và kiếm được lợi nhuận alpha từ giao dịch. Tuy nhiên, có một số không gian tối ưu hóa như tối ưu hóa tham số, dừng lỗ và lựa chọn cặp. Bằng cách thử nghiệm các tham số khác nhau, đối tượng giao dịch và đưa ra các phương pháp lọc xu hướng thích hợp, hiệu quả chiến lược tốt hơn có thể đạt được.
/*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)