history_orders_get

获取可通过单号或持仓筛选的交易历史中的订单。共有三个调用选项。

调用指定时间间隔。返回指定时间间隔内的所有订单。

history_orders_get(

   date_from,           // 请求订单的开始日期

   date_to,             // 请求订单的结束日期

   group="GROUP"        // 根据交易品种选择订单的过滤器

   )

调用指定订单单号。返回带有指定单号的订单。

positions_get(

   ticket=TICKET        //订单单号

)

调用指定持仓单号。返回在ORDER_POSITION_ID属性中具有指定持仓单号的所有订单。

positions_get(

   position=POSITION    //持仓单号

)

参数

date_from

[in]  请求订单的开始日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。首先指定所需的未命名参数。

date_to

[in]  请求订单的结束日期。通过'datetime'对象或根据1970.01.01以来过去的秒数设置。其次指定所需的未命名参数。

group="GROUP"

[in]  用于跑了一组必要交易品种的过滤器。可选的命名参数。如果指定了组,则函数只返回满足交易品种名称指定条件的订单。

ticket=TICKET

[in]  应该接收的订单单号。可选参数。如果没有指定,则不应用过滤器。

position=POSITION

[in]  应接收所有交易的持仓单号(存储在ORDER_POSITION_ID)。可选参数。如果没有指定,则不应用过滤器。

返回值

以指定元组结构(namedtuple)的形式返回信息。错误情况下返回None。可使用last_error()获取错误信息。

注意

该函数允许在一个类似于HistoryOrdersTotalHistoryOrderSelect的串联调用中接收指定时间段内的所有历史订单。

group参数可以包含多个逗号分隔条件。条件可以使用'*'设置为掩码。逻辑否定字符'!'可以用来表示排除条件。所有条件依序应用,这意味着应该先指定包含到组中的条件,然后再指定排除条件。例如,group="*, !EUR"意味着应该先选择所有交易品种的交易,然后排除交易品种名称中包含"EUR"的交易。

例如:

from datetime import datetime

import MetaTrader5 as mt5

import pandas as pd

pd.set_option('display.max_columns', 500) # number of columns to be displayed

pd.set_option('display.width', 1500)      # max table width to display

# 显示有关MetaTrader 5程序包的数据

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()



# 获取历史中的订单数量

from_date=datetime(2020,1,1)

to_date=datetime.now()

history_orders=mt5.history_orders_get(from_date, to_date, group="*GBP*")

if history_orders==None:

    print("No history orders with group=\"*GBP*\", error code={}".format(mt5.last_error()))

elif len(history_orders)>0:

    print("history_orders_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(history_orders)))

print()



# 根据持仓单号显示所有历史订单

position_id=530218319

position_history_orders=mt5.history_orders_get(position=position_id)

if position_history_orders==None:

    print("No orders with position #{}".format(position_id))

    print("error code =",mt5.last_error())

elif len(position_history_orders)>0:

    print("Total history orders on position #{}: {}".format(position_id,len(position_history_orders)))

   # 显示带有指定持仓单号的所有历史订单

    for position_order in position_history_orders:        

        print(position_order)

    print()

    # display these orders as a table using pandas.DataFrame

    df=pd.DataFrame(list(position_history_orders),columns=position_history_orders[0]._asdict().keys())

    df.drop(['time_expiration','type_time','state','position_by_id','reason','volume_current','price_stoplimit','sl','tp'], axis=1, inplace=True)

    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')

    df['time_done'] = pd.to_datetime(df['time_done'], unit='s')

    print(df)



# 断开与MetaTrader 5程序端的连接

mt5.shutdown()



结果:

MetaTrader5程序包作者:MetaQuotes Software Corp.

MetaTrader5程序包版本:5.0.29



history_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14



Total history orders on position #530218319: 2

TradeOrder(ticket=530218319, time_setup=1582282114, time_setup_msc=1582282114681, time_done=1582303777, time_done_msc=1582303777582, time_expiration=0, ...

TradeOrder(ticket=535548147, time_setup=1583176242, time_setup_msc=1583176242265, time_done=1583176242, time_done_msc=1583176242265, time_expiration=0, ...



      ticket          time_setup  time_setup_msc           time_done  time_done_msc  type  type_filling  magic  position_id  volume_initial  price_open  price_current  symbol comment external_id

0  530218319 2020-02-21 10:48:34   1582282114681 2020-02-21 16:49:37  1582303777582     2             2      0    530218319            0.01     0.97898        0.97863  USDCHF

1  535548147 2020-03-02 19:10:42   1583176242265 2020-03-02 19:10:42  1583176242265     1             0      0    530218319            0.01     0.95758        0.95758  USDCHF   

另见

history_deals_totalhistory_deals_get