
Hầu hết các chiến lược cần được kiểm tra ngược để xác minh trước khi đưa vào thực tế. FMZ hỗ trợ một số loại tiền kỹ thuật số giao ngay, hợp đồng tương lai và hợp đồng vĩnh viễn, cũng như tất cả các loại hợp đồng tương lai hàng hóa. Tuy nhiên, cơ chế kiểm tra ngược của Inventor Quantitative Platform khác với cơ chế kiểm tra ngược onbar thông thường, điều này gây nhầm lẫn cho nhiều người mới bắt đầu. Bài viết này sẽ giải thích và trả lời chi tiết một số câu hỏi thường gặp về kiểm thử ngược.

Như thể hiện trong hình trên, thời gian bắt đầu kiểm tra ngược đến thời gian kết thúc có thể được coi là một trục thời gian. Khi kiểm tra ngược, điểm thời gian kiểm tra ngược di chuyển từ trái sang phải dọc theo trục để bắt đầu kiểm tra ngược. Tại thời điểm này, chỉ có điểm này có thể có thể thu được. Chiến lược này sử dụng dữ liệu lịch sử trước đó để thực hiện mua và bán dựa trên dữ liệu này, cuối cùng dẫn đến lãi hoặc lỗ. Rõ ràng, sự phân bố của các điểm thời gian kiểm tra ngược là rời rạc và mật độ phân bố thể hiện độ chính xác của kiểm tra ngược. Tất nhiên, xét đến việc các điểm thời gian kiểm tra ngược càng dày đặc thì thời gian thực hiện càng lâu, hệ thống kiểm tra ngược thực tế cần phải đánh đổi giữa độ chính xác và hiệu quả.
Cơ chế kiểm tra ngược onbar dựa trên K-line, nghĩa là mỗi K-line tạo ra một điểm thời gian kiểm tra ngược, tại đó có thể thu được giá mở cửa cao và giá đóng cửa thấp, khối lượng giao dịch và các thông tin khác của K-line hiện tại, như cũng như thông tin trước thời điểm này. Thông tin lịch sử về dòng K. Nhược điểm của cơ chế này rất rõ ràng: chỉ có thể tạo ra một lệnh mua và bán trên đường K và giá thường dựa trên giá đóng cửa của đường K. Hơn nữa, một đường K chỉ có thể có được bốn mức giá: mở cửa cao và đóng cửa thấp. Về cách giá thay đổi trong đường K, giá cao nhất xảy ra trước hay giá thấp nhất xảy ra trước, v.v., thì không có cách nào để có được thông tin đó. Lấy đường K-line 1 giờ làm ví dụ, trong giao dịch thực tế, thông tin thị trường sẽ được thu thập sau mỗi vài giây và hướng dẫn giao dịch sẽ được đưa ra trong phiên giao dịch thay vì chờ đường K-line kết thúc. Ưu điểm của cơ chế kiểm tra ngược onbar là dễ hiểu và tốc độ kiểm tra ngược cực kỳ nhanh.

Hình ảnh trên là giao diện cài đặt kiểm tra ngược FMZ. Các chế độ kiểm thử ngược được chia thành hai loại: kiểm thử ngược cấp độ mô phỏng và kiểm thử ngược thời gian thực, được giới thiệu dưới đây:
Ve là gì?
Khác với dữ liệu K-line, tick là giá tại một thời điểm cụ thể. Dựa trên dữ liệu K-line, chúng ta thực sự chỉ biết thời điểm giá mở cửa và giá đóng cửa xảy ra. Không rõ thời điểm giá đạt mức cao nhất trong chu kỳ K-line. Trên thực tế, dữ liệu K-line cũng được tạo ra dựa trên các tích tắc. Dựa trên dữ liệu K-line, chúng ta cũng có thể mô phỏng những thay đổi trong một tích tắc cụ thể của một chu kỳ K-line. Mặc dù nó không phải là một tích tắc thực sự, nhưng nó có thể giúp việc kiểm tra ngược của chúng ta chính xác hơn. Hơn nữa, khoảng thời gian K-line dùng để mô phỏng có thể nhỏ hơn nhiều so với khoảng thời gian dùng để kiểm tra ngược, do đó độ chính xác cao hơn.
Kiểm tra ngược cấp độ mô phỏng
Đối với thử nghiệm ngược ở cấp độ mô phỏng, bạn cần chọn khoảng thời gian K-line và khoảng thời gian K-line cơ bản được sử dụng để thử nghiệm ngược. Ví dụ, nếu chiến lược sử dụng kiểm tra ngược hàng giờ và đường K cơ bản là 5 phút, thì khoảng thời gian giữa các điểm thời gian kiểm tra ngược sẽ dựa trên các tích tắc được tạo ra bởi mô phỏng đường K 5 phút, được phản ánh trong các thay đổi liên tục theo giá đóng cửa của K-line 1 giờ gần nhất. Cơ chế tạo tick trong K-line dựa trên K-line tương tự như MT4. Bài đăng này có mô tả chi tiết: https://www.fmz.com/bbs-topic/662

Chúng tôi sử dụng một chiến lược đơn giản để chứng minh cơ chế này. Mã chiến lược như sau:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
var ticker = exchange.GetTicker()
Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
//js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
}
}
Kết quả kiểm tra ngược:
Đối với mỗi đường K, chỉ có các tích tắc mở và đóng là cố định và 12 tích tắc mô phỏng được thêm vào giữa, do đó một đường K sẽ tạo thành 14 điểm thời gian kiểm tra ngược. Nếu backtest diễn ra trong một ngày, chu kỳ K-line cơ bản là 5 phút, với tổng cộng 24×12×14 = 4032 điểm thời gian, trong khi backtest onBar truyền thống chỉ có 24, giúp cải thiện độ chính xác đáng kể. Vị trí mở và đóng cũng có thể được hoàn thành trong một chu kỳ K-line. Mặc dù các dấu tích được tạo ra ở giữa được mô phỏng nhưng tác động không đáng kể. Trong quá trình kiểm tra ngược, miễn là giá thầu lớn hơn giá chào bán và giá chào bán nhỏ hơn giá thầu thì giao dịch sẽ được khớp. Phương pháp kiểm tra ngược này tính đến cả tốc độ và độ chính xác của kiểm tra ngược và được khuyến nghị cho tất cả mọi người.
Kiểm tra ngược thời gian thực
Kiểm thử ngược thời gian thực sử dụng các tích tắc thực, với khoảng thời gian ngắn nhất giữa mỗi điểm thời gian chỉ là 1 giây. Độ chính xác kiểm thử ngược này chính xác đến từng giây, nhưng do lượng dữ liệu lớn nên tốc độ kiểm thử ngược chậm và thời gian kiểm thử ngược không thể đảm bảo. Rất dài. Hình ảnh bên dưới cho thấy con ve thực tế. Có thể sử dụng kiểm tra ngược theo thời gian thực để xác thực chính xác các chiến lược.

Ngay cả thử nghiệm ngược thời gian thực và giao dịch thực tế vẫn có những thiếu sót rõ ràng về dữ liệu, chẳng hạn như không thể lấy được lịch sử giao dịch, không thể lấy được những thay đổi về độ sâu thực tế, độ trễ mạng thực tế, v.v. Mặc dù vậy, hệ thống kiểm thử ngược hiện tại của FMZ tương đối hoàn thiện và có nhiều chức năng nhỏ, chẳng hạn như mô phỏng lỗi mạng, có thể dùng để kiểm tra khả năng chịu lỗi của chiến lược, mô phỏng độ trễ mạng, vẽ biểu tượng thị trường, v.v.
Tại sao chỉ có một số ít cặp giao dịch và sàn giao dịch được hỗ trợ kiểm tra ngược?
Hiện tại, chỉ có một số ít cặp dữ liệu giao dịch phổ biến. Trên thực tế, mối quan hệ giữa chiến lược và sản phẩm không lớn lắm, nhưng đủ để xác minh chiến lược.
Nó có thể mô phỏng được tỷ lệ tài trợ do BitMEX tính không?
Có, bạn có thể bật ghi nhật ký sự kiện bằng cách chọn BitMEX Backtest.

Kiểm thử ngược được thực hiện ở đâu?
Việc kiểm tra ngược các chiến lược JavaScript được thực hiện trong trình duyệt và Python có thể chọn máy chủ của FMZ hoặc máy chủ lưu trữ riêng của nó.
Có thể tải xuống nhật ký kiểm tra ngược không?
Có, có nút tải xuống ở góc trên bên phải của nhật ký
Tôi có thể kiểm tra ngược cục bộ không?
FMZ đã mở mã nguồn công cụ kiểm thử ngược Python của mình. Tham khảo: https://www.fmz.com/bbs-topic/1687