Mục lục bài viết
- Bằng chứng và phạm vi
- Hình minh họa
- Quy trình
- Đếm sóng theo sự kiện
- Chốt biến động vào đầu mỗi leg
- Một leg thành công và một đảo chiều giả
- Tín hiệu nào mới đủ để giao dịch
- So sánh volume giữa các leg
- Kiểm chứng độ nhạy mà không chọn sóng đẹp
- Sai lầm thường gặp
- Checklist thực hành
- Câu hỏi thường gặp
- Nguồn nghiên cứu
Bằng chứng và phạm vi
Nguồn mô tả ZigZag, directional change và ATR. Phiên bản dùng close, ngưỡng chốt theo leg dưới đây là đề xuất độc lập; chưa có backtest lợi nhuận.
Quy trình thực hành
- Khởi tạo legLưu state, cực trị tạm và ATR tham chiếu.
- Cập nhật cực trịGiá đi tiếp chỉ thay ứng viên đang chạy.
- Đo đảo chiềuSo khoảng cách với ngưỡng đã đóng băng.
- Phát sự kiệnĐủ ngưỡng thì ghi cả hai timestamp.
- Đổi trạng tháiBắt đầu leg ngược và chốt ngưỡng mới.
Đếm sóng theo sự kiện
Một leg tăng có thể kéo dài ba hoặc ba mươi nến. Bộ máy luôn ghi nhận close cao nhất đang chạy, nhưng chỉ hoàn tất đỉnh sau khi close giảm đủ ngưỡng. Vì vậy độ trễ không cố định như pivot cửa sổ. Ngưỡng lớn bỏ qua nhiều dao động nhỏ, đồng thời công bố bước ngoặt muộn hơn.
Nghiên cứu intrinsic time trình bày directional change bằng ngưỡng phần trăm [1]. ZigZag trên TradingView có logic pivot và có thể sửa đoạn cuối [2]. Bài này không sao chép toàn bộ chỉ báo đó: mục tiêu là một stream sự kiện xác nhận bất biến, với ứng viên riêng biệt để tránh nhầm đường vẽ tạm thành lệnh lịch sử.
Chốt biến động vào đầu mỗi leg
Đặt A_ref bằng ATR14 của nến ngay trước khi leg mới bắt đầu, rồi giữ q×A_ref suốt leg. q=2 là tham số nghiên cứu. ATR dùng true range và cách làm trơn đã chọn; tài liệu chính thức phân biệt các cách smoothing [3]. Nếu leg kéo dài qua một chế độ biến động mới, ngưỡng cũ có thể kém phù hợp, nhưng đổi ngưỡng giữa chừng là phiên bản khác.
Để loại mơ hồ high/low trong một nến, baseline chỉ dùng close. Khởi tạo state=UP tại close đầu tiên sau warmup, không coi giá khởi tạo là đáy đã xác nhận. Khi chuyển DOWN, đáy ứng viên ban đầu là close hiện tại. Nếu ATR trước đó không đủ hoặc bằng không, tạm ngừng nhận diện thay vì tạo ngưỡng zero.
state = UP; extreme = first_close; extreme_i = first_i
threshold = q * ATR[first_i-1]
for each closed bar t after first_i:
if state == UP:
if C[t] > extreme: extreme, extreme_i = C[t], t
elif extreme - C[t] >= threshold:
emit HIGH(extreme_i, confirmed_at=t, price=extreme)
state = DOWN; extreme, extreme_i = C[t], t
threshold = q * ATR[t-1]
else:
if C[t] < extreme: extreme, extreme_i = C[t], t
elif C[t] - extreme >= threshold:
emit LOW(extreme_i, confirmed_at=t, price=extreme)
state = UP; extreme, extreme_i = C[t], t
threshold = q * ATR[t-1]
Một leg thành công và một đảo chiều giả
Ví dụ tổng hợp có ATR tham chiếu 1,5 và q=2, nên cần đảo chiều 3 điểm. Close đi 100→102→105→104→103. Đỉnh 105 vẫn chưa xác nhận vì giảm mới 2 điểm. Khi close tiếp theo bằng 102, hệ thống phát HIGH tại giá 105, occurred_at ở nến thứ ba và confirmed_at ở nến thứ sáu.
Nếu thay close cuối thành 106, ứng viên 105 được nâng lên 106; không tồn tại tín hiệu short bị xóa vì chưa hề xác nhận. Nếu sau 102 giá giảm 100 rồi bật lên 103, leg DOWN chốt đáy 100 khi ngưỡng leg đó cũng bằng 3. Hình zigzag hoàn chỉnh có vẻ bắt đúng cả hai cực trị, nhưng giá quyết định thật là 102 và 103.
Trường hợp thất bại của một chiến lược: short ở open 101,8 sau xác nhận đỉnh 105, stop 105,2. Giá hồi thẳng lên 106; khoảng rủi ro dự kiến là 3,4 điểm và stop có thể trượt. Nhận diện leg trước đúng về mặt thuật toán không hề đảm bảo xu hướng giảm tiếp tục.
Tín hiệu nào mới đủ để giao dịch
Có hai câu hỏi độc lập: đảo chiều đủ ngưỡng đã xảy ra chưa, và nên theo đà vừa xác nhận hay cược đảo lại. Baseline nghiên cứu có thể theo chiều directional change, vào next open, stop phía ngoài cực trị vừa chốt, thoát khi có directional change ngược. Không dùng cả hai cách tùy từng đoạn đồ thị.
Vì stop cấu trúc có thể xa, quantity phải dựa vào khoảng entry–stop cộng chi phí ước tính. Nếu khoảng này quá nhỏ so spread hoặc quá lớn so ngân sách, bỏ theo quy tắc định trước. Khi giá gap qua mức dừng, mô hình fill phải dùng giá khả thi, không bảo đảm lỗ đúng 1R.
Với ngưỡng phần trăm, định nghĩa giảm từ đỉnh là (peak−C)/peak, tăng từ đáy là (C−trough)/trough. Chúng không đối xứng theo log return; nếu muốn đối xứng, dùng chênh log giá và ghi thành biến thể riêng. Công thức tỷ lệ thông thường không phù hợp khi giá tham chiếu bằng không hoặc âm.
So sánh volume giữa các leg
Tổng volume leg dài thường lớn hơn leg ngắn chỉ vì tích lũy nhiều nến. Để diễn giải, lưu cả tổng volume, số nến, volume trung bình và độ dịch chuyển giá. Có thể thử feature effort = tổng volume / max(khoảng dịch chuyển, tick), nhưng giá trị cao chưa chứng minh có hấp thụ.
Khi HIGH được xác nhận, volume từ extreme_i+1 đến confirmed_at thuộc đoạn đảo chiều đã quan sát. Tách nó khỏi volume leg tăng trước extreme_i; ranh giới nến cực trị cần quy ước cố định. Thử nghiệm hữu ích là thêm RVOL của nến xác nhận so với cùng giờ, rồi kiểm tra có cải thiện lợi suất ngoài mẫu hay chỉ chọn các nến chi phí cao hơn.
Kiểm chứng độ nhạy mà không chọn sóng đẹp
Đăng ký q trong một lưới nhỏ như 1,5; 2; 3 và chỉ dùng development để chọn. Báo cả số sự kiện, phần trăm thời gian đứng ngoài, độ trễ bằng nến và bằng ATR, tỷ lệ stop bị gap. Một kết quả chỉ hoạt động tại đúng q=2,03 nhưng sụp ở 2,0 và 2,1 là dấu hiệu cần điều tra.
Replay theo prefix phải giữ nguyên mọi HIGH/LOW đã emit. Ứng viên hiện tại được thay đổi, nhưng log xác nhận không sửa. Chạy lại với thời điểm khởi tạo sớm hơn để đo ảnh hưởng warmup; so baseline close với dữ liệu tick chỉ khi có dữ liệu đáng tin và quy tắc khớp lệnh tương ứng.
Sai lầm thường gặp
Dùng đoạn cuối như tín hiệu hoàn chỉnh
Đường tạm có thể dời đến cực trị mới; không đưa nó vào lịch sử lệnh.
ATR tương lai làm đẹp sóng cũ
Lưu A_ref tại thời điểm hợp lệ, không tính lại ngưỡng quá khứ từ ATR cuối dữ liệu.
Lẫn wick và close
Chọn wick để lấy đỉnh cao nhất nhưng close để bỏ stop làm kết quả thiếu nhất quán.
Checklist trước khi dùng phương pháp
Tự đánh dấu khi đã kiểm tra trên dữ liệu của bạn. Trạng thái lưu trong trình duyệt này; đây không phải chứng nhận chiến lược có lãi.
Câu hỏi thường gặp
ZigZag ATR có tốt hơn phần trăm không?
Đó là giả thuyết kiểm định. ATR thích nghi với biến động, nhưng thêm phụ thuộc vào lookback và cách chốt ngưỡng.
Đỉnh được xác nhận rồi có thể cao hơn tiếp không?
Có. HIGH là nhãn của leg đã hoàn tất theo quy tắc, không phải tuyên bố thị trường đã đạt đỉnh cuối cùng.
Nguồn nghiên cứu
Các nguồn dưới đây hỗ trợ phần định nghĩa hoặc bằng chứng được ghi bên cạnh. Mã giả, ví dụ minh họa và tham số đề xuất trong bài cần được kiểm định riêng.
- The Theory of Intrinsic Time: A PrimerJames B. Glattfelder và Richard B. Olsen. Đã đọc mục directional change và đa thang đo; không xem đây là backtest cho biến thể ATR. Đối chiếu: .
- Zigzag indicatorTradingView. Đã đọc cách dựng, projected pivots và giới hạn đoạn cuối. Đối chiếu: .
- Average True RangeTradingView. Đã đọc công thức true range và tùy chọn smoothing. Đối chiếu: .
Đọc tiếp theo phương pháp
Lưu ý rủi ro
Nội dung phục vụ giáo dục và thiết kế nghiên cứu, không phải lời khuyên tài chính. Backtest là mô phỏng lịch sử, không bảo đảm hiệu quả tương lai và không đặt lệnh giao dịch thật. Các phương pháp trong thư viện không mặc nhiên là tính năng đã có trong ứng dụng. Xem phương pháp tính và trung tâm học.
Kiểm tra quy tắc trước khi dùng vốn thật
Đối chiếu khả năng hỗ trợ của ứng dụng, dữ liệu và từng giao dịch mô phỏng; các detector nâng cao có thể cần triển khai riêng.
Tải Backtest trên App Store