ObjectsTotal

この関数は、指定されたチャートの指定されたサブウィンドウで、指定された型を持つオブジェクトの数を返します。

int  ObjectsTotal(
  long  chart_id,          // チャート識別子
  int  sub_window=-1,      // ウィンドウ番号
  int  type=-1            // オブジェクトの型
  );

パラメータ

chart_id

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

sub_window=-1

[in]  チャートサブウィンドウの番号。( 0 はメインウィンドウ、-1 はメインウィンドウを含む全てのサブウィンドウ)

type=-1

[in]  オブジェクトの型。値は ENUM_OBJECT 列挙のいずれかです。-1 は全ての型を意味します。

戻り値

オブジェクトの数

注意事項

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

 

例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- チャートID
  long chart_id=ChartID();
 
//--- メインウィンドウを含めたチャートサブウィンドウの数を取得する
  long wnd=0;
  ResetLastError();
  if(!ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL, 0, wnd))
    {
    Print("ChartGetInteger() failed. Error ", GetLastError());
    return;
    }
 
//--- 各チャートサブウィンドウのグラフィックオブジェクト数を取得して操作ログに表示する
  for(int i=0; i<(int)wnd; i++)
    {
    int objects=ObjectsTotal(chart_id, i);
    string wnd_head=(i==0 ?"The main chart window" : StringFormat("The window with index %d of the chart", i));
    PrintFormat("%s contains %d graphic objects", wnd_head, objects);
    }
  /*
   メインウィンドウに2つのサブウィンドウがあり、
   メインウィンドウには取引ラベルがあり、
   サブウィンドウには2つのグラフィックオブジェクトがある場合の結果
  The main chart window contains 656 graphic objects
  The window with index 1 of the chart contains 2 graphic objects
  The window with index 2 of the chart contains 2 graphic objects
  */
 }