Mục lục bài viết
Bằng chứng và phạm vi
Nguồn chính thức hỗ trợ công thức kênh, dịch dữ liệu và thời điểm mô phỏng lệnh. Không suy từ lịch sử trend following ra lợi nhuận của cấu hình trong bài.
Quy trình thực hành
- Đủ N nếnLấy cửa sổ hoàn tất trước nến hiện tại.
- Chốt U và DGhi cả giá và tuổi cực trị.
- Phân loại sự kiệnClose vượt mức khác với xuyên rồi reclaim.
- Áp volumeFeature phải sẵn có đúng lúc gửi lệnh.
- Mô phỏng lệnhEntry, stop, hết hạn theo phiên bản đã chọn.
Biên cửa sổ không phải swing
Donchian lấy cực trị của N nến; TradingView mô tả hai biên cùng đường giữa [1]. Không cần giá quay đầu để biết biên. Vì vậy detector có thể dùng ngay từ đầu nến tiếp theo, sớm hơn một pivot cần nến bên phải. Đổi lại, biên cao có thể liên tục tăng trong xu hướng mà không tạo kháng cự giữ được.
Thiết kế đề xuất: U[t]=max(H[t−N:t]), D[t]=min(L[t−N:t]), M[t]=(U[t]+D[t])/2. Dấu ngoặc biểu diễn cửa sổ kết thúc ở t−1. Dùng đúng N nến đã đóng và bỏ nến t khỏi tham chiếu. Nếu đưa H[t] vào U[t], điều kiện H[t]>U[t] trở thành bất khả thi.
Tạo mức trước rồi mới xét sự kiện
Trong pandas, phép dịch giá trị giúp tách dữ liệu tham chiếu khỏi hàng đang xét [2]. Một cách triển khai là high.shift(1).rolling(N).max(); không dùng shift với freq để thay việc dịch giá trị. Baseline dưới đây chọn close vượt mức với buffer b=max(2 tick,0,1 ATR[t−1]); N=20 và 0,1 là tham số nghiên cứu.
Nếu chỉ cần breakout tức thời, tính mức mới mỗi nến. Nếu cần theo dõi sweep rồi reclaim trong ba nến, phải chốt U và D khi sự kiện bắt đầu. Nếu không, chính nến xuyên mức sẽ đi vào cửa sổ ngày sau và đẩy biên chạy theo sự kiện đang được đánh giá.
U = max(H[t-N:t]); D = min(L[t-N:t])
b = max(2*tick, 0.1*ATR[t-1])
if no_active_setup and C[t] > U+b:
emit('up_breakout', signal_at=t, frozen_level=U)
if no_active_setup and H[t] > U+b and C[t] < U:
emit('upper_reclaim', signal_at=t, frozen_level=U)
# Hai nhãn thuộc hai giả thuyết khác nhau.
# Lệnh close-confirmed chỉ có thể được xử lý sau close t.
Một biên, hai kết quả khác nhau
Ví dụ tổng hợp: 20 nến trước có U=105, D=99 và ATR=1; tick=0,01 nên b=0,10. Nến t có H=106, C=105,4 tạo breakout tăng. Nếu chiến lược mua open kế tiếp 105,5, stop đề xuất 103,9 và target 108,7, khoảng rủi ro là 1,6 điểm và target bằng 2R trước chi phí.
Trường hợp thất bại: nến sau mở 105,5 rồi giảm về 103,8. Stop bị chạm dù close trigger đúng công thức. Nếu nến t có H=106 nhưng C=104,7 thì không có breakout close; có thể là upper reclaim cho một chiến lược short khác. Không đổi nhãn từ breakout sang sweep sau khi đã biết lệnh thua.
Một lỗi tinh vi: đỉnh 105 rời cửa sổ sau N nến khiến U giảm về 104. Giá 104,5 lúc này vượt kênh dù không tạo đỉnh giá mới. Đây là kết quả hợp lệ của rolling window. Nếu không muốn giao dịch kiểu tín hiệu này, thêm điều kiện nguồn gốc mức và kiểm định như một biến thể riêng.
Đặt lệnh, vô hiệu và thời hạn
Tài liệu broker emulator phân biệt tạo lệnh sau close và fill ở tick tiếp theo [3]. Với baseline close-confirmed, mô phỏng next open cùng spread/trượt giá. Buy stop đặt sẵn trên U là phiên bản khác: nó có thể khớp trong nến rồi bị đảo chiều trước close, nên không được loại trade chỉ vì close không vượt biên.
Quy tắc thoát có thể là stop ban đầu dưới vùng retest, trailing bằng D của cửa sổ ngắn hơn, hoặc time exit. Chọn một cấu hình đơn giản trước. Nếu chờ retest, ghi no-fill khi thị trường chạy luôn; không chuyển ngầm sang đuổi giá. Một nến chạm cả stop và target cần dữ liệu nhỏ hơn hoặc giả định bất lợi rõ ràng.
Volume xác nhận hay chi phí cao hơn
Thử lọc breakout với RVOL≥1,5 tính từ baseline cùng giờ phiên. Đặt feature tại nến close trigger; nếu lệnh buy stop đã đặt từ trước, chỉ dùng volume lũy kế đến lúc đặt lệnh. Volume toàn nến sau khi fill không thể trở thành điều kiện khiến lệnh trước đó được phép tồn tại.
Chia kết quả thành không lọc, lọc thanh khoản tối thiểu và lọc volume bất thường. Nhóm RVOL cao có thể dịch chuyển tốt hơn nhưng cũng gap nhiều hơn. So sánh sau spread và slippage, đồng thời báo tỷ lệ cơ hội bị loại; một win rate cao hơn trên rất ít trade chưa chứng minh tổng hệ thống tốt hơn.
Đánh giá đúng loại breakout
Đăng ký vài N như 10,20,40 trên development. Ghi mức biên, nến tạo cực trị và tuổi mức khi trigger để phân biệt breakout đỉnh mới với breakout do biên cũ hết hạn. Tách phiên có tin, mở cửa và cuối phiên nếu dữ liệu cho phép, nhưng không tối ưu hàng chục nhóm sau khi xem test.
Kiểm thử nhân quả bằng cách sửa H[t] và xác nhận U[t] không đổi; sửa H[t−1] phải có thể đổi U[t]. Kiểm tra thiếu nến, phiên nghỉ và gap. Chỉ sau khi detector đúng mới dùng đánh giá ngoài mẫu có phí, turnover, exposure, drawdown và độ nhạy với giá fill.
Sai lầm thường gặp
Tự đuổi theo mức
Reclaim so với kênh cập nhật có thể mang ý nghĩa khác reclaim mức bị phá ban đầu.
Nhầm chạm với vượt
Giá bằng U không nhất thiết là breakout; tie và tick phải quy định.
Kênh quá ngắn
N nhỏ có thể tăng turnover và để chi phí chi phối kết quả.
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
Chạm upper band có nên bán không?
Không có kết luận chung. Bán hồi quy và mua breakout là hai giả thuyết đối nghịch cần kiểm định riêng.
Có thể dùng Donchian thay pivot không?
Có thể làm mức tham chiếu cho breakout, nhưng nó không cung cấp xác nhận đảo chiều và thứ tự swing như pivot.
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.
- Donchian ChannelsTradingView. Đã đọc công thức kênh và cách dùng mô tả. Đối chiếu: .
- pandas.Series.shiftpandas. Đã mở API để đối chiếu phép dịch dữ liệu. Đối chiếu: .
- Pine Script: StrategiesTradingView. Đã đọc tạo lệnh, next available tick và stop order. Đố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