Sau khi có một tài khoản phái sinh mở tại SSI, đăng ký thành công dịch vụ API và nộp tiền vào tài khoản đủ để mở 01 vị thế hợp đồng tương lai, nhà đầu tư có thể bắt đầu trải nghiệm giao dịch thuật toán tại ALGOTRADE LAB theo trình tự sau:
Đăng ký tài khoản > Đăng nhập > Kết nối API > Cấu hình tham số thuật toán > Khởi chạy thuật toán > Giám sát thuật toán.
Đăng ký tài khoản và đăng nhập
Gửi thông tin đăng ký tại www.algotrade.vn/lab > Nhận thông tin tài khoản qua email > Truy cập www.lab.algotrade.vnvà đăng nhập để bắt đầu.
Cấu trúc thư mục của thuật toán bao gồm:
-
config.ipynb: được sử dụng để cấu hình API và cấu hình các tham số của thuật toán SMA;
-
data.ipynb: dùng để lưu các giá trị tick của VN30F1M và tính toán SMA(t);
-
db.ipynb: là một dạng cơ sở dữ liệu đơn giản để lưu lại trạng thái của lệnh, tổng giá trị lời/lỗ, v.v.
-
main.ipynb: hiện thực hóa thuật toán và xem log vận hành theo thời gian thực;
-
logs.log: chứa tất cả thông tin về giá trị SMA và thông tin lệnh mà thuật toán đã giao dịch (chỉ dùng cho mục đích kiểm tra tính chính xác của thuật toán).
Kết nối API
Tại giao diện ALGOTRADE LAB, mở “config.ipynb” > Nhập các thông tin theo yêu cầu/mong muốn của nhà đầu tư vào các dòng tương ứng: CONSUMER_ID, CONSUMER_SECRET, PRIVATE_KEY, ACCOUNT.
Cấu hình tham số thuật toán
Ngay dưới phần nhập Key kết nối API, nhà đầu tư cũng có thể điều chỉnh các tham số của thuật toán SMA tùy theo mong muốn của mình. Dưới đây là các tham số được phép điều chỉnh:
CUT_LOSS_THRESHOLD: tham số cắt lỗ. Khi chạm mức lỗ này thì hệ thống sẽ tự động đóng tất cả vị thế đang mở bằng lệnh thị trường. Giá trị cắt lỗ sẽ được so sánh giá hiện tại và giá mở vị thế thực tế, không sử dụng giá lý thuyết lúc xảy ra tín hiệu. Tham số mặc định là -3.
-
CUT_LOSS_THRESHOLD: tham số cắt lỗ. Khi chạm mức lỗ này thì hệ thống sẽ tự động đóng tất cả vị thế đang mở bằng lệnh thị trường. Khoản thua lỗ theo thời gian thực được tính toán sử dụng giá hiện tại và giá mở vị thế thực tế, không sử dụng giá lý thuyết lúc xảy ra tín hiệu. Tham số mặc định là -3.
-
TAKE_PROFIT_THRESHOLD: tham số chốt lời (mặc định là 3). Hệ thống sẽ tự động đặt lệnh chốt lời khi đạt ngưỡng lợi nhuận.
-
MAX_ROUND: số lần thuật toán được phép kích hoạt. Một lần kích hoạt được hiểu là một lần mở và đóng vị thế (02 giao dịch). Hệ thống mặc định số lần kích hoạt thuật toán tối đa là 03 lần mở vị thế (06 giao dịch) nhằm đảm bảo trải nghiệm của nhà đầu tư mà không gây ra tình trạng giao dịch quá nhiều lần trong ngày.
-
START_TRADING_TIME: thời gian khởi động thuật toán. Nhà đầu tư có thể thiết lập bất cứ khoảng thời gian nào trong giờ giao dịch từ 09:00:00 đến 14:30:00. Tham số mặc định là 09:00:00.
Sau khi điều chỉnh thông tin cấu hình, bấm lưu (Ctrl + S hoặc Command + S) để cập nhật những thay đổi lên hệ thống. Dưới đây là ví dụ minh họa một nhà đầu tư đã hoàn thành bước kết nối API và cấu hình tham số thuật toán:
Khởi động thuật toán
Sau khi kết nối API và điều chỉnh các tham số thuật toán, tại file main.ipynb, chọn ”Kernel” > Bấm “Restart Kernel and Run All Cells” để khởi động thuật toán.
Giám sát thuật toán
Tại giao diện ALGOTRADE LAB, mở “main.ipynb” để quan sát thuật toán gồm hai phần:
-
“SSI Algorithm Demo”: hiển thị các đoạn mã lập trình của thuật toán SMA.
-
“If you want to show log realtime …”: nằm dưới cùng, sau phần “SSI Algorithm Demo”, hiển thị các thông tin cập nhật trạng thái thuật toán giao dịch theo thời gian thực.
Nếu thuật toán khởi tạo thành công, phần “If you want to show log realtime …” sẽ hiển thị thông tin cập nhật liên tục như sau:
Tạm dừng thuật toán
Trong main.ipynb, bấm vào “Kernel” > “Shut Down Kernel” để dừng thuật toán. Thuật toán dừng thành công nếu hiển thị dòng trạng thái “KeyboardInterrupt” như sau:
Điều chỉnh tham số thuật toán khi hệ thống đang vận hành
Khi hệ thống giao dịch thuật toán đang vận hành, nếu muốn thay đổi tham số thuật toán thì làm theo trình tự sau:
Mở “config.ipynb” > Nhập lại thông tin tham số cần thay đổi > Bấm lưu (Ctrl + S hoặc Command + S) > Tại giao diệnchính, chọn ”Kernel” > bấm “Restart Kernel and Run All Cells” để khởi động lại thuật toán.
Lưu ý: không cần tạm dừng thuật toán khi thay đổi tham số.
Giải thích mã nguồn
Sau đây là giải thích chi tiết các đoạn mã nguồn chính:
Tải (import) các thư viện cần thiết để thuật toán có thể chạy được, có bao gồm thư viện nội bộ của ALGOTRADE.
Xử lý dữ liệu vị thế từ SSI trả về, cập nhật lại trạng thái vị thế đã mở cũng như tổng lãi/lỗ nếu vị thế đã được đóng.Sau đó, cập nhật lại trạng thái của OPEN_POSITION thành trạng thái khởi tạo (None) để có thể mở tiếp vị thế nếu thỏa yêu cầu của thuật toán.
Khởi tạo redis pub/sub để nhận thông tin về tick mà chúng tôi đã xử lý cũng như trạng thái lệnh đã được đặt từ thuật toán.
Đây là phương thức dùng để mở một vị thế với các thông tin như ACCOUNT là tài khoản của người dùng, F1 là mã chứng khoán phái sinh VN30F1M, side là ‘BUY’ hoặc ‘SELL’, price là giá để khớp, v.v.
Trên đây là phần chính của thuật toán. Sau khi có 1 tick mới với giá được thêm vào, hệ thống sẽ tính được SMA(t, thời điểm cuối cùng) và SMA(t-1, thời điểm kế cuối) sau đó kiểm tra:
-
Nếu Giá(t-1) < SMA(t-1) và Giá(t) >= SMA(t) thì sẽ mở vị thế Mua
-
Nếu Giá(t-1) > SMA(t-1) và Giá(t) <= SMA(t) thì sẽ mở vị thế Bán
Nếu giá trị lãi/lỗ chưa chốt (cho vị thế đang mở) vượt quá khoảng lãi/lỗ đã được định nghĩa trong file "config.ipynb"thì một vị thế với chiều ngược lại sẽ được mở để cắt lỗ/chốt lãi bằng lệnh LO với giá trần hoặc sàn.
Và sau 14:29:50 nếu vẫn còn vị thế mở thì một vị thế với chiều ngược lại sẽ được mở ở phiên giao dịch ATC để đóng lại vị thế.