Hỗ trợ Python nguyên bản
Thành công tiềm năng của giao dịch tự động phần lớn phụ thuộc vào sự đa dạng của công nghệ có sẵn trong việc triển khai ý tưởng. Như chúng ta đã thấy trong các phần trước, MQL5 cho phép vượt ra ngoài các nhiệm vụ giao dịch ứng dụng nghiêm ngặt và cung cấp cơ hội tích hợp với các dịch vụ bên ngoài (ví dụ, dựa trên các hàm mạng và ký hiệu tùy chỉnh), xử lý và lưu trữ dữ liệu bằng cơ sở dữ liệu quan hệ, cũng như kết nối các thư viện tùy ý.
Điểm cuối cùng cho phép đảm bảo tương tác với bất kỳ phần mềm nào cung cấp API ở định dạng DLL. Một số nhà phát triển sử dụng phương pháp này để kết nối với các DBMS phân tán công nghiệp (thay vì SQLite tích hợp sẵn), các gói toán học như R hoặc MATLAB, và các ngôn ngữ lập trình khác.
Python đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất. Đặc điểm của nó là một lõi nhỏ gọn, được bổ sung bởi các gói là tập hợp các tập lệnh sẵn có để xây dựng các giải pháp ứng dụng. Các nhà giao dịch được hưởng lợi từ sự lựa chọn phong phú và chức năng của các gói cho việc phân tích thị trường cơ bản (tính toán thống kê, trực quan hóa dữ liệu) và kiểm tra các giả thuyết giao dịch, bao gồm cả học máy.
Theo xu hướng này, MQ đã giới thiệu hỗ trợ Python trong MQL5 vào năm 2019. Sự tích hợp chặt chẽ "sẵn có" này cho phép chuyển hoàn toàn phân tích kỹ thuật và các thuật toán giao dịch sang môi trường Python.
Về mặt kỹ thuật, tích hợp được thực hiện bằng cách cài đặt gói "MetaTrader5" trong Python, gói này tổ chức tương tác giữa các tiến trình với terminal (tại thời điểm viết bài này, thông qua cơ chế ipykernel/RPC).
Trong số các hàm của gói, có các bản sao đầy đủ của các hàm MQL5 tích hợp sẵn để lấy thông tin về terminal, tài khoản giao dịch, ký hiệu trong Market Watch
, báo giá, tick, Độ sâu của Thị trường, lệnh, vị thế và giao dịch. Ngoài ra, gói này cho phép chuyển đổi tài khoản giao dịch, gửi lệnh giao dịch, kiểm tra yêu cầu ký quỹ và đánh giá lợi nhuận/thiệt hại tiềm năng trong thời gian thực.
Tuy nhiên, tích hợp với Python có một số hạn chế. Đặc biệt, không thể triển khai xử lý sự kiện trong Python như OnTick
, OnBookEvent
, và các sự kiện khác. Vì lý do này, cần sử dụng một vòng lặp vô hạn để kiểm tra giá mới, giống như chúng ta buộc phải làm trong các tập lệnh MQL5. Việc phân tích thực thi các lệnh giao dịch cũng khó khăn không kém: khi không có OnTradeTransaction
, sẽ cần thêm nhiều mã hơn để biết liệu một vị thế đã được đóng hoàn toàn hay một phần. Để vượt qua các hạn chế này, bạn có thể tổ chức tương tác giữa tập lệnh Python và MQL5, ví dụ, thông qua sockets. Trang web mql5.com có các bài viết với ví dụ về việc triển khai một cầu nối như vậy.
Do đó, có vẻ tự nhiên khi sử dụng Python kết hợp với MetaTrader 5 cho các nhiệm vụ học máy liên quan đến báo giá, tick hoặc lịch sử tài khoản giao dịch. Thật không may, bạn không thể lấy giá trị chỉ báo trong Python.