PositionGetString

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

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

string  PositionGetString(
  ENUM_POSITION_PROPERTY_STRING  property_id      // プロパティ識別子
  );

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

bool  PositionGetString(
  ENUM_POSITION_PROPERTY_STRING  property_id,     // プロパティ識別子
  string&                        string_var      // プロパティ値を受け取る
  );

パラメータ

property_id

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

string_var

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

戻り値

string 型の変数関数が失敗した場合、空の文字列 が戻されます。

注意事項

ポジションの『ネッティング』計算時(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("String properties of an open position %s #%I64u:", type, ticket);
     
    //--- ヘッダーの下に選択したポジションのすべての文字列プロパティを表示する
    PositionPropertiesStringPrint(15);
    }
  /*
   結果:
  String properties of an open position Buy #2810798881:
  Symbol:       EURUSD
  Comment:       Test PositionGetString
  External ID:  
  */
 }
//+------------------------------------------------------------------+
//| 操作ログに選択したポジションの文字列プロパティを表示する                         |
//+------------------------------------------------------------------+
void PositionPropertiesStringPrint(const uint header_width=0)
 {
  uint   w=0;
  string header="";
  string value="";
 
//--- ヘッダーのテキストとヘッダーフィールドの幅を定義する
//--- ヘッダーの幅が関数に渡され、ゼロと等しい場合、幅はヘッダー行のサイズ+1になる
  header="Symbol:";
  w=(header_width==0 ? header.Length()+1 : header_width);
//--- ポジション銘柄を取得し、指定されたヘッダー幅で操作ログに表示する
  if(!PositionGetString(POSITION_SYMBOL, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 
//--- 操作ログにポジションコメントを表示する
  header="Comment:";
  w=(header_width==0 ? header.Length()+1 : header_width);
  if(!PositionGetString(POSITION_COMMENT, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 
//--- 操作ログに外部取引システムでのポジションIDを表示する
  header="External ID:";
  w=(header_width==0 ? header.Length()+1 : header_width);
  if(!PositionGetString(POSITION_EXTERNAL_ID, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 }

参照

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

OSZAR »