positions_get

ポジションを取得します(銘柄またはチケットでフィルターする機能あり)。3つの呼び出しオプションがあります。

パラメータなしでの呼び出し:すべてのポジションを返します。

ポジションを受け取る銘柄を指定した呼び出し:

positions_get(
  symbol="SYMBOL"     // 銘柄名
)

ポジションを受け取る銘柄グループを指定した呼び出し:

positions_get(
  group="GROUP"        // ポジションを銘柄で選択するためのフィルター
)

ポジションチケットを指定した呼び出し:

positions_get(
  ticket=TICKET       // チケット
)

パラメータ

symbol="SYMBOL"

[in]  Symbol name. 名前付きオプションパラメータ。銘柄が指定されている場合は、ticketパラメータは無視されます。

group="GROUP"

[in] 必要な銘柄のグループを配置するためのフィルター。名前付きオプションパラメータ。グループが指定されている場合、関数は銘柄名の指定された基準を満たすポジションのみを返します。

ticket=TICKET

[in] ポジションチケット(POSITION_TICKET)。名前の付いたオプションパラメータ。

戻り値

名前付きタプル構造(namedtuple)の形式で情報を返します。エラーの場合はNoneを返します。エラーに関する情報はlast_error()を使用して取得できます。

注意事項

この関数を使用すると、PositionsTotalおよびPositionsSelect関数を呼び出すのに似た形で1回の呼び出しですべてのポジションを受け取ることができます。

groupパラメータには、複数のコンマ区切りの条件を含めることができます。条件は「*」を使用してマスクとして設定できます。論理否定記号「!」は除外に使用できます。すべての条件は順番に適用されます。つまり、グループに含める条件を最初に指定してから、除外条件を指定する必要があります。例えば、「group="*, !EUR"」では、全銘柄のポジションを最初に選択してから、銘柄名に「EUR」が含まれるポジションを後で除外します。

例:

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns', 500) # 表示される列の数
pd.set_option('display.width', 1500)     # 表示する表の最高幅
# 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))
   # すべてのポジションを表示する
  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)))
  # 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 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  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