SymbolInfoDouble

指定されたシンボルの指定されたプロパティを返します。この関数には 2 つのバージョンがあります。

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

double  SymbolInfoDouble(
  string                  name,      // シンボル
  ENUM_SYMBOL_INFO_DOUBLE  prop_id    // プロパティの識別子
  );

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

bool  SymbolInfoDouble(
  string                  name,      // シンボル
  ENUM_SYMBOL_INFO_DOUBLE prop_id,   // プロパティの識別子
  double&                  double_var  // プロパティ値を受け取る
  );

パラメータ

name

[in] 銘柄名

prop_id

[in] シンボルプロパティの識別子(値は ENUM_SYMBOL_INFO_DOUBLE 列挙のいずれか)

double_var

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

戻り値

double 型の値実行が失敗した場合、エラー 情報は GetLastError() 関数で取得出来ます。

  • 5040 – 銘柄名指定での不正な文字列パラメータの使用
  • 4301 – 未知のシンボル(銘柄)
  • 4302 – シンボルが「気配値表示」で未選択(利用可能なシンボルのリストに不在)
  • 4303 – 不正なシンボルプロパティ識別子

注意事項

最後のティック情報取得には SymbolInfoTick() の使用が推奨されます。端末が取引口座に接続されてから、相場が一つも出ていない可能性があります。このような場合には、リクエストされた値は不定となります。

ほとんどの場合は SymbolInfoTick() 関数の1 回の呼び出しで、ユーザの買値、売値、最終値、ボリューム、また最後のティックの到着時間の受信を可能にするので充分です。

SymbolInfoMarginRate()関数は、注文の種類と方向に応じて必要な証拠金額に関するデータを提供します。

例:

void OnTick()
 {
//--- シンボルプロパティのスプレッドを取得
  bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
  string comm=StringFormat("Spread %s = %I64d points\r\n",
                           spreadfloat?"floating":"fixed",
                          SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- スプレッドを自分で計算する
  double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
  double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  double spread=ask-bid;
  int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
  comm=comm+"Calculated spread = "+(string)spread_points+" points";
  Comment(comm);
 }