ObjectFind 関数
この関数は、指定したチャート上の指定したオブジェクト名を検索します。
データ型と構成・戻り値
int ObjectFind(①, ②);
戻り値は、検索したオブジェクトがある場合は、そのオブジェクトがあるウィンドウ番号を返します。無い場合は、-1を返します。
ウィンドウ番号は、メインウィンドウが 0、サブウィンドウを作成するごとに順次サブウィンドウに 1、2、3、…と番号が割り振られます。
発生するエラーについては、GetLastError関数で取得することが出来ます。
引数 [2]
ObjectFind関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | chart_id | long | - | 0 | チャートIDを設定。現在のチャートIDは「0」を指定するか、ChartID関数を使うことで取得できます。 |
② | object_name | string | - | - | 検索するオブジェクト名。 |
使用例
ObjectFind関数によるオブジェクトの検索
オブジェクトを描画するチャートにインジケータのモメンタムを表示させてサブウィンドウを一つ作り、ObjectCreate関数で描画した 3つのオブジェクトの内、3つ目をサブウィンドウへ表示させます。そしてそれぞれのオブジェクトを ObjectFind関数を使って検索します。
モメンタムのインジケータをサブウィンドウに表示させる方法はこちらを参考にしてください。
コード
// ObjectFind関数によるオブジェクトの検索
#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); // ③垂直線
Print("ウィンドウ番号①:", ObjectFind("obj①"));
Print("ウィンドウ番号③:", ObjectFind("obj③"));
Print("ウィンドウ番号④:", ObjectFind("obj④"));
}
void OnDeinit(const int reason) {
ObjectsDeleteAll();
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
検索の結果
「obj①」はメインウィンドウにあるので、0
「obj③」は 1つ目のサブウィンドウにあるので、1
「obj④」は存在しないため、-1
が取得されます。