ObjectGetInteger

この関数は、対応するオブジェクトプロパティの値を返します。オブジェクトプロパティは datetime、int、color、bool または char 型でなければなりません。この関数には 2 つのバージョンがあります。

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

long  ObjectGetInteger(
  long                            chart_id,          // チャート識別子
  string                          name,              // オブジェクト名
  ENUM_OBJECT_PROPERTY_INTEGER    prop_id,          // プロパティ識別子
  int                              prop_modifier=0   // 必要な場合、プロパティ修飾子
  );

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

bool  ObjectGetInteger(
  long                            chart_id,          // チャート識別子
  string                          name,              // オブジェクト名
  ENUM_OBJECT_PROPERTY_INTEGER    prop_id,          // プロパティ識別子
  int                              prop_modifier,     // プロパティ修飾子
  long&                            long_var          // プロパティ値を受け取る
  );

パラメータ

chart_id

[in]  チャート識別子( 0 は現在のチャート)

name

[in]  オブジェクト名

prop_id

[in]  オブジェクトプロパティ識別子。値は ENUM_OBJECT_PROPERTY_INTEGER 列挙のいずれかです。

prop_modifier

[in]  指定されたプロパティの修飾子。1 番目のバージョン例では、デフォルト修飾子の値が 0 に等しいです。ほとんどのプロパティは修飾子を必要としません。修飾子はフィボナッチツールのレベル数及びグラフィックオブジェクトのアンドリューズピッチフォークを示します。 レベルの番号付けは0から始まります。

long_var

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

戻り値

最初の呼び出しバージョン例では long 型の値

2 番目の呼び出しバージョン例では、指定されたプロパティが維持され、その値がlong_var 変数に置かれている場合には true, それ以外の場合は falseエラーの詳細を読むには GetLastError() を呼びます。

注意事項

この関数は同期呼び出しを使用します。つまり、この関数が呼び出される前にこのチャートのエンキューされたすべてのコマンドの実行が待機されるため、この関数は時間がかかることがあります。チャート上で多数のオブジェクトを操作する場合は、この特徴を考慮する必要があります。

 

例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger" // オブジェクト名
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 現在のチャートID
  long chart_id=ChartID();
 
//--- 現在の既知のサーバー時刻に「垂直線」グラフィックオブジェクトを作成する
  if(!ObjectCreate(chart_id, OBJ_NAME, OBJ_VLINE, 0, TimeCurrent(), 0))
    {
    Print("ObjectCreate() failed. Error ", GetLastError());
    return;
    }
//--- チャートを即座に更新して変更を表示する
  ChartRedraw(chart_id);
 
//--- オブジェクト作成時刻を取得する
  long long_var=0;
  if(!ObjectGetInteger(chart_id, OBJ_NAME, OBJPROP_CREATETIME, 0, long_var))
    {
    Print("ObjectGetInteger() failed. Error ", GetLastError());
    return;
    }
//--- オブジェクト作成時刻の文字列表現
  string create_time=TimeToString((datetime)long_var, TIME_DATE|TIME_MINUTES|TIME_SECONDS);
 
//--- オブジェクトで設定された時刻を取得する
  if(!ObjectGetInteger(chart_id, OBJ_NAME, OBJPROP_TIME, 0, long_var))
    {
    Print("ObjectGetInteger() failed. Error ", GetLastError());
    return;
    }
//--- オブジェクト配置時刻の文字列表現
  string obj_time=TimeToString((datetime)long_var, TIME_DATE|TIME_MINUTES|TIME_SECONDS);
 
//--- オブジェクトの型を取得する
  ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_id, OBJ_NAME, OBJPROP_TYPE);
 
//--- オブジェクトの種類、作成時刻、チャート上の配置時刻を操作ログに出力する
  PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_time, obj_time);
 
//--- 2秒待ってから、作成されたオブジェクトを削除する
  Sleep(2000);
  ObjectDelete(chart_id, OBJ_NAME);
  ChartRedraw(chart_id);
  /*
   結果:
  OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
  */
 }