Tổng quan về các hàm của gói MetaTrader5 cho Python
Các hàm API có sẵn trong Python có thể được chia thành 2 nhóm: các hàm có bản sao hoàn chỉnh trong API MQL5 và các hàm chỉ có trong Python. Sự hiện diện của nhóm thứ hai một phần là do kết nối giữa Python và MetaTrader 5 cần được tổ chức kỹ thuật trước khi các hàm ứng dụng có thể được sử dụng. Điều này giải thích sự hiện diện và mục đích của cặp hàm initialize
và shutdown
: hàm đầu tiên thiết lập kết nối với terminal, và hàm thứ hai chấm dứt kết nối.
Điều quan trọng là trong quá trình khởi tạo, bản sao cần thiết của terminal có thể được khởi chạy (nếu nó chưa được thực thi) và một tài khoản giao dịch cụ thể có thể được chọn. Ngoài ra, có thể thay đổi tài khoản giao dịch trong bối cảnh kết nối đã mở với terminal: điều này được thực hiện bởi hàm login
.
Sau khi kết nối với terminal, một tập lệnh Python có thể lấy thông tin tóm tắt về phiên bản terminal bằng hàm version
. Thông tin đầy đủ về terminal có sẵn thông qua terminal_info
, là một bản sao hoàn chỉnh của ba hàm TerminalInfo
, như thể chúng được hợp nhất trong một lệnh gọi.
Bảng sau liệt kê các hàm ứng dụng Python và các đối tác của chúng trong API MQL5.
Python | MQL5 |
---|---|
last_error | GetLastError (Chú ý! Python có mã lỗi riêng của nó) |
account_info | AccountInfoInteger , AccountInfoDouble , AccountInfoString |
terminal_info | TerminalInfoInteger , TerminalInfoDouble , TerminalInfoDouble |
symbols_total | SymbolsTotal (tất cả các ký hiệu, bao gồm tùy chỉnh và bị tắt) |
symbols_get | SymbolsTotal + các hàm SymbolInfo |
symbol_info | SymbolInfoInteger , SymbolInfoDouble , SymbolInfoString |
symbol_info_tick | SymbolInfoTick |
symbol_select | SymbolSelect |
market_book_add | MarketBookAdd |
market_book_get | MarketBookGet |
market_book_release | MarketBookRelease |
copy_rates_from | CopyRates (theo số lượng thanh, bắt đầu từ ngày/giờ) |
copy_rates_from_pos | CopyRates (theo số lượng thanh, bắt đầu từ số thanh) |
copy_rates_range | CopyRates (trong phạm vi ngày/giờ) |
copy_ticks_from | CopyTicks (theo số lượng tick, bắt đầu từ thời gian được chỉ định) |
copy_ticks_range | CopyTicksRange (trong phạm vi thời gian được chỉ định) |
orders_total | OrdersTotal |
orders_get | OrdersTotal + các hàm OrderGet |
order_calc_margin | OrderCalcMargin |
order_calc_profit | OrderCalcProfit |
order_check | OrderCheck |
order_send | OrderSend |
positions_total | PositionsTotal |
positions_get | PositionsTotal + các hàm PositionGet |
history_orders_total | HistoryOrdersTotal |
history_orders_get | HistoryOrdersTotal + các hàm HistoryOrderGet |
history_deals_total | HistoryDealsTotal |
history_deals_get | HistoryDealsTotal + các hàm HistoryDealGet |
Các hàm từ API Python có một số đặc điểm.
Như đã lưu ý, các hàm có thể có tham số đặt tên: khi một hàm được gọi, các tham số như vậy được chỉ định cùng với tên và giá trị, trong mỗi cặp tên và giá trị chúng được kết hợp bằng dấu bằng '='. Thứ tự chỉ định các tham số đặt tên không quan trọng (khác với các tham số vị trí, được sử dụng trong MQL5 và phải tuân theo thứ tự nghiêm ngặt được chỉ định bởi nguyên mẫu hàm).
Các hàm Python hoạt động trên các kiểu dữ liệu nguyên bản của Python. Điều này bao gồm không chỉ các số và chuỗi thông thường mà còn một số kiểu tổng hợp, có phần tương tự như mảng và cấu trúc của MQL5.
Ví dụ, nhiều hàm trả về các cấu trúc dữ liệu đặc biệt của Python: tuple
và namedtuple
.
Tuple là một chuỗi các phần tử thuộc bất kỳ kiểu nào. Nó có thể được xem như một mảng, nhưng không giống như mảng, các phần tử của tuple có thể thuộc các kiểu khác nhau. Bạn cũng có thể nghĩ về tuple như một tập hợp các trường của cấu trúc.
Sự tương đồng gần hơn với cấu trúc có thể được tìm thấy với các tuple đặt tên, trong đó mỗi phần tử được gán một ID. Chỉ có thể sử dụng chỉ số để truy cập một phần tử trong tuple thông thường (trong dấu ngoặc vuông, như trong MQL5, tức là [i]). Tuy nhiên, chúng ta có thể áp dụng toán tử giải tham chiếu (dấu chấm '.') vào một tuple đặt tên để lấy "thuộc tính" của nó giống như trong cấu trúc MQL5 (tuple.field
).
Ngoài ra, tuple và tuple đặt tên không thể được chỉnh sửa trong mã (tức là chúng là hằng số).
Một kiểu phổ biến khác là từ điển: một mảng kết hợp lưu trữ các cặp khóa và giá trị, và kiểu của cả hai có thể khác nhau. Giá trị từ điển được truy cập bằng toán tử [], và khóa (bất kỳ kiểu nào, ví dụ, một chuỗi) được chỉ định giữa các dấu ngoặc vuông, điều này khiến từ điển tương tự như mảng. Một từ điển không thể có hai cặp với cùng khóa, tức là các khóa luôn duy nhất. Đặc biệt, một tuple đặt tên có thể dễ dàng được chuyển thành từ điển bằng phương thức namedtuple._asdict()
.