Chiến lược giao dịch đột phá biến động MCL-YG


Ngày tạo: 2023-11-14 13:49:12 sửa đổi lần cuối: 2023-11-14 13:49:12
sao chép: 0 Số nhấp chuột: 673
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch đột phá biến động MCL-YG

Tổng quan

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á.

Nguyên tắc chiến lược

Đầ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.

Lợi thế chiến lược

  1. Các giao dịch đột phá dựa trên Binance có thể lọc hiệu quả tiếng ồn thị trường và xác định xu hướng
  2. Sử dụng các cặp tài sản có liên quan, có thể nhận được lợi nhuận alpha từ sự khác biệt giá của tài sản có liên quan
  3. Định lượng vị trí động, kiểm soát rủi ro của các giao dịch cá nhân
  4. Sử dụng các tiêu chuẩn đột phá vào và quay trở lại trong trục logic ra sân, chiến lược logic đơn giản và rõ ràng

Rủi ro chiến lược

  1. Thiết lập không đúng các tham số Brin có thể dẫn đến tần số giao dịch quá cao hoặc tín hiệu không rõ ràng
  2. Giảm liên quan giữa các tài sản có liên quan sẽ dẫn đến thu nhập của cặp giao dịch alpha giảm
  3. Các giao dịch đột phá dễ bị lừa dối bởi các đột phá giả của thị trường biến động, dẫn đến tổn thất
  4. Không ngừng gây ra tổn thất đơn lẻ có thể mở rộng

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ý.

Tối ưu hóa chiến lược

  1. Tối ưu hóa các tham số của vòng Boolean để tìm các tham số kết hợp tốt nhất
  2. Thử nghiệm nhiều tài sản có liên quan hơn để giao dịch và chọn các danh mục có liên quan hơn
  3. Tăng logic dừng lỗ, hạn chế tổn thất đơn
  4. Thêm nhiều điều kiện lọc để tránh bị lừa bởi các đột phá giả mạo
  5. Kết hợp với các chỉ số khác như xác nhận khối lượng giao dịch, chuyển sang Timing

Tóm tắt

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.

Mã nguồn chiến lượ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)