positions_get
positions_get
获取可通过交易品种或单号筛选的未结持仓。共有三个调用选项。
无参数调用。返回所有交易品种的未结持仓。
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()获取错误信息。
注意
该函数允许在一个类似于PositionsTotal和PositionSelect的串联调用中接收所有未结持仓。
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