Chiến lược giao dịch bộ lọc ADX đột phá xu hướng


Ngày tạo: 2024-01-04 17:12:30 sửa đổi lần cuối: 2024-01-04 17:12:30
sao chép: 0 Số nhấp chuột: 924
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch bộ lọc ADX đột phá xu hướng

Tổng quan

Chiến lược này là một chiến lược giao dịch đường ngắn sử dụng chỉ số ADX để lọc các tín hiệu phá vỡ. Khi giá phá vỡ đường Bollinger Bollinger và ADX đang giảm, hãy làm trống; Khi giá phá vỡ đường Bollinger Bollinger và ADX đang tăng, hãy làm nhiều hơn.

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

Phương pháp này sử dụng Bollinger Bollinger Bands làm tín hiệu phá vỡ chính. Bollinger Bands xuống đường cho thấy chênh lệch tiêu chuẩn gấp đôi so với giá, và giá phá vỡ Bollinger Bands thường cho thấy giá đi vào giai đoạn xu hướng mạnh. Ngoài ra, để tránh phá vỡ giả, chiến lược này đã thêm chỉ số ADX làm điều kiện lọc.

Cụ thể, chiến lược này sử dụng giá đóng cửa với độ dài 33 chu kỳ để tính toán Brin Belt. Đường trung tâm của Brin Belt là đường trung bình di chuyển đơn giản 33 chu kỳ của giá đóng cửa, trên và dưới đường là hai chênh lệch tiêu chuẩn dưới đường trung tâm. Các tham số chỉ số được thiết lập khi giá đóng cửa bị phá vỡ và 8 chu kỳ ADX nhỏ hơn 15 chu kỳ ADX; làm nhiều hơn khi giá đóng cửa phá vỡ và 8 chu kỳ ADX lớn hơn 15 chu kỳ ADX.

Phân tích lợi thế

Đây là một chiến lược đột phá kết hợp các tín hiệu lọc theo xu hướng và chỉ số tần số, với một số ưu điểm:

  1. Sử dụng Brin để đánh giá điểm đột phá của xu hướng, phù hợp với thói quen của hầu hết các nhà giao dịch.
  2. Thêm bộ lọc điều kiện ADX để giảm thiệt hại do phá vỡ giả trong thời gian biến động xu hướng.
  3. Chiến lược hoạt động đơn giản, dễ hiểu và tối ưu hóa.
  4. Tự động thiết lập dừng lỗ, không cần can thiệp của người, phù hợp với giao dịch thuật toán.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Thiết lập không đúng các tham số Brin có thể dẫn đến tín hiệu quá thường xuyên và tăng chi phí giao dịch.
  2. Thiết lập ADX không đúng cũng có thể lọc một số tín hiệu hiệu quả.
  3. Khoảng cách dừng lỗ có thể quá lớn, tổn thất đơn lẻ mở rộng.

Để giảm những rủi ro này, chúng ta có thể điều chỉnh tham số vùng Brin, thu nhỏ phạm vi của vùng Brin; điều chỉnh tham số chu kỳ ADX, tránh tín hiệu quá tải; thu nhỏ khoảng cách dừng một cách thích hợp, kiểm soát tổn thất đơn. Tất nhiên, tất cả các tối ưu hóa này đều cần được kiểm tra lại để tránh quá phù hợp.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Bạn có thể thử nghiệm dữ liệu từ các thị trường khác nhau để tìm ra sự kết hợp tốt nhất.
  2. Các chỉ số khác có thể được kết hợp để lọc thêm các tín hiệu, chẳng hạn như khối lượng giao dịch, Đường trung bình di chuyển, v.v.
  3. Có thể sử dụng phương pháp học máy để tự động tối ưu hóa tham số.
  4. Có thể xem xét dừng và dừng động.

Tóm tắt

Chiến lược này nói chung là một chiến lược lọc đột phá đơn giản và thực tế. Bằng cách đánh giá xu hướng bằng dây chuyền Brin, tín hiệu lọc ADX có thể tránh tiếng ồn của thị trường rung động và nắm bắt cơ hội xu hướng ở một mức độ nhất định.

Mã nguồn chiến lược
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)

Price = close

Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev

ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))

Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2

Take_Profit = input(800)
Stop_Loss = input(400)

strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)