Danh mục
Kỹ thuật
Độ khó
Cơ bản
Dùng trong
Thiết kế chiến lượcQuản trị rủi roVận hành MT5

Average True Range (ATR)

Chỉ báo biến động đo độ lớn trung bình của chuyển động giá gần đây, tính theo đơn vị giá. Các EA dùng nó để đặt khoảng cách dừng lỗ và khối lượng vị thế thích ứng với điều kiện hiện tại thay vì mặc định theo điều kiện của hôm qua.

còn gọi: ATR, True Range

Đã cập nhật

Nói đơn giản

Thị trường này thường đi được bao xa trong một nến, lấy trung bình trong quá khứ gần. Nó không có ý kiến gì về hướng đi — nó là một cây thước đo khoảng cách, và gần như mọi thứ mà EA đo bằng pip đều được đo tốt hơn bằng đơn vị này.

Vì sao quan trọng

Mọi khoảng cách bên trong một EA — dừng lỗ, chốt lời, bước dời lệnh, ngưỡng phá vỡ — đều là một con số pip do ai đó chọn. ATR là thứ biến những con số cố định ấy thành tỷ lệ vẫn giữ nguyên ý nghĩa khi thị trường tăng tốc hay chậm lại.

  • Đây là hình thức thực dụng của biến động. Một EA khó lòng tính độ lệch chuẩn của lợi suất trên từng tick, nhưng nó đọc được ATR từ một handle chỉ báo.
  • Nó tính theo đơn vị giá, nên chuyển thẳng thành khoảng cách dừng lỗ mà không cần bước thống kê trung gian nào.
  • Nó khiến một chiến lược có thể so sánh được giữa các mã và các khung thời gian. Hai pip là mức dừng rộng trên công cụ này và nằm trong nhiễu trên công cụ khác; hai ATR nói cùng một điều ở mọi nơi.
  • Nó bao gồm cả khoảng nhảy giá, điều mà biên độ cao trừ thấp đơn thuần không có — true range còn được đo so với giá đóng cửa trước đó chứ không chỉ so với nến hiện tại.

Trong MetaTrader 5

Xuất hiện ở đâu trong MT5

  • Insert → Indicators → Oscillators → Average True Range — thêm vào biểu đồ kèm tham số chu kỳ
  • Navigator → Indicators → Average True Range — kéo thả vào biểu đồ để có kết quả tương tự
  • Chỉ báo vẽ trong cửa sổ riêng vì thang đo của nó là khoảng cách giá, không phải giá
  • Strategy Tester → Inputs — chu kỳ ATR và hệ số nhân của EA đều là tham số đầu vào, và cả hai rất dễ bị tối ưu quá mức

EA dùng nó thế nào

  • Tạo handle một lần trong OnInit — iATR(_Symbol, PERIOD_CURRENT, 14) — rồi đọc giá trị bằng CopyBuffer, thay vì tạo handle bên trong OnTick.
  • Khoảng cách dừng lỗ = hệ số nhân × ATR tại điểm vào, để mức dừng nằm ngoài chuyển động thông thường thay vì ở một con số pip tròn trịa.
  • Khối lượng vị thế = số tiền rủi ro ÷ (khoảng cách dừng × giá trị pip), nhờ đó khối lượng lot tự động giảm khi biến động tăng.
  • Khoảng cách dời lệnh cũng là ý tưởng đó áp dụng liên tục: khoảng dời nới rộng trong thị trường nhanh và thu hẹp khi thị trường lặng.
  • Đọc ATR từ nến đã đóng (chỉ số 1) thay vì nến đang hình thành (chỉ số 0), thứ có giá trị thay đổi theo từng tick.
  • Đừng mặc định iATR là ATR của Wilder. ATR đi kèm MetaTrader trượt một cửa sổ cố định ở chỗ Wilder làm mượt. Vì thế hai bên phản ứng theo hai nhịp khác nhau: sau khi biến động tăng gấp ba, chúng tôi đo được 19 nến so với 59 nến để đạt 90% mức mới.

Thiết lập thường gặp

Thiết lập Giá trị thường dùng Ghi chú
Chu kỳ 14 Giá trị mặc định thông dụng. Chu kỳ ngắn (7–10) phản ứng nhanh hơn; chu kỳ dài (20–30) mượt hơn và hợp với hệ thống theo ngày.
Hệ số nhân cho dừng lỗ 1,5–2,5 × ATR Dưới khoảng 1,5, mức dừng nằm trong chuyển động thông thường của phần lớn công cụ.
Hệ số nhân cho dời lệnh 2–3 × ATR Thường rộng hơn mức dừng ban đầu, để một nhịp hồi bình thường không kết thúc lệnh theo xu hướng.
Hệ số nhân cho chốt lời 2–4 × ATR Giữ tỷ lệ rủi ro/lợi nhuận ổn định khi điều kiện thay đổi.
Khung thời gian dùng để đọc khung của chính chiến lược ATR trên M5 và trên D1 trả lời hai câu hỏi khác nhau; trộn chúng lại sẽ âm thầm thay đổi mọi khoảng cách.

Sự cố vận hành thường gặp

  • Tạo handle chỉ báo bên trong OnTick, gây rò rỉ handle và cuối cùng thất bại — handle thuộc về OnInit.
  • CopyBuffer trả về ít giá trị hơn yêu cầu lúc khởi động, khi dữ liệu lịch sử chưa tải đủ, dẫn tới ATR bằng không và do đó một mức dừng có khoảng cách bằng không.
  • Đọc ATR từ nến đang hình thành, khiến khoảng cách dừng phụ thuộc vào thời điểm trong nến mà tín hiệu xuất hiện.
  • Nhầm lẫn điểm và pip: ATR trả về theo đơn vị giá, và một báo giá 5 chữ số nghĩa là 0,00120 chứ không phải 12 — nhân nó như thể là pip sẽ tạo ra mức dừng rộng hoặc hẹp gấp một trăm lần.
  • Tối ưu chu kỳ ATR và hệ số nhân cùng lúc trên một khoảng dữ liệu, khiến cặp tham số khớp với những nhịp hồi riêng của khoảng đó.

Hàm MT5 liên quan

iATR(symbol, timeframe, ma_period)
Tạo handle chỉ báo; gọi một lần trong OnInit và giữ lại handle.
CopyBuffer(handle, 0, start, count, array)
Đọc giá trị ATR từ buffer 0 — buffer duy nhất mà chỉ báo này có.
SymbolInfoDouble(symbol, SYMBOL_POINT)
Chuyển ATR ở đơn vị giá sang điểm, đơn vị mà khoảng cách dừng lỗ được biểu diễn.
NormalizeDouble(price, _Digits)
Làm tròn mức dừng đã tính về độ chính xác của mã giao dịch trước khi gửi lệnh.

Ví dụ

Cùng một quy tắc rủi ro, áp dụng trong hai trạng thái biến động. Không có gì trong EA thay đổi — thứ thay đổi là cây thước nó dùng để đo.

Trạng thái yên ả — ATR(14)
12 pip
Mức dừng 2 × ATR là 24 pip.
Trạng thái biến động mạnh — ATR(14)
34 pip
Cũng mức dừng 2 × ATR ấy là 68 pip.
Rủi ro mỗi lệnh
1% của 10.000 $ = 100 $
Khối lượng lot, yên ả / biến động
0,42 / 0,15
Cùng số tiền rủi ro, khác khoảng cách, nên khác khối lượng.

Nới rộng mức dừng mà không giảm lot sẽ khiến số tiền rủi ro tăng gấp ba. ATR chỉ hữu ích khi cả hai nửa cùng dịch chuyển.

Phép tính 100 ÷ (24 × 10) = 0.42 · 100 ÷ (68 × 10) = 0.15

Kết quả Một quy tắc rủi ro sinh ra hai khoảng cách dừng và hai khối lượng vị thế

Cách sử dụng

ATR là một khoảng cách, không phải tín hiệu. Nó cho EA biết đặt mọi thứ xa đến đâu — không bao giờ cho biết có nên đặt hay không.

Khoảng Ý nghĩa
ATR hiện tại thấp hơn nhiều so với trung bình của backtest Mục tiêu định nghĩa theo ATR co lại tương ứng, nên chiến lược thu về những khoản lãi nhỏ hơn trong khi chi phí vẫn cố định.
ATR hiện tại gần trung bình của backtest Đúng điều kiện mà các tham số được hiệu chỉnh. Các kỳ vọng đã công bố vẫn áp dụng được.
ATR hiện tại cao hơn hẳn trung bình của backtest Mức dừng theo pip cố định giờ nằm trong nhiễu; mức dừng theo ATR nới rộng ra, và khối lượng vị thế phải giảm để bù lại.
Dùng ATR làm tín hiệu vào lệnh Một cách dùng sai. Nó không có hướng — giá trị cao cho biết thị trường đang di chuyển, chứ không cho biết về phía nào.
  • Hãy diễn đạt mọi khoảng cách trong EA thành bội số của ATR, rồi tối ưu bội số đó thay vì số pip. Kết quả chuyển giao giữa các mã và các trạng thái thị trường tốt hơn hẳn.
  • Đừng bao giờ so sánh giá trị ATR thô giữa các mã. Bốn mươi pip trên GBP/JPY và bốn mươi pip trên EUR/USD là hai mức độ hoạt động khác nhau; hãy chia cho giá nếu cần so sánh.
  • Hãy khớp chu kỳ ATR với thời gian nắm giữ. Một người lướt sóng đọc ATR ngày đang tính khối lượng cho một chuyển động mà anh ta sẽ không bao giờ ở trong đó.
  • Kiểm tra xem hệ số nhân có ổn định ở các giá trị lân cận không. Một mức dừng chạy tốt ở 2,0 × ATR nhưng không chạy ở 1,8 hay 2,2 là đã khớp với khoảng dữ liệu kiểm thử.

[Trang chỉ báo ATR đầy đủ](/vi/indicators/atr) trình bày chi tiết cách tính và các thiết lập. Trang đó có cả kết quả đo của chúng tôi rằng iATR của MetaTrader là một cửa sổ trượt chứ không phải phép làm mượt của Wilder. Mục từ này nói về vai trò của ATR bên trong các quy tắc rủi ro của một EA.

Sai lầm thường gặp

Coi ATR như tín hiệu chỉ hướng

Nó đo quãng đường đã đi, không đo hướng đi. ATR tăng nghĩa là thị trường di chuyển nhiều hơn — điều xảy ra như nhau trong xu hướng, trong các cú sập và trong những vùng đi ngang dữ dội.

Nới mức dừng theo ATR mà không giảm lot

Toàn bộ ý nghĩa của một mức dừng thích ứng là rủi ro mỗi lệnh giữ nguyên. Nếu khoảng cách tăng gấp ba mà khối lượng không giảm thì thứ tăng gấp ba chính là khoản lỗ.

Nhầm đơn vị giá với pip

iATR trả về một khoảng cách giá — 0,00120 trên EUR/USD 5 chữ số, không phải 12. Đoạn mã coi nó là pip sẽ đặt mức dừng xa hoặc gần gấp một trăm lần, và lỗi này dễ lọt qua khâu kiểm thử vì kết quả chỉ đơn giản là tệ chứ không hỏng hẳn.

Đọc ATR từ nến đang hình thành

Chỉ số 0 thay đổi theo từng tick, nên cùng một tín hiệu lại tạo ra mức dừng khác nhau tùy thời điểm nó kích hoạt. Hãy dùng nến đã đóng gần nhất cho mọi thứ cần tái lập được.

Câu hỏi thường gặp

EA nên dùng chu kỳ ATR bao nhiêu?
Mười bốn là giá trị mặc định thông dụng và là điểm khởi đầu hợp lý. Chu kỳ ngắn từ bảy đến mười phản ứng nhanh hơn với thay đổi điều kiện nhưng nhiễu hơn; từ hai mươi đến ba mươi thì mượt hơn và hợp với chiến lược chạy trên nến ngày. Điều quan trọng hơn con số chính xác là nó giữ được sự ổn định ở các thiết lập lân cận khi kiểm thử.
Làm sao biến ATR thành khoảng cách dừng lỗ?
Nhân nó lên. Mức dừng ở 2 × ATR nằm cách điểm vào hai biên độ nến trung bình, tức là ngoài chuyển động thông thường của phần lớn công cụ. Bước thứ hai không thể bỏ qua là tính khối lượng lot từ khoảng cách đó và hạn mức rủi ro của bạn, để mức dừng rộng hơn đồng nghĩa với vị thế nhỏ hơn chứ không phải khoản lỗ lớn hơn.
ATR có tốt hơn mức dừng theo pip cố định không?
Với một EA chạy không người trông trong nhiều năm thì nhìn chung là có, vì một khoảng cách cố định mang ý nghĩa khác nhau trong các trạng thái biến động khác nhau, còn một bội số ATR thì luôn mang cùng một ý nghĩa. Cái giá phải trả là thêm một tham số nữa cần giữ cho khỏi bị tối ưu quá mức.
ATR của MT5 có giống ATR của Wilder không?
Không hẳn, và điều đó quan trọng khi bạn mang một thiết lập từ nơi khác sang. Wilder làm mượt true range nên mỗi nến quá khứ vẫn tiếp tục suy giảm bên trong giá trị; ATR đi kèm MetaTrader lại trượt một cửa sổ cố định, tức là một đường trung bình động đơn giản. Cả hai đều là bộ lọc tuyến tính có tổng trọng số bằng một, nên mức dài hạn của chúng khớp nhau — chúng tôi đo được 9,571 so với 9,573 pip trên 2.700 nến ở chu kỳ 20. Cái khác nhau là phản ứng: sau khi biến động tăng gấp ba tại một nến, bản của MetaTrader đạt 90% mức mới trong 19 nến còn bản của Wilder mất 59 nến. Vì vậy mức dừng 2 × ATR nới rộng sớm hơn trên MT5 so với cùng quy tắc đó trên nền tảng dựa theo Wilder, và việc chỉnh cho khớp chu kỳ cũng không hợp nhất được chúng: chu kỳ iATR gần nhất với mức 20 của Wilder đo được là 32–33.
ATR có cho biết hướng của xu hướng không?
Không. Nó là thước đo khoảng cách thuần túy và hoàn toàn không có thành phần chỉ hướng. ADX là chỉ báo đi kèm quen thuộc cho sức mạnh xu hướng, còn hướng thì lấy từ một đường trung bình động hoặc từ cấu trúc giá.

Bài viết liên quan