Tài nguyên đang được tải lên... tải...

Chiến lược đột phá đà với bộ lọc ADX

Tác giả:ChaoZhang, Ngày: 2024-01-04 17:12:30
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch ngắn hạn sử dụng chỉ số ADX để lọc các tín hiệu đột phá. Nó đi ngắn khi giá vượt qua dải Bollinger phía trên và ADX đang giảm, và đi dài khi giá vượt qua dải Bollinger phía dưới và ADX đang tăng. Chiến lược cũng đặt dừng lỗ và lấy lợi nhuận tự động cho giao dịch tự động đầy đủ.

Chiến lược logic

Cốt lõi của chiến lược này là sử dụng Bollinger Bands cho các tín hiệu đột phá. Các dải trên và dưới của Bollinger Bands đại diện cho hai sai lệch tiêu chuẩn của giá, vì vậy đột phá thường ngụ ý rằng giá đang đi vào một xu hướng mạnh. Ngoài ra, chỉ số ADX được giới thiệu ở đây như một bộ lọc để tránh đột phá sai.

Đặc biệt, chiến lược này tính toán Bollinger Bands bằng cách sử dụng 33 giai đoạn giá đóng. Dải giữa là một trung bình di chuyển đơn giản 33 giai đoạn, và các dải trên / dưới được đặt ở hai độ lệch chuẩn trên / dưới dải giữa. Chiến lược báo hiệu ngắn khi giá đóng dưới dải trên và ADX 8 giai đoạn dưới ADX 15 giai đoạn. Nó báo hiệu dài khi giá đóng trên dải dưới và ADX 8 giai đoạn trên ADX 15 giai đoạn. Các bước ra được đặt ở mức 800 điểm lợi nhuận và 400 điểm dừng lỗ.

Phân tích lợi thế

Là một chiến lược phá vỡ kết hợp các bộ lọc xu hướng và động lực, nó có một số lợi thế:

  1. Sử dụng Bollinger Bands để phát hiện các sự đột phá phù hợp với thói quen của hầu hết các trader.
  2. Bộ lọc ADX bổ sung giúp tránh mất mát từ whipsaws.
  3. Lý thuyết đơn giản và dễ hiểu và tối ưu hóa.
  4. Việc dừng lỗ tự động và lấy lợi nhuận tạo điều kiện cho giao dịch thuật toán.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Các thông số BB không chính xác có thể tạo ra tín hiệu quá thường xuyên và làm tăng chi phí.
  2. Các thông số ADX không đúng có thể lọc ra các tín hiệu hợp lệ.
  3. Khoảng cách dừng lỗ có thể quá rộng dẫn đến tổn thất lớn.

Để giảm thiểu những rủi ro này, chúng ta có thể tinh chỉnh các thông số BB để thu hẹp các băng tần, điều chỉnh các khoảng thời gian ADX để tránh lọc quá mức và giảm stop loss để kiểm soát lỗ giao dịch duy nhất.

Hướng dẫn tối ưu hóa

Có chỗ cho việc tối ưu hóa thêm:

  1. Kiểm tra trên các dữ liệu thị trường khác nhau để tìm ra bộ tham số tối ưu.
  2. Kết hợp các chỉ số khác như khối lượng và Moving Average để lọc tín hiệu.
  3. Sử dụng các phương pháp học máy để tự động tối ưu hóa các thông số.
  4. Hãy xem xét stop loss động và lấy lợi nhuận.

Kết luận

Kết luận, đây là một chiến lược đột phá đơn giản và thực tế với bộ lọc. Xác định xu hướng bằng BB và lọc tín hiệu bằng ADX giúp tránh tiếng ồn trong thời gian giới hạn phạm vi và nắm bắt các cơ hội xu hướng ở một mức độ nào đó.


/*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)


Thêm nữa