PositionGetSymbol

未決済ポジションに対応するシンボルを返し、PositionGetDoublePositionGetIntegerPositionGetString 関数を使用しての操作のために自動的にポジションを選択します。

string  PositionGetSymbol(
  int  index      // ポジションリスト内の番号
  );

パラメータ

index

[in]  未決済ポジションリスト内での番号

戻り値

string 型の変数ポジションが見つからなかった場合、空の文字列 が戻されます。エラーコード取得には GetLastError() 関数が呼ばれます。

注意事項

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

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

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 口座のポジションの数を取得する
  int total=PositionsTotal();
  for(int i=0; i<total; i++)
    {
    //--- i ループインデックスでポジション銘柄を取得する
    ResetLastError();
    string symbol=PositionGetSymbol(i);
     
    //--- ポジションの銘柄が正常に受信されると、iインデックスのポジションが自動的に選択される
    //--- PositionGetDouble、PositionGetInteger、PositionGetStringを使用してそのプロパティを取得できる
    if(symbol!="")
       {
        ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
        PrintFormat("Position symbol at index %d: %s, position type: %s", i, symbol, StringSubstr(EnumToString(type), 14));
       }
    else
       {
        PrintFormat("PositionGetSymbol(%d) failed. Error %d", i, GetLastError());
        continue;
       }
    }
  /*
   結果:
  Position symbol at index 0: GBPUSD, position type: SELL
  Position symbol at index 1: EURUSD, position type: BUY
  */
 }

参照

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