Related Posts Display

   DỰ ÁN 01: TẠO HỆ THỐNG BACKTEST EVENT-DRIVEN VỚI DỮ LIỆU TICKDATA I.      Ý tưởng chính             Với việc hiện nay gần như không có ...

Dự án 01: Tạo hệ thống backtest event-driven với dữ liệu tickdata

  DỰ ÁN 01: TẠO HỆ THỐNG BACKTEST EVENT-DRIVEN VỚI DỮ LIỆU TICKDATA


I.    Ý tưởng chính

         Với việc hiện nay gần như không có các thư viện hay dự án Python hỗ trợ backtest chiến lược giao dịch với tickdata (hầu hết data input cho các thư viện này đều ở dạng nến OHLCV), vì vậy tôi đã chỉnh sửa và cập nhật hệ thống Event-Driven Backtesting của Michael Halls Moore được trình bày trong chuỗi các bài viết dưới đây để code có thể backtest dựa trên đầu vào là tick data:

Event-Driven Backtesting with Python - Part I

Event-Driven Backtesting with Python - Part II

Event-Driven Backtesting with Python - Part III

Event-Driven Backtesting with Python - Part IV

Event-Driven Backtesting with Python - Part V

Event-Driven Backtesting with Python - Part VI

Event-Driven Backtesting with Python - Part VII

Event-Driven Backtesting with Python - Part VIII

II.    Các chỉnh sửa chính so với code gốc

       Các chỉnh sửa chính nằm ở file data.py, tại đó tôi đã dùng hàm resample() của Pandas để chuyển đổi các dữ liệu tick về dạng dữ liệu OHLC theo khung thời gian có thể điều chỉnh được. Kết quả của việc chỉnh sửa này là hệ thống không thể backtest một danh mục với nhiều Symbol cùng lúc như bản gốc. Ngoài ra tôi cũng bổ sung thêm một chiến lược có sẵn là Blade Scalping trên khung M5 trên TraderViet:

Chia sẻ hệ thống Blade Scalping trên khung M5

III. Cách sử dụng

Link tải code:

Github

Bước 0: Chuẩn bị file "Symbol name".csv tickdata có cấu trúc dạng:

Trước dấu phẩy là Datetime, sau dấu phẩy là tick price

Bước 1: Mở file data.py để sửa khung thời gian backtest tại hàm update_tick():


Tôi quá lười để chuyển khung thời gian thành một tham số tại class backtest, các bạn chịu khó sửa chay tại đây nhá 😋

Bước 2: Mở file chiến thuật cần backtest, ví dụ blade scalping.py, chỉnh sửa các tham số dưới dòng "if __name__ == "__main__":"



Giải thích các tham số:
csv_dir: Đường dẫn đến file dữ liệu input
symbol_list: mã backtest (chỉ dùng được 1 mã)
..........

Bước 3: Sau khi chạy xong backtest hệ thống sẽ tạo một file csv tên equity.csv tại thư mục code để lưu kết quả backtest. Chạy file plot_performance.py để hiển thị đồ thị kết quả backtest.

Kết quả backtest chiến lược Blade Scalping:
NGHĨ LÓ CHÁN !!!




0 nhận xét: