orders_get

Obtiene la órdenes activas con posibilidad de filtrado según un símbolo o ticket. Existen 3 variantes de llamada.

Llamada sin parámetros. Retorna las órdenes activas de todos los símbolos.

orders_get()

Llamada con indicación del símbolo del que debemos obtener las órdenes activas.

orders_get(
   symbol="SYMBOL"      // nombre del símbolo
)

Llamada con indicación del grupo de símbolos de los que debemos obtener las órdenes activas.

orders_get(
   group="GROUP"        // filtro de selección de órdenes según los símbolos
)

Llamada con indicación del ticket de la orden.

orders_get(
   ticket=TICKET        // ticket
)

symbol="SYMBOL"

[in]  Nombre del símbolo. Parámetro nombrado no obligatorio. Si se ha indicado el símbolo, el parámetro ticket será ignorado.

group="GROUP"

[in]  Filtro para seleccionar un grupo solo con los símbolos necesarios. Parámetro nombrado no obligatorio. Si el grupo ha sido establecido, la función retornará las órdenes activas que cumplan con el criterio establecido para el nombre del símbolo.

ticket=TICKET

[in]  Ticket de la orden (ORDER_TICKET). Parámetro nombrado no obligatorio.

Valor retornado

Retorna la información como estructura de tuplas nombradas (namedtuple). En caso de error, retorna None; la información sobre el error se puede obtener con la ayuda de last_error().

Observación

La función permite obtener en una sola llamada todas las órdenes activas; sería un análogo de la unión de OrdersTotal y OrderSelect.

El parámetro group permite filtrar las órdenes por símbolos. Está permitido usar '*' al inicio y el final de la línea.

El parámetro group puede contener varias condiciones separadas por comas. Las condiciones se pueden establecer como máscara con el uso de '*'. Para realizar exclusiones, se puede usar el símbolo de negación lógica '!'. En este caso, además, todas las condiciones se aplican de forma secuencial, es decir, primero se deben indicar las inclusiones en el grupo, y después las condiciones de exclusión. Por ejemplo, group="*, !EUR" significa que primero debemos seleccionar las órdenes según todos los símbolos, y después excluir aquellos de ellos que contengan en el nombre del símbolo "EUR".

Ejemplo:

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# cuántas columnas mostramos
pd.set_option('display.width', 1500)      # máx. anchura del recuadro para la muestra
# mostramos los datos sobre el paquete MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# establecemos la conexión con el terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# mostramos la información sobre las órdenes activas en el símbolo 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))
    # mostramos todas las órdenes activas
    for order in orders:
        print(order)
print()
 
# obtenemos la lista de órdenes en los símbolos cuyos nombres contienen "*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)))
    # mostramos estas órdenes en forma de recuadro con la ayuda de 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)
 
# finalizamos la conexión con el terminal MetaTrader 5
mt5.shutdown()
 
Resultado:
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    

Ver también

orders_total, positions_get