orders_get

Получает действующие ордеры с возможность фильтрации по символу или тикету. Существует 3 варианта вызова.

Вызов без параметров. Возвращает действующие ордеры по всем символам.

orders_get()

Вызов с указанием символа, по которому нужно получить действующие ордеры.

orders_get(
   symbol="SYMBOL"      // имя символа
)

Вызов с указанием группы символов, по которым нужно получить действующие ордеры.

orders_get(
   group="GROUP"        // фильтр для отбора ордеров по символам
)

Вызов с указанием тикета ордера.

orders_get(
   ticket=TICKET        // тикет
)

symbol="SYMBOL"

[in]  Имя символа. Необязательный именованный параметр. Если символ указан, то параметр ticket игнорируется.

group="GROUP"

[in]  Фильтр для отбора группы только необходимых символов. Необязательный именованный параметр. Если группа задана, то функция вернет только те действующие ордеры, которые удовлетворяют заданному критерию для имени символа.

ticket=TICKET

[in]  Тикет ордера (ORDER_TICKET). Необязательный именованный параметр.

Возвращаемое значение

Возвращает информацию в виде структуры именованных кортежей (namedtuple). В случае ошибки возвращает None, информацию об ошибке можно получить с помощью last_error().

Примечание

Функция  позволяет получить за один вызов все действующие ордера, аналогом является связка OrdersTotal и OrderSelect.

Параметр group позволяет отфильтровать ордеры по символам, допустимо использовать '*' в начале и конце строки.

Параметр group может содержать несколько условий, разделенных запятыми. Условие можно задавать как маску с использованием '*'. Для исключения можно использовать символ логического отрицания '!'. При этом все условия применяются последовательно, то есть сначала необходимо указать условия включения в группу, а затем условие исключения. Например, group="*, !EUR" означает, что сначала нужно выбрать ордеры по всем символам и затем исключить те из них, что содержат в имени символа "EUR".

Пример:

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# выведем информацию о действующих ордерах на символе GBPUSD 
orders=mt5.orders_get(symbol="GBPUSD")
if orders is None:
    print("No orders on GBPUSD, error code={}".format(mt5.last_error()))
else:
    print("Total orders on GBPUSD:",len(orders))
    # выведем все действующие ордеры
    for order in orders:
        print(order)
print()
 
# получим список ордеров на символах, чьи имена содержат "*GBP*"
gbp_orders=mt5.orders_get(group="*GBP*")
if gbp_orders is None:
    print("No orders with group=\"*GBP*\", error code={}".format(mt5.last_error()))
else:
    print("orders_get(group=\"*GBP*\")={}".format(len(gbp_orders)))
    # выведем эти ордеры в виде таблицы с помощью pandas.DataFrame
    df=pd.DataFrame(list(gbp_orders),columns=gbp_orders[0]._asdict().keys())
    df.drop(['time_done', 'time_done_msc', 'position_id', 'position_by_id', 'reason', 'volume_initial', 'price_stoplimit'], axis=1, inplace=True)
    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
    print(df)
 
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
 
Результат:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
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  time_expiration  type  type_time  type_filling  state  magic  volume_current  price_open   sl   tp  price_current  symbol comment external_id
0  554733548 2020-03-25 16:27:47   1585153667718                0     3          0             2      1      0             0.2     1.25379  0.0  0.0        1.16803  GBPUSD                    
1  554733621 2020-03-25 16:27:51   1585153671419                0     2          0             2      1      0             0.2     1.14370  0.0  0.0        1.16815  GBPUSD                    
2  554746664 2020-03-25 16:38:14   1585154294401                0     3          0             2      1      0             0.2     0.93851  0.0  0.0        0.92428  EURGBP                    
3  554746710 2020-03-25 16:38:17   1585154297022                0     2          0             2      1      0             0.2     0.90527  0.0  0.0        0.92449  EURGBP    

Смотри также

orders_total, positions_get