Chỉ báo của bạn có repaint không? Cách kiểm tra
Krzysztof một lần đưa cho tôi xem ảnh chụp màn hình của một công cụ mũi tên mà anh đã mua với giá một trăm năm mươi đô-la. Trên biểu đồ lịch sử, nó trông như một giấc mơ — mũi tên xanh tại mỗi đáy, mũi tên đỏ tại mỗi đỉnh, chín lần đúng trong mười. Chúng tôi cùng bật nó lên trực tiếp trên EUR/USD, và chỉ trong vòng một giờ, một trong những mũi tên anh nhìn thấy năm phút trước đó đơn giản là biến mất. Đó không phải lỗi nền tảng. Đó là repaint — chỉ báo đang tự thay đổi lịch sử của chính nó sau khi sự việc đã xảy ra. Dưới đây tôi giải thích repaint là gì, khi nào nó trung thực, khi nào là thủ thuật của người bán, và cách phát hiện nó trước khi nó ngốn tiền của bạn.
Repaint thực sự là gì
Repaint là hiện tượng một chỉ báo thay đổi các giá trị hoặc tín hiệu trước đó khi có nến mới xuất hiện trên biểu đồ. Một mũi tên mua bạn nhìn thấy hai nến trước tại mức 1,0850 đột nhiên xuất hiện lại thấp hơn năm pip khi nến tiếp theo đóng cửa — hoặc biến mất hoàn toàn, như thể nó chưa bao giờ tồn tại. Một đường chỉ báo hôm qua chỉ vào một điểm phá vỡ, hôm nay được vẽ lại theo cách mà điểm phá vỡ đó không còn tồn tại ở đó nữa.
Hệ quả luôn giống nhau và luôn tốn kém. Trên dữ liệu lịch sử, công cụ trông có vẻ chính xác một cách khó tin, vì nó hiển thị phiên bản đã được hiệu chỉnh — phiên bản chỉ ổn định sau khi xu hướng đã được biết. Nhưng khi giao dịch trực tiếp, bạn đang giao dịch ở cạnh trái của chính lịch sử đó, ở phiên bản chưa được xác nhận đang còn hình thành. Khoảng cách giữa những gì một phân tích kỹ thuật backtest hiển thị qua nhìn lướt và những gì bạn thực sự nhìn thấy vào thời điểm quyết định có thể là một vực thẳm. Đó là lý do tại sao một biểu đồ lịch sử đẹp đẽ một mình không bao giờ là bằng chứng về độ chính xác.
Repaint đến từ đâu
Có ba nguồn gốc của repaint, và đáng phân biệt chúng, vì không phải tất cả đều không trung thực. Nguồn đầu tiên là các chỉ báo tính toán lại theo bản chất. ZigZag là ví dụ điển hình trong sách giáo khoa: nó vẽ một đường nối giữa các đỉnh và đáy liên tiếp, nhưng theo định nghĩa nó không biết một điểm là đáy cho đến khi thị trường đảo chiều theo một tỷ lệ phần trăm nhất định. Vì vậy, đoạn cuối cùng của nó chỉ được xác định khi xu hướng xác nhận — và cho đến lúc đó nó có thể lang thang.
Tương tự áp dụng cho các điểm Parabolic SAR được tính toán trên nến hiện tại. Nguồn thứ hai là lỗi gọi là look-ahead bias — chỉ báo sử dụng dữ liệu chưa tồn tại vào thời điểm đó. Đôi khi đó là hiệu ứng của việc dịch chuyển chuỗi sang phải, đôi khi là cố ý lấy giá đóng cửa của một nến đang còn hình thành. Nguồn thứ ba là đáng chê trách nhất: các mũi tên "thần kỳ" có phí, được quảng cáo là "non-repaint", nhưng trên thực tế tính toán lại trên mỗi nến mới. Đây là thủ thuật marketing kinh điển của các nhà bán hệ thống — biểu đồ hoàn hảo trong quảng cáo chính xác là từ repaint mà người mua không bao giờ được thông báo.
Khi nào repaint trung thực và khi nào là thủ thuật
Ranh giới không nằm giữa "chỉ báo repaint" và "không repaint", mà nằm giữa sự trung thực và sự che giấu. ZigZag repaint và hoàn toàn ổn, miễn là bạn sử dụng nó đúng mục đích thiết kế — tổ chức cấu trúc thị trường sau khi sự việc đã xảy ra, đo sóng hoặc đặt các mức thoái lui Fibonacci trên một xu hướng đã đóng. Vấn đề chỉ xuất hiện khi ai đó lấy một công cụ tính toán lại theo bản chất và xây dựng tín hiệu vào lệnh theo thời gian thực dựa trên nó, giả vờ rằng đoạn cuối cùng đã chắc chắn.
Loại không trung thực thứ hai là sự im lặng của người bán. Một người tạo chỉ báo hiển thị biểu đồ với độ chính xác chín mươi phần trăm và không nói một từ về việc các mũi tên dịch chuyển sau khi nến đóng cửa là đang bán ảo tưởng. Một chỉ báo tính toán lại trung thực luôn nêu rõ trong mô tả rằng giá trị cuối cùng là tạm thời cho đến khi nến đóng. Nếu ghi chú đó bị thiếu và biểu đồ quá đẹp, hãy coi đó là dấu hiệu cảnh báo. Nguyên tắc tương tự áp dụng cho các cảnh báo có phí — vấn đề này liên quan mật thiết đến chiến lược giao dịch và cách đánh giá độ tin cậy của tín hiệu.
"Tối ưu hóa chiến lược trên dữ liệu lịch sử dẫn đến kết luận sai — một hệ thống trông xuất sắc trong quá khứ thất bại trong giao dịch thực tế." — Robert Pardo, The Evaluation and Optimization of Trading Strategies, ấn bản lần 2, Wiley, 2008
Ví dụ minh họa — mũi tên thần kỳ
Giả sử Marek kiểm tra một chỉ báo mũi tên được quảng cáo là "non-repaint, độ chính xác 90%". Trên biểu đồ ba tháng gần nhất, anh đếm tay các tín hiệu và thực sự đạt chín lần đúng trong mười — các mũi tên nằm hoàn hảo tại các đáy và đỉnh. Vì vậy, anh mở tài khoản demo trực tiếp và quan sát công cụ từng nến trong hai tuần. Lần này bức tranh khác: một số mũi tên xuất hiện trễ chỉ sau khi điểm phá vỡ đã xảy ra, và cứ khoảng bốn cái thì có một cái biến mất sau khi nến nó hình thành đóng cửa. Tỷ lệ tín hiệu thực sự có thể sử dụng giảm xuống còn khoảng một nửa.
Đó là toàn bộ sự khác biệt giữa một backtest nhìn lướt và một forward-test trên dữ liệu tiến về phía trước. Biểu đồ lịch sử hiển thị phiên bản sau sự việc — phiên bản ổn định khi xu hướng đã được biết. Tài khoản demo hiển thị phiên bản Marek thực sự có trước mắt vào thời điểm quyết định. Các con số được tạo ra cho ví dụ, nhưng quy luật là thật và lặp lại với hàng chục người viết thư cho tôi với cùng nỗi thất vọng đó.
Cách kiểm tra chỉ báo có repaint không
Quy tắc đáng tin cậy nhất là: chỉ đọc tín hiệu trên nến đã đóng cửa. Nếu sau khi nến đóng, mũi tên hoặc đường dịch chuyển, biến mất hoặc vẽ lại ngược về mức tốt hơn, bạn có repaint. Nếu nó giữ nguyên vị trí, công cụ trung thực. Các lập trình viên MQL5 áp dụng cùng nguyên tắc — một giá trị được ghi vào bộ đệm chỉ báo không nên thay đổi sau khi nến đóng cửa, và thay đổi duy nhất được phép là cập nhật nến hiện tại đang còn hình thành.
Trong thực tế bạn có ba công cụ. Công cụ đầu tiên là history replay: tính năng "bar replay" trong TradingView hoặc trình kiểm tra chiến lược ở chế độ trực quan trong MetaTrader 5 — bạn tiến qua biểu đồ từng nến và quan sát tín hiệu có giữ nguyên không. Công cụ thứ hai là so sánh ảnh chụp màn hình: bạn lưu chế độ xem hiện tại và quay lại cùng đoạn biểu đồ một giờ sau. Công cụ thứ ba, có tính quyết định, là forward-test trên tài khoản demo trực tiếp — kỹ thuật này thuộc về lĩnh vực thực hành giao dịch cơ bản mà mọi trader nên nắm vững. Cũng hãy cảnh giác với các công cụ "luôn" đánh trúng các điểm cực trị — trong thị trường thực không có chỉ báo nào mua mỗi đáy mà không có một lỗi đơn lẻ. Để có bộ công cụ rộng hơn, mục phân tích kỹ thuật trên forexmechanics.com đi sâu hơn.
Bước tiếp theo của bạn
- Bật history replay cho mọi chỉ báo mũi tên trên biểu đồ của bạn. Mở "bar replay" trong TradingView hoặc trình kiểm tra trực quan trong MetaTrader 5, tiến qua năm mươi nến gần nhất từng cái một, và ghi lại có bao nhiêu mũi tên dịch chuyển hoặc biến mất sau khi nến riêng của chúng đóng cửa. Thao tác này giải quyết vấn đề trong một phần tư giờ và không cần mua thêm bất cứ thứ gì.
- Thực hiện bài kiểm tra ảnh chụp màn hình trực tiếp. Lưu một ảnh chụp màn hình của đoạn biểu đồ hiện tại cùng với chỉ báo, ghi nhãn thời gian, và quay lại đúng vị trí đó sau hai hoặc ba nến đã đóng. Nếu các tín hiệu nằm khác với ảnh chụp đầu tiên, bạn có bằng chứng đen trắng về repaint không thể chối cãi.
- Chuyển mọi chỉ báo "có triển vọng" sang tài khoản demo ít nhất hai tuần. Chỉ đọc tín hiệu sau khi nến đóng cửa và ghi lại tỷ lệ đúng thực sự trong bảng tính, thay vì tin vào biểu đồ lịch sử. Điều này buộc bạn đánh giá công cụ theo điều kiện giống với giao dịch thực tế nhất có thể, giúp bảo vệ vốn trước khi bạn cam kết với bất kỳ chiến lược nào.
- Phân tách dứt khoát công cụ phân tích và công cụ tín hiệu. Để ZigZag và kênh hồi quy mô tả cấu trúc của xu hướng đã hoàn thành, và chỉ dựa vào các quyết định vào lệnh trên các chỉ báo đã qua bài kiểm tra nến đóng cửa. Hãy ghi quy tắc này vào kế hoạch giao dịch của bạn để không nhầm lẫn hai công dụng này khi chịu áp lực thị trường.
Nguồn và tài liệu tham khảo
-
MetaQuotes — MQL5 Reference Custom Indicators · Oficjalna dokumentacja buforów wskaźnika, funkcji OnCalculate i parametru prev_calculated — wyjaśnia, dlaczego wartość już zapisana do bufora może być przeliczona ponownie na bieżącej świecy. www.mql5.com ↗
-
MetaQuotes — MQL5 Reference Organizing Data Access (Timeseries and Indicators Access) · Dokumentacja dostępu do danych świecowych w MQL5 (CopyRates, Bars) — podstawa rozróżnienia między świecą zamkniętą a wciąż formującą się przy weryfikacji sygnału. www.mql5.com ↗
-
MQL5 Community Forum Indicator: Repainting to non repainting (MQL5) · Wątek programistów MQL5 omawiający, dlaczego wskaźnik przemalowuje (przesunięcia w prawo, „patrzenie wstecz") i jak przerobić go na wersję ocenianą na zamkniętej świecy. www.mql5.com ↗
-
CFA Institute Backtesting and Simulation (Refresher Reading) · Materiał programu CFA omawiający błędy w testowaniu strategii, w tym look-ahead bias (korzystanie z danych z przyszłości) i survivorship bias jako źródła zawyżonych wyników historycznych. www.cfainstitute.org ↗
Câu hỏi thường gặp
Mọi chỉ báo repaint có phải là lừa đảo không?
Không. Một phần repaint xuất phát từ bản chất của công cụ và không hề không trung thực. ZigZag theo định nghĩa không biết đâu là đáy cho đến khi thị trường đảo chiều theo một tỷ lệ nhất định, vì vậy đoạn cuối cùng được vẽ với độ trễ. Parabolic SAR và kênh hồi quy được tính toán trên nến hiện tại cũng liên tục thay đổi cho đến khi nến đó đóng cửa. Điều này trung thực miễn là bạn hiểu cơ chế và không coi tín hiệu chưa được xác nhận là cuối cùng. Vấn đề chỉ bắt đầu khi ai đó che giấu repaint — hiển thị biểu đồ lịch sử hoàn hảo và bán nó như "non-repaint", trong khi im lặng về cách các mũi tên thực sự trông như thế nào khi giao dịch trực tiếp.
Làm thế nào để kiểm tra trong năm phút xem chỉ báo có repaint không?
Cách nhanh nhất là ở chế độ history replay. Trong TradingView dùng tính năng "bar replay", trong MetaTrader 5 dùng trình kiểm tra chiến lược ở chế độ trực quan — và tiến qua biểu đồ từng nến một. Dừng lại khi một mũi tên xuất hiện, ghi lại nến và giá của nó, sau đó phát thêm hai hoặc ba nến. Nếu mũi tên giữ nguyên vị trí sau khi nến của nó đóng cửa, chỉ báo không repaint. Nếu nó nhảy, biến mất hoặc được vẽ lại ngược về mức tốt hơn, bạn có repaint. Phương pháp thứ hai là so sánh ảnh chụp màn hình được chụp một giờ trước với chế độ xem hiện tại của cùng đoạn biểu đồ.
Look-ahead bias là gì và liên quan thế nào đến repaint?
Look-ahead bias có nghĩa là sử dụng dữ liệu trong một bài kiểm tra mà vào thời điểm đó chưa có sẵn. Một chỉ báo repaint là nguồn gốc phổ biến của lỗi này: khi tính toán lại lịch sử, nó sử dụng giá từ các nến chưa xuất hiện khi giao dịch trực tiếp, vì vậy trên biểu đồ quá khứ nó thực sự "biết" điều gì xảy ra tiếp theo. Kết quả là một backtest hiển thị kết quả không thể đạt được trong giao dịch thực tế. CFA Institute liệt kê look-ahead bias cùng với survivorship bias là một trong những lý do chính tại sao các mô phỏng lịch sử phóng đại hiệu suất. Đó là lý do tại sao một biểu đồ quá khứ đẹp đẽ một mình không bao giờ là đủ — điều quan trọng là bài kiểm tra trên dữ liệu tiến về phía trước.
Tôi vẫn có thể dùng ZigZag dù nó repaint không?
Có, miễn là bạn sử dụng nó đúng mục đích thiết kế. ZigZag xuất sắc trong việc tổ chức cấu trúc thị trường sau khi sự việc đã xảy ra — đánh dấu các đỉnh và đáy liên tiếp, đo sóng hoặc đặt các mức thoái lui Fibonacci trên một xu hướng đã đóng. Nó không phù hợp để tạo tín hiệu vào lệnh theo thời gian thực, vì đoạn cuối cùng của nó vẫn có thể dịch chuyển. Quy tắc rất đơn giản: một công cụ repaint có thể phục vụ để phân tích xu hướng đã hoàn thành, nhưng không phải để đưa ra quyết định trên nến đang còn hình thành. Nhầm lẫn hai công dụng đó là lỗi phổ biến nhất của các trader mới bắt đầu.