ObjectFind()の使い方
MQL4 (MT4)のObjectFind()の使い方をChatGPTに確認しました。
きちんとした回答をもらえました。詳しく説明してもらえています。
使用GPTs:EA Creator
MT4 MQL4のObjectFindの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
ObjectFind
関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語で、特定の名前を持つグラフィカルオブジェクトのインデックスをチャート上で検索するために使用されます。オブジェクトが見つかった場合、そのオブジェクトのサブウィンドウインデックス(メインチャートまたはインディケータウィンドウの位置)を返します。見つからない場合は-1を返します。
ObjectFind関数の基本形式
int ObjectFind(
string name // オブジェクトの名前
);
name
: 検索するオブジェクトの名前です。
使用例:特定のオブジェクトの存在確認と情報取得
以下の例では、”MyLine”という名前のラインオブジェクトがチャート上に存在するかどうかを確認し、存在する場合はそのオブジェクトが配置されているサブウィンドウのインデックスを表示します。
void OnStart()
{
string objectName = "MyLine";
int windowIndex = ObjectFind(objectName);
if(windowIndex != -1)
{
Print("オブジェクト '", objectName, "' はサブウィンドウ ", windowIndex, " に存在します。");
}
else
{
Print("オブジェクト '", objectName, "' は見つかりませんでした。");
}
}
注意点
- オブジェクト名の正確性:
ObjectFind
を使用する際には、オブジェクト名を正確に指定する必要があります。オブジェクト名には大文字と小文字が区別されるため、正確な名前を使用してください。 - 返り値の確認:
ObjectFind
関数が-1を返した場合、指定された名前のオブジェクトがチャート上に存在しないことを意味します。これをエラーチェックとして利用することができます。 - 使用シナリオ:
ObjectFind
は、オブジェクトのプロパティを変更する前やオブジェクトを削除する前に、そのオブジェクトが実際に存在するかどうかを確認するために便利です。また、オブジェクトが特定のサブウィンドウに配置されているかどうかを知るためにも使用されます。 - パフォーマンスの考慮: 大量のオブジェクトが存在するチャートで
ObjectFind
を頻繁に使用する場合、パフォーマンスに影響を与える可能性があります。必要な時にのみ使用し、可能であればオブジェクトの名前やインデックスをキャッシュしておくことが推奨されます。
ObjectFind
関数を使用することで、プログラム的にチャート上のオブジェクトを管理しやすくなり、動的にチャートの表示をカスタマイズすることが可能になります。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/objects/objectfind
他のオブジェクト関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
ObjectCreate | チャート上に新しいオブジェクトを作成します。 |
ObjectName | 指定されたインデックスにあるオブジェクトの名前を取得します。 |
ObjectDelete | チャートから指定された名前のオブジェクトを削除します。 |
ObjectsDeleteAll | 特定のウィンドウ、またはすべてのウィンドウからオブジェクトを削除します。 |
ObjectFind | 指定された名前のオブジェクトが存在するウィンドウのインデックスを返します。 |
ObjectGetTimeByValue | 指定された価格に対応する時間をオブジェクトから取得します。 |
ObjectGetValueByTime | 指定された時間に対応する価格をオブジェクトから取得します。 |
ObjectMove | 指定されたオブジェクトを新しい位置に移動します。 |
ObjectsTotal | チャート上のオブジェクトの総数を返します。 |
ObjectGetDouble | 指定されたオブジェクトのプロパティ値(double型)を取得します。 |
ObjectGetInteger | 指定されたオブジェクトのプロパティ値(整数型)を取得します。 |
ObjectGetString | 指定されたオブジェクトのプロパティ値(文字列型)を取得します。 |
ObjectSetDouble | 指定されたオブジェクトのプロパティ値(double型)を設定します。 |
ObjectSetInteger | 指定されたオブジェクトのプロパティ値(整数型)を設定します。 |
ObjectSetString | 指定されたオブジェクトのプロパティ値(文字列型)を設定します。 |
TextSetFont | テキストオブジェクトのフォント名、サイズ、スタイル、重さを設定します。 |
TextOut | チャートに直接テキストを描画します。 |
TextGetSize | 指定されたテキストのサイズを取得します。 |
ObjectDescription | オブジェクトの説明を取得します。 |
ObjectGet | オブジェクトのプロパティを取得します。 |
ObjectGetFiboDescription | フィボナッチオブジェクトのレベル説明を取得します。 |
ObjectGetShiftByValue | 指定された価格に対応するオブジェクトのシフトを取得します。 |
ObjectGetValueByShift | 指定されたシフトに対応するオブジェクトの価格を取得します。 |
ObjectSet | オブジェクトの特定のプロパティを設定します。 |
ObjectSetFiboDescription | フィボナッチオブジェクトのレベル説明を設定します。 |
ObjectSetText | オブジェクトにテキストを設定します。 |
ObjectType | オブジェクトのタイプを取得します。 |
コメント