
Tổng quan
Chiến lược này là một hệ thống giao dịch định lượng giảm lùi kết hợp bộ lọc phạm vi (Range Filter) và sóng thực trung bình (ATR). Nó nhận biết hướng xu hướng thông qua bộ lọc phạm vi, đồng thời sử dụng ATR để điều chỉnh động kích thước vị trí và thiết lập lỗ hổng theo dõi, kiểm soát rủi ro hiệu quả. Chiến lược này yêu cầu giá vượt qua hai chu kỳ liên tiếp trên bộ lọc phạm vi để xác nhận xu hướng, và cơ chế xác nhận kép này đã giảm hiệu quả sự phá vỡ giả.
Nguyên tắc chiến lược
Nguyên tắc cốt lõi của chiến lược này là kết hợp các bộ lọc phạm vi nhận diện xu hướng với hệ thống quản lý rủi ro ATR:
Tính toán bộ lọc phạm vi:
- Đầu tiên, tính toán đường trung bình động đơn giản (SMA) của giá thành.
- Sau đó, tính toán trung bình chuyển động của giá với giá trị tuyệt đối của độ lệch giữa đường trung tâm, như là một phạm vi dao động
- Đường lên = đường trung tâm + phạm vi dao động
- Đường dưới = đường trung tâm - phạm vi dao động
Điều kiện xác nhận xu hướng:
- Xu hướng tăng: Giá đã kết thúc hai chu kỳ liên tiếp trên đường ray
- Xu hướng giảm: Giá đã giảm xuống đường trong hai chu kỳ liên tiếp
- Cơ chế xác nhận kép này giúp giảm tín hiệu giả.
Vị trí ATR động:
- Sử dụng ATR để đo lường sự biến động của thị trường hiện tại
- Công thức tính toán vị trí: (Tài khoản tài khoản * Tỷ lệ phần trăm rủi ro) / (ATR * Điểm)
- Càng biến động thị trường, vị trí càng nhỏ; Càng biến động ít, vị trí càng lớn
ATR theo dõi mất mát:
- Multihead Stop Loss được thiết lập là: Giá hiện tại - (ATR * nhân)
- Hạn chế lỗ hổng đầu trống là: giá hiện tại + (ATR * nhân số)
- Khi giá di chuyển theo hướng thuận lợi, đường dừng lỗ cũng di chuyển theo, khóa lợi nhuận
Lợi thế chiến lược
Khả năng thích nghi:
- Bộ lọc phạm vi tự động thích ứng với các đặc tính biến động của các chu kỳ thị trường khác nhau
- Cơ chế điều chỉnh vị trí ATR cho phép chiến lược tự động thích ứng với môi trường biến động khác nhau
Kiểm soát rủi ro:
- Tỷ lệ phần trăm rủi ro cố định cho mỗi giao dịch (bằng 1%)
- Cải chỉnh kích thước vị thế theo biến động của thị trường
- Cơ chế dừng lỗ theo dõi hiệu quả khóa lợi nhuận, hạn chế tổn thất
Chất lượng tín hiệu cao:
- Cơ chế xác nhận kép ((hai đợt đột phá liên tiếp)) giảm tín hiệu giả
- Bộ lọc phạm vi có hiệu quả trong việc lọc ra tiếng ồn thị trường và nhận ra xu hướng thực sự
Tính năng rút lui thấp:
- Máy dừng theo dõi giới hạn mức lỗ tối đa cho một giao dịch
- Cài đặt tham số rủi ro bảo thủ (rủi ro 1%) làm giảm rút lui tổng thể
- Vị trí động tự động giảm nhỏ trong thời gian biến động cao, giảm rủi ro
Tính minh bạch và tùy chỉnh:
- Các tham số chính sách rõ ràng, logic rõ ràng
- Các tham số có thể được điều chỉnh theo thị trường khác nhau và sở thích rủi ro cá nhân
Rủi ro chiến lược
Thị trường giao dịch ngang không tốt:
- Trong một thị trường không có xu hướng, có thể tạo ra các tín hiệu phá vỡ sai thường xuyên
- Giải pháp: Bạn có thể thêm bộ lọc xu hướng hoặc tăng số lần xác nhận
Rủi ro biến đổi nhanh chóng:
- Khi xu hướng mạnh đột ngột đảo ngược, việc dừng lại theo dõi có thể không kịp thời
- Giải pháp: Có thể kết hợp với chỉ số tăng tỷ lệ dao động hoặc thu nhỏ khoảng cách dừng theo dõi
Độ nhạy tham số:
- Chu kỳ bộ lọc phạm vi và lựa chọn ATR có ảnh hưởng lớn đến hiệu suất chiến lược
- Giải pháp: Thực hiện quá trình tra cứu lịch sử đầy đủ để tìm ra một tập hợp các tham số vững chắc
Rủi ro mất mát liên tục:
- Ngay cả khi rủi ro trên mỗi giao dịch được kiểm soát tốt, các giao dịch thua lỗ liên tiếp vẫn có thể dẫn đến sự rút lui lớn hơn
- Giải pháp: Thiết lập giới hạn thua lỗ liên tục tối đa hoặc thêm bộ lọc môi trường thị trường
Điểm trượt và ảnh hưởng của phí:
- Trong giao dịch trực tiếp, điểm trượt và phí có thể ảnh hưởng đáng kể đến hiệu suất chiến lược
- Giải pháp: Thêm phí xử lý hợp lý và ước tính điểm trượt vào đếm ngược để giữ đủ không gian lợi nhuận
Hướng tối ưu hóa chiến lược
Thêm bộ lọc môi trường thị trường:
- Có thể giới thiệu các chỉ số biến động (ví dụ như Bollinger Bandwidth) để xác định tình trạng thị trường
- Ngăn chặn giao dịch hoặc điều chỉnh tham số trong thị trường biến động thấp hoặc thị trường cân bằng
- Điều này có thể làm giảm các tín hiệu sai trong thị trường ngang và tăng tỷ lệ chiến thắng tổng thể.
Tối ưu hóa chu kỳ bộ lọc phạm vi:
- Cân nhắc sử dụng chu kỳ thích ứng thay vì chu kỳ cố định
- Chu kỳ bộ lọc phạm vi có thể tự động điều chỉnh dựa trên biến động thị trường
- Điều này sẽ giúp chiến lược thích ứng tốt hơn với các giai đoạn thị trường khác nhau.
Tiếp tục xác nhận nhiều khung thời gian:
- Tăng điều kiện xác nhận xu hướng trên khung thời gian cao hơn
- Chỉ giao dịch theo xu hướng chính, tránh giao dịch ngược
- Điều này sẽ cải thiện đáng kể chất lượng tín hiệu và tỷ lệ chiến thắng.
Động thái điều chỉnh ATR:
- Nhân ATR theo lệnh dừng lỗ được điều chỉnh động dựa trên tính năng biến động của thị trường
- Sử dụng nhân nhỏ hơn trong thị trường biến động thấp, nhân lớn hơn trong thị trường biến động cao
- Điều này sẽ làm tăng hiệu quả và tính linh hoạt của việc ngăn chặn thiệt hại.
Thêm cơ chế rút lui theo thời gian:
- Thiết lập giới hạn thời gian giữ tối đa
- Nếu giá không đi theo hướng dự kiến trong một khoảng thời gian nhất định, buộc phải giữ vị thế bằng phẳng
- Điều này sẽ giúp bạn tránh bị mắc kẹt trong các giao dịch không hiệu quả trong một thời gian dài.
Tóm tắt
Chiến lược lọc phạm vi xác nhận kép kết hợp các vị trí ATR động với hệ thống dừng theo dõi là một chiến lược giao dịch định lượng tập trung vào kiểm soát rủi ro. Nó nhận diện hướng xu hướng thông qua bộ lọc phạm vi, yêu cầu hai chu kỳ đột phá liên tiếp để xác nhận tín hiệu, sử dụng ATR để điều chỉnh động kích thước vị trí và thiết lập dừng theo dõi, kiểm soát hiệu quả rủi ro của mỗi giao dịch trong tỷ lệ phần trăm được đặt trước. Ưu điểm chính của chiến lược này là khả năng thích ứng mạnh mẽ và khả năng kiểm soát rủi ro xuất sắc, đặc biệt phù hợp với thị trường có biến động lớn nhưng có xu hướng rõ ràng.
Mã nguồn chiến lược
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true,
pyramiding=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, commission_type=strategy.commission.percent,
commission_value=0.1, initial_capital=10000)
// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")
// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter
// Calculate ATR
atr = ta.atr(atrPeriod)
// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]
// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)
// Strategy logic
if (upTrend)
strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
if (downTrend)
strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)
// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)
// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")