PositionGetTicket

関数は保有ポジションの一覧のインデックスでポジションチケットを返し、PositionGetDoublePositionGetIntegerPositionGetString関数を使用した今後の作業の為に自動的にこのポジションを選択します。

ulong  PositionGetTicket(
  int  index      // ポジション一覧の番号
  );

パラメータ

index

[in]  0から始まる保有ポジション一覧のポジションインデックス。

戻り値

ポジションチケット。実行に失敗した場合は、0を返します。

注意事項

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

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

ポジションの最新データの取得を確実なものにする為には、直接PositionSelect()関数を適用前に呼び出すことをお勧めします。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- すべての口座ポジションのループ
  int total=PositionsTotal();
  for(int i=0; i<total; i++)
    {
    //--- 自動的にポジションを選択して、そのプロパティにアクセスし、次のポジションのチケットを取得する
    ulong ticket=PositionGetTicket(i);
    if(ticket==0)
        continue;
     
    //--- ポジションタイプを取得し、選択されたポジションの説明を操作ログに表示する
    string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
    PrintFormat("[%d] Selected position %s #%I64u", i, type, ticket);
    }
  /*
   結果:
  [0] Selected position Sell #2810802718
  [1] Selected position Buy #2810802919
  */
 }

参照

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