ObjectsTotal 関数
この関数は、指定したチャートの指定した種類のオブジェクトの数を取得します。
データ型と構成・戻り値
int ObjectsTotal(①, ②, ③);
戻り値は、指定したオブジェクトの数を返します。無い場合は 0を返します。
引数 [3]
ObjectsTotal関数は 3個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | chart_id | long | - | 0 | チャートIDを設定。現在のチャートIDは「0」を指定するか、ChartID関数を使うことで取得できます。 |
② | sub_window | int | - | -1 | チャートウィンドウの番号。0はチャートメインウィンドウでチャートサブウィンドウは 1から始まります。-1はチャートの全ウィンドウを指定します。 |
③ | type | int | - | -1 | オブジェクトのタイプ。値は、ENUM_OBJECT 列挙値を指定します。EMPTY(-1)は全タイプを指定します。 |
使用例
ObjectsTotal関数によるオブジェクト数の取得
ObjectCreate関数で描画したオブジェクトを ObjectsTotal関数を使って描画した全てのオブジェクト数を取得します。
コード
// ObjectsTotal関数によるオブジェクト名の取得
#property strict
void OnInit() {
ObjectsDeleteAll(); // オブジェクト全削除
ObjectCreate("obj①", OBJ_VLINE, 0, Time[10], 0); // ①垂直線
ObjectCreate("obj②", OBJ_HLINE, 0, 0, Ask); // ②水平線
ObjectCreate("obj③", OBJ_VLINE, 0, Time[5], 0); // ③垂直線
int objc=ObjectsTotal();
//int objc=ObjectsTotal(0, -1, OBJ_VLINE);
for(int i=0; i<objc; i++) {
Print("オブジェクト名:", ObjectName(i));
}
Print("オブジェクト数:", objc, " 個");
}
void OnDeinit(const int reason) {
ObjectsDeleteAll();
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
ObjectsTotal関数による指定したオブジェクト数の取得
特定のオブジェクトのみを計数したい時は次のようにしてください。
コードの12、13行目の
int objc=ObjectsTotal();
//int objc=ObjectsTotal(0, -1, OBJ_VLINE);
の部分を
//int objc=ObjectsTotal();
int objc=ObjectsTotal(0, -1, OBJ_VLINE);
にすると、垂直線のみのオブジェクトを計数して、結果のオブジェクト数は 2個になります。