positions_get

获取可通过交易品种或单号筛选的未结持仓。共有三个调用选项。

无参数调用。返回所有交易品种的未结持仓。

调用指定应接收的交易品种未结持仓。

positions_get(
   symbol="SYMBOL"      // 交易品种名称
)

调用指定应接收的交易品种组未结持仓。

positions_get(
   group="GROUP"        // 根据交易品种选择持仓的过滤器
)

调用指定持仓单号。

positions_get(
   ticket=TICKET        // 单号
)

参数

symbol="SYMBOL"

[in]  交易品种名称。可选的命名参数。如果指定交易品种,则忽略ticket参数。

group="GROUP"

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

ticket=TICKET

[in]  持仓单号(POSITION_TICKET)。可选的命名参数。

返回值

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

注意

该函数允许在一个类似于PositionsTotalPositionSelect的串联调用中接收所有未结持仓。

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

例如:

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()
 
# 获取USDCHF的未结持仓
positions=mt5.positions_get(symbol="USDCHF")
if positions==None:
    print("No positions on USDCHF, error code={}".format(mt5.last_error()))
elif len(positions)>0:
    print("Total positions on USDCHF =",len(positions))
    # display all open positions
    for position in positions:
        print(position)
 
# 获取名称包含"*USD*"的交易品种的持仓列表
usd_positions=mt5.positions_get(group="*USD*")
if usd_positions==None:
    print("No positions with group=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(usd_positions)>0:
    print("positions_get(group=\"*USD*\")={}".format(len(usd_positions)))
    # display these positions as a table using pandas.DataFrame
    df=pd.DataFrame(list(usd_positions),columns=usd_positions[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    df.drop(['time_update', 'time_msc', 'time_update_msc', 'external_id'], axis=1, inplace=True)
    print(df)
 
# 断开与MetaTrader 5程序端的连接
mt5.shutdown()
 
 
结果:
MetaTrader5程序包作者:MetaQuotes Software Corp.
MetaTrader5程序包版本:5.0.29
 
positions_get(group="*USD*")=5
      ticket                time  type  magic  identifier  reason  volume  price_open       sl       tp  price_current  swap  profit  symbol comment
0  548297723 2020-03-18 15:00:55     1      0   548297723       3    0.01     1.09301  1.11490  1.06236        1.10104 -0.10   -8.03  EURUSD        
1  548655158 2020-03-18 20:31:26     0      0   548655158       3    0.01     1.08676  1.06107  1.12446        1.10099 -0.08   14.23  EURUSD        
2  548663803 2020-03-18 20:40:04     0      0   548663803       3    0.01     1.08640  1.06351  1.11833        1.10099 -0.08   14.59  EURUSD        
3  548847168 2020-03-19 01:10:05     0      0   548847168       3    0.01     1.09545  1.05524  1.15122        1.10099 -0.06    5.54  EURUSD        
4  548847194 2020-03-19 01:10:07     0      0   548847194       3    0.02     1.09536  1.04478  1.16587        1.10099 -0.08   11.26  EURUSD   

另见

positions_totalorders_get