history_deals_get

Obtiene las transacciones de la historia comercial en el intervalo indicado con posibilidad de filtrado según un ticket o posición.

Llamada con indicación del intervalo temporal. Retorna todas las transacciones que entran en el intervalo establecido.

history_deals_get(
   date_from,           // fecha a partir de la cual se solicitan las transacciones
   date_to,             // fecha hasta la cual se solicitan los ticks
   group="GROUP"        // filtro de selección de transacciones según los símbolos
   )

Llamada con indicación del ticket de la orden. Retorna todas las transacciones que tienen el ticket de orden indicado en la propiedad DEAL_ORDER.

history_deals_get(
   ticket=TICKET        // ticket de la orden
)

Llamada con indicación del ticket de la posición. Retorna todas las transacciones que tienen el ticket de posición indicado en la propiedad DEAL_POSITION_ID.

history_deals_get(
   position=POSITION    // ticket de la posición
)

Parámetros

date_from

[in]  Fecha a partir de la cual se solicitan las órdenes. Se establece con el objeto datetime o como número de segundos transcurridos desde el 1970.01.01. Parámetro no nombrado obligatorio, se indica en primer lugar.

date_to

[in]  Fecha hasta la cual se solicitan las órdenes. Se establece con el objeto datetime o como número de segundos transcurridos desde el 1970.01.01. Parámetro no nombrado obligatorio, se indica en segundo lugar.

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 transacciones que cumplan con el criterio establecido para el nombre del símbolo.

ticket=TICKET

[in]  Ticket de la orden (se guarda en DEAL_ORDER) para la que debemos obtener todas las transacciones. Parámetro no obligatorio. Si el ticket de la orden no ha sido indicado, el filtro no se usará.

position=POSITION

[in]  Ticket de la posición (se guarda en DEAL_POSITION_ID) para la que debemos obtener todas las transacciones. Parámetro no obligatorio. Si el ticket de la posición no ha sido indicado, el filtro no se usará.

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 transacciones de la historia en el periodo indicado; sería un análogo de la unión de HistoryDealsTotal y HistoryDealSelect.

El parámetro group permite filtrar las transacciones 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 transacciones 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
from datetime import datetime
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()
 
# obtenemos el número de transacciones en la historia
from_date=datetime(2020,1,1)
to_date=datetime.now()
# obtenemos en el intervalo indicado las transacciones de los símbolos cuyos nombres contengan "GBP"
deals=mt5.history_deals_get(from_dateto_date, group="*GBP*")
if deals==None:
    print("No deals with group=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(deals)> 0:
    print("history_deals_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(deals)))
 
# obtenemos las transacciones de los símbolos cuyos nombres no contienen ni "EUR" ni "GBP"
deals = mt5.history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*")
if deals == None:
    print("No deals, error code={}".format(mt5.last_error()))
elif len(deals) > 0:
    print("history_deals_get(from_date, to_date, group=\"*,!*EUR*,!*GBP*\") ="len(deals))
    # mostramos todos los datos obtenidos como son
    for deal in deals:
        print("  ",deal)
    print()
    # mostramos todas las transacciones en forma de recuadro con la ayuda de pandas.DataFrame
    df=pd.DataFrame(list(deals),columns=deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    print(df)
print("")
 
# obtenemos todas las transacciones relacionadas con la posición #530218319
position_id=530218319
position_deals = mt5.history_deals_get(position=position_id)
if position_deals == None:
    print("No deals with position #{}".format(position_id))
    print("error code ="mt5.last_error())
elif len(position_deals) > 0:
    print("Deals with position id #{}: {}".format(position_id, len(position_deals)))
    # mostramos todas las transacciones en forma de recuadro con la ayuda de pandas.DataFrame
    df=pd.DataFrame(list(position_deals),columns=position_deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], 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
 
history_deals_get(from_date, to_date, group="*GBP*") = 14
 
history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*") = 7
   TradeDeal(ticket=506966741, order=0, time=1582202125, time_msc=1582202125419, type=2, entry=0, magic=0, position_id=0, reason=0, volume=0.0, pri ...
   TradeDeal(ticket=507962919, order=530218319, time=1582303777, time_msc=1582303777582, type=0, entry=0, magic=0, position_id=530218319, reason=0, ...
   TradeDeal(ticket=513149059, order=535548147, time=1583176242, time_msc=1583176242265, type=1, entry=1, magic=0, position_id=530218319, reason=0, ...
   TradeDeal(ticket=516943494, order=539349382, time=1583510003, time_msc=1583510003895, type=1, entry=0, magic=0, position_id=539349382, reason=0, ...
   TradeDeal(ticket=516943915, order=539349802, time=1583510025, time_msc=1583510025054, type=0, entry=0, magic=0, position_id=539349802, reason=0, ...
   TradeDeal(ticket=517139682, order=539557870, time=1583520201, time_msc=1583520201227, type=0, entry=1, magic=0, position_id=539349382, reason=0, ...
   TradeDeal(ticket=517139716, order=539557909, time=1583520202, time_msc=1583520202971, type=1, entry=1, magic=0, position_id=539349802, reason=0, ...
 
      ticket      order                time       time_msc  type  entry  magic  position_id  reason  volume    price  commission  swap     profit  fee  symbol comment external_id
0  506966741          0 2020-02-20 12:35:25  1582202125419     2      0      0            0       0    0.00  0.00000         0.0   0.0  100000.00  0.0                            
1  507962919  530218319 2020-02-21 16:49:37  1582303777582     0      0      0    530218319       0    0.01  0.97898         0.0   0.0       0.00  0.0  USDCHF                    
2  513149059  535548147 2020-03-02 19:10:42  1583176242265     1      1      0    530218319       0    0.01  0.95758         0.0   0.0     -22.35  0.0  USDCHF                    
3  516943494  539349382 2020-03-06 15:53:23  1583510003895     1      0      0    539349382       0    0.10  0.93475         0.0   0.0       0.00  0.0  USDCHF                    
4  516943915  539349802 2020-03-06 15:53:45  1583510025054     0      0      0    539349802       0    0.10  0.66336         0.0   0.0       0.00  0.0  AUDUSD                    
5  517139682  539557870 2020-03-06 18:43:21  1583520201227     0      1      0    539349382       0    0.10  0.93751         0.0   0.0     -29.44  0.0  USDCHF                    
6  517139716  539557909 2020-03-06 18:43:22  1583520202971     1      1      0    539349802       0    0.10  0.66327         0.0   0.0      -0.90  0.0  AUDUSD                    
 
Deals with position id #530218319: 2
      ticket      order                time       time_msc  type  entry  magic  position_id  reason  volume    price  commission  swap  profit  fee  symbol comment external_id
0  507962919  530218319 2020-02-21 16:49:37  1582303777582     0      0      0    530218319       0    0.01  0.97898         0.0   0.0    0.00  0.0  USDCHF                    
1  513149059  535548147 2020-03-02 19:10:42  1583176242265     1      1      0    530218319       0    0.01  0.95758         0.0   0.0  -22.35  0.0  USDCHF   

Ver también

history_deals_total, history_orders_get