Chiến lược trung bình động kép nâng cao và hệ thống lọc biến động ATR

EMA ATR MA
Ngày tạo: 2024-11-29 16:14:30 sửa đổi lần cuối: 2024-11-29 16:14:30
sao chép: 0 Số nhấp chuột: 559
1
tập trung vào
1617
Người theo dõi

Chiến lược trung bình động kép nâng cao và hệ thống lọc biến động ATR

Tổng quan

Đây là một chiến lược giao dịch định lượng kết hợp các chỉ số trung bình di chuyển ((EMA) chéo và các bộ lọc trung bình thực tế của sóng ((ATR)). Chiến lược này có hiệu quả trong việc tăng tỷ lệ Sharpe và hiệu suất tổng thể của chiến lược bằng cách xác định xu hướng mạnh và giao dịch trong môi trường thị trường có tỷ lệ biến động cao. Chiến lược sử dụng 50 chu kỳ và 200 chu kỳ EMA để nắm bắt xu hướng trung và dài hạn, đồng thời sử dụng chỉ số ATR để đánh giá sự biến động của thị trường và chỉ giao dịch khi tỷ lệ biến động vượt quá một ngưỡng nhất định.

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

Về mặt định hướng, chiến lược sử dụng 50 chu kỳ EMA làm đường nhanh, 200 chu kỳ EMA làm đường chậm, tạo ra tín hiệu nhiều khi đi qua đường chậm trên đường nhanh và tạo ra tín hiệu trống khi đi xuống. Về mặt lọc biến động, chiến lược tính ATR 14 chu kỳ và chuyển đổi nó thành phần trăm của giá, chỉ cho phép mở vị trí khi ATR phần trăm vượt quá ngưỡng dự kiến (nhìn 2%) được thiết kế để đảm bảo chiến lược chỉ giao dịch trong môi trường thị trường có đủ biến động, giảm hiệu quả tín hiệu giả trong thị trường xung đột.

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

  1. Cơ chế lọc biến động làm tăng đáng kể sự ổn định của chiến lược, tăng tỷ lệ chiến thắng bằng cách chỉ giao dịch trong môi trường biến động cao
  2. ATR được tính bằng cách sử dụng tỷ lệ phần trăm, cho phép bộ lọc tỷ lệ dao động phù hợp với các giống trong phạm vi giá khác nhau
  3. Kết hợp với đường trung bình dài hạn, có thể nắm bắt được xu hướng lớn và giảm tác động của tiếng ồn ngắn hạn
  4. Lý luận chiến lược đơn giản và rõ ràng, các tham số tương đối ít, giảm nguy cơ quá phù hợp
  5. Kiểm soát rủi ro một cách hiệu quả bằng cách thiết lập quản lý vị trí hợp lý (10% vị trí)

Rủi ro chiến lược

  1. Chỉ số EMA có tính chậm trễ, có thể gây ra sự chậm trễ trong thời gian vào và ra thị trường trong một thị trường biến động mạnh
  2. Trong thị trường bất ổn, có thể xảy ra các đột phá giả thường xuyên ngay cả khi có bộ lọc ATR
  3. Mức ATR cố định có thể không áp dụng cho tất cả các môi trường thị trường
  4. Không tính đến sự thay đổi theo chu kỳ của thị trường, điều chỉnh các tham số có thể cần thiết trong các giai đoạn thị trường khác nhau Những rủi ro này nên được quản lý bằng cách dừng lỗ động và xây dựng kho dần dần.

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

  1. Tiếp theo, tính năng ATR sẽ được điều chỉnh theo thị trường.
  2. Tăng chỉ số xác nhận cường độ xu hướng, như DMI hoặc ADX
  3. Thực hiện cơ chế xây dựng kho hàng và kho hàng theo lô hàng, giảm rủi ro do nhập cảnh và xuất cảnh đơn lẻ
  4. Thêm mô-đun phân tích theo mùa, đặt các tham số khác nhau trong các chu kỳ thị trường khác nhau
  5. Phát triển cơ chế lựa chọn chu kỳ bình đẳng tự điều chỉnh, nâng cao khả năng thích ứng của chiến lược

Tóm tắt

Đây là một chiến lược kết hợp các chỉ số kỹ thuật cổ điển với tư tưởng quản lý rủi ro hiện đại. Chiến lược này có tính đơn giản nhưng cũng có tính thực tế mạnh mẽ. Mặc dù có một số rủi ro vốn có, chiến lược này vẫn có giá trị ứng dụng tốt thông qua các biện pháp tối ưu hóa và quản lý rủi ro hợp lý.

Mã nguồn chiến lược
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")

// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")

// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Convert ATR to a percentage of price
atrPct = atr / close

// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)

// Long Entry
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short Entry
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Long Exit
if (exitConditionLong)
    strategy.close("Long")

// Short Exit
if (exitConditionShort)
    strategy.close("Short")

// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)

// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)