- Установка Python и пакета MetaTrader5
- Обзор функций пакета MetaTrader5 для Python
- Подключение скрипта Python к терминалу и счету
- Проверка ошибок: last_error
- Получение информации о торговом счете
- Получение информации о терминале
- Получение информации о финансовых инструментах
- Подписка на стакан цен
- Чтение котировок
- Чтение истории тиков
- Вычисление маржинальных требований и оценка прибыли
- Проверка и отправка торгового приказа
- Получение количества и списка действующих ордеров
- Получение количества и списка открытых позиций
- Чтение истории ордеров и сделок
Получение количества и списка действующих ордеров
Для работы с активными ордерами в Python API предусмотрены следующие функции.
int orders_total()
Функция orders_total возвращает количество действующих ордеров.
Функция является аналогом OrdersTotal.
Подробную информацию о каждом ордере позволяет получить функция orders_get, имеющая несколько вариантов с возможностью фильтрации по символу или тикету. В любом варианте функция возвращает массив именованных кортежей TradeOrder (имена полей соответствуют ENUM_ORDER_PROPERTY-перечислениям без префикса "ORDER_" и приведены к нижнему регистру). В случае ошибки результат равен None.
namedtuple[] orders_get()
namedtuple[] orders_get(symbol = <"SYMBOL">)
namedtuple[] orders_get(group = <"PATTERN">)
namedtuple[] orders_get(ticket = <TICKET>)
Функция orders_get без параметров возвращает ордера по всем символам.
Необязательный именованный параметр symbol дает возможность указать конкретное имя символа для отбора ордеров.
Необязательный именованный параметр group предназначен для указания шаблона поиска с использованием символа подстановки '*' (как заместителя произвольного количества любых символов, включая ноль символов в данном месте шаблона) и символа логического отрицания условия '!'. Принципы работы с шаблоном фильтрации были описаны в разделе Получение информации о финансовых инструментах.
При указании параметра ticket ищется один конкретный ордер.
Функция позволяет получить за один вызов все действующие ордера и является аналогом связки OrdersTotal, OrderSelect и OrderGet-функций.
В следующем примере (MQL5/Scripts/MQL5Book/Python/ordersget.py) запросим информацию об ордерах разными способами.
import MetaTrader5 as mt5
|
Примерный результат:
Total orders on GBPUSD: 2 TradeOrder(ticket=554733548, time_setup=1585153667, time_setup_msc=1585153667718, time_done=0, time_done_msc=0, time_expiration=0, type=3, type_time=0, ... TradeOrder(ticket=554733621, time_setup=1585153671, time_setup_msc=1585153671419, time_done=0, time_done_msc=0, time_expiration=0, type=2, type_time=0, ...
orders_get(group="*GBP*")=4 ticket time_setup time_setup_msc type ... volume_current price_open sl tp price_current symbol comment external_id 0 554733548 2020-03-25 16:27:47 1585153667718 3 ... 0.2 1.25379 0.0 0.0 1.16803 GBPUSD 1 554733621 2020-03-25 16:27:51 1585153671419 2 ... 0.2 1.14370 0.0 0.0 1.16815 GBPUSD 2 554746664 2020-03-25 16:38:14 1585154294401 3 ... 0.2 0.93851 0.0 0.0 0.92428 EURGBP 3 554746710 2020-03-25 16:38:17 1585154297022 2 ... 0.2 0.90527 0.0 0.0 0.92449 EURGBP |