Chiến lược định lượng kết hợp kênh Donchian động và đường trung bình động đơn giản

SMA
Ngày tạo: 2024-06-17 17:29:48 sửa đổi lần cuối: 2024-06-17 17:29:48
sao chép: 4 Số nhấp chuột: 772
1
tập trung vào
1617
Người theo dõi

Chiến lược định lượng kết hợp kênh Donchian động và đường trung bình động đơn giản

Tổng quan

Chiến lược này kết hợp hai chỉ số kỹ thuật của kênh Đường Dương và đường trung bình di chuyển đơn giản. Khởi động vị trí cao khi giá phá vỡ đường đi xuống của kênh Đường Dương và cao hơn đường trung bình di chuyển đơn giản, mở vị trí trống khi giá phá vỡ đường đi lên của kênh Đường Dương và thấp hơn đường trung bình di chuyển đơn giản.

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

  1. Tính giá trên và dưới đường truyền Đồng Chiên. Giá trên đường truyền Đồng Chiên là giá cao nhất trong n chu kỳ qua, giá thấp nhất trong n chu kỳ qua.
  2. Tính trung bình di chuyển đơn giản. Một trung bình di chuyển đơn giản là trung bình toán học của giá đóng cửa trong m chu kỳ qua.
  3. Bắt đầu nhiều vị trí: Bắt đầu nhiều vị trí khi giá thấp hơn đường đi xuống của Đường Đông Dương và giá đóng cửa cao hơn đường trung bình di chuyển đơn giản.
  4. Bỏ vị trí trống: Khi giá cao hơn đường Dongguan và giá đóng cửa thấp hơn trung bình di chuyển đơn giản.
  5. Định vị nhiều đầu: Định vị nhiều đầu khi giá chạm đường Dongxian.
  6. Vị trí trống: Vị trí trống khi giá chạm đường đi xuống của Đường Đông Dương.

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

  1. Kết hợp hai yếu tố thị trường là xu hướng và biến động. Đường trung bình di chuyển đơn giản để nắm bắt xu hướng, đường truyền Đường Dương để nắm bắt biến động, có thể nắm bắt tốt hơn cơ hội rút lui trong tình huống xu hướng.
  2. Các điều kiện dừng là rõ ràng, giúp khóa lợi nhuận kịp thời. Nhiều đầu và đầu trống đều có thể đóng cửa vị trí lợi nhuận kịp thời trước khi xu hướng đảo ngược.
  3. Các tham số ít hơn, khó tối ưu hóa hơn. Chiến lược này chỉ có ba tham số là chu kỳ đường Dongxian, độ lệch và chu kỳ trung bình di chuyển đơn giản, giúp tối ưu hóa.

Rủi ro chiến lược

  1. Giao dịch thường xuyên. Chiến lược này có tần suất mở lỗ cao, gây ảnh hưởng đến thu nhập trong thị trường có chi phí giao dịch cao. Có thể giảm số lần giao dịch bằng cách nới lỏng điều kiện mở vị trí một cách vừa phải hoặc tăng khung thời gian.
  2. Thị trường chấn động không hoạt động tốt. Khi xu hướng không rõ ràng, chiến lược này có thể bị tổn thất nhiều hơn. Có thể xác định thị trường chấn động bằng chỉ số biến động thống kê và tạm dừng chiến lược.
  3. Tính ổn định của tham số là không đủ. Các tham số tối ưu có thể khác nhau nhiều so với các tiêu chuẩn và chu kỳ khác nhau.

Hướng tối ưu hóa chiến lược

  1. Thêm các điều kiện mở vị trí tùy chọn kết hợp với các chỉ số khác, chẳng hạn như yêu cầu ADX trong DMI lớn hơn một ngưỡng nhất định để cho phép mở vị trí, hoặc mở nhiều vị trí khi RSI rời khỏi vùng bán tháo, tăng tỷ lệ mở vị trí.
  2. Sử dụng dây dừng động thay cho dây dừng cố định của kênh Dongxian, để thực hiện chức năng theo dõi lợi nhuận. Ví dụ: nhiều đầu có thể được đặt hàng trên dây dừng ATR hoặc SAR sau khi giá chạm vào kênh Dongxian.
  3. Chuyển đổi chu kỳ kênh Đông Dương theo mức độ biến động, rút ngắn chu kỳ kênh Đông Dương trong tình trạng thị trường biến động cao và kéo dài chu kỳ trong tình trạng thị trường biến động thấp. Điều này giúp thích ứng với các thị trường khác nhau.

Tóm tắt

Chiến lược kết hợp đường Đường Đường Đường Động với Đường Di chuyển Đơn giản là một khung chiến lược giao dịch định lượng đơn giản và dễ sử dụng. Nó xây dựng logic mở vị trí bằng hai góc độ theo dõi xu hướng và phá vỡ biến động, phù hợp với các giống có xu hướng mạnh. Tuy nhiên, chiến lược này không hoạt động tốt trong thị trường thường xuyên biến động, và các tham số thường ổn định.

Mã nguồn chiến lược
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBK Donchian Channel Strategy", overlay=true)

// Inputs
donchian_period = input.int(20, title="Donchian Channel Period")
donchian_offset = input.int(1, title="Donchian Channel Offset")
sma_period = input.int(200, title="SMA Period")
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")
trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])

// Calculate indicators
donchian_upper = ta.highest(high, donchian_period)[donchian_offset]
donchian_lower = ta.lowest(low, donchian_period)[donchian_offset]
sma = ta.sma(close, sma_period)

// Plot indicators
plot(donchian_upper, color=color.red, title="Donchian Upper")
plot(donchian_lower, color=color.green, title="Donchian Lower")
plot(sma, color=color.blue, title="SMA")

// Helper function to check if within testing period
is_in_testing_period() => true

// Entry conditions
long_condition = low <= donchian_lower and close > sma
short_condition = high >= donchian_upper and close < sma

// Exit conditions
exit_long_condition = high >= donchian_upper
exit_short_condition = low <= donchian_lower

// Open long position
if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition)
    strategy.entry("Long", strategy.long)

// Close long position
if (is_in_testing_period() and exit_long_condition)
    strategy.close("Long")

// Open short position
if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition)
    strategy.entry("Short", strategy.short)

// Close short position
if (is_in_testing_period() and exit_short_condition)
    strategy.close("Short")

// Close all positions at the end of the testing period
if not is_in_testing_period()
    strategy.close_all()