PositionGetInteger

この関数は PositionGetSymbol または PositionSelect で事前に選択された未決済ポジションのリクエストされたプロパティを返します。ポジションプロパティは datetime または int 型でなければいけません。この関数には 2 つのバージョンがあります。

1. すぐにプロパティ値を返します。

long  PositionGetInteger(
  ENUM_POSITION_PROPERTY_INTEGER  property_id      // プロパティ識別子
  );

2. 関数実行の成功に応じて true または false を返す。成功した場合、プロパティの値は、参照によって渡された最後のパラメータに配置されます。

bool  PositionGetInteger(
  ENUM_POSITION_PROPERTY_INTEGER  property_id,     // プロパティ識別子
  long&                          long_var        // プロパティ値を受け取る
  );

パラメータ

property_id

[in]  ポジションプロパティの識別子。値は ENUM_POSITION_PROPERTY_INTEGER 列挙のいずれかです。

long_var

[out]  リクエストされたプロパティの値を受け取る long 型の変数

戻り値

long 型の値(関数が失敗した場合は 0 )

注意事項

ポジションの『ネッティング』計算時(ACCOUNT_MARGIN_MODE_RETAIL_NETTINGACCOUNT_MARGIN_MODE_EXCHANGE)各シンボルにつき常に一つのポジションのみ(1つ以上の取引の結果である)保有することができます。ポジションと『ツールボックス』パネルの『取引』タブに表示される有効な未決注文と混同しないようにしてください。

ポジションに制限がない場合(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)各シンボルごとに同時に複数のポジションを保有することができます。

取得したポジション情報が最新であるように、PositionSelect() を参照直前に呼び出すことが推奨されています。

例:

//+------------------------------------------------------------------+
//| 取引関数                                                          |
//+------------------------------------------------------------------+
void OnTrade()
 {
//--- ポジションが存在するかどうかをチェックし、変化の時刻を表示する
  if(PositionSelect(_Symbol))
    {    
//--- 更に操作するためにポジション識別子を受け取る
    ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER);
    Print(_Symbol," position #",position_ID);
//--- 01.01.1970 から経過したミリ秒で表されたポジション形成の時刻を受け取る
    long create_time_msc=PositionGetInteger(POSITION_TIME_MSC);
    PrintFormat("Position #%d  POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID,
                 create_time_msc,TimeToString(create_time_msc/1000));
//--- 01.01.1970 から経過した秒数で表されたポジションの最終変化時刻を受け取る
    long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE);
    PrintFormat("Position #%d  POSITION_TIME_UPDATE = %i64 seconds => %s",
                 position_ID,update_time_sec,TimeToString(update_time_sec));
//--- 01.01.1970 から経過したミリ秒数で表されたポジションの最終変化時刻を受け取る
    long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC);
    PrintFormat("Position #%d  POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s",
                 position_ID,update_time_msc,TimeToString(update_time_msc/1000));
    }
//---
 }

参照

PositionGetSymbol()PositionSelect()ポジションプロパティ