ObjectCreate()の使い方
MQL4 (MT4)のObjectCreatel()の使い方をChatGPTに確認しました。
きちんとした回答を詳しくもらえました。
使用GPTs:EA Creator
MT4 MQL4のObjectCreateの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
ObjectCreate
関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語でグラフィカルオブジェクト(ライン、テキストラベル、図形など)をチャート上に作成するために使用されます。この関数を利用して、分析結果の視覚化やトレード情報の表示、ユーザーインターフェースのカスタマイズなどが可能です。
ObjectCreate関数の基本形式
bool ObjectCreate(
string name, // オブジェクト名
int type, // オブジェクトタイプ
int window, // ウィンドウインデックス(0がメインチャート)
datetime time1, // 第1の時間軸座標(オブジェクトの位置)
double price1, // 第1の価格軸座標(オブジェクトの位置)
datetime time2 = 0, // 第2の時間軸座標(必要な場合)
double price2 = 0, // 第2の価格軸座標(必要な場合)
datetime time3 = 0, // 第3の時間軸座標(必要な場合)
double price3 = 0 // 第3の価格軸座標(必要な場合)
);
使用例:チャート上に水平線を作成
以下の例では、チャート上の特定の価格レベルに水平線を引く方法を示します。
void OnStart()
{
// オブジェクト名
string objectName = "MyHorizontalLine";
// 水平線を引く価格レベル
double priceLevel = 1.10000;
// 既に同名のオブジェクトが存在する場合は削除
if(ObjectFind(objectName) != -1)
{
ObjectDelete(objectName);
}
// 水平線オブジェクトの作成
if(ObjectCreate(objectName, OBJ_HLINE, 0, 0, priceLevel))
{
Print("水平線が作成されました: ", objectName);
// オブジェクトの色を設定
ObjectSetInteger(0, objectName, OBJPROP_COLOR, clrRed);
// オブジェクトの幅を設定
ObjectSetInteger(0, objectName, OBJPROP_WIDTH, 2);
}
else
{
Print("水平線の作成に失敗しました。エラー: ", GetLastError());
}
}
注意点
- 一意のオブジェクト名: 同じ名前のオブジェクトを複数作成しようとすると、新しいオブジェクトの作成に失敗します。既に存在するオブジェクトを更新する場合は、まず
ObjectDelete
で削除してから作成し直すか、ObjectSet
関数を使用して属性を変更してください。 - エラーハンドリング:
ObjectCreate
がfalse
を返した場合、GetLastError
関数を呼び出してエラーコードを確認し、問題の診断を行います。 - オブジェクトのカスタマイズ: オブジェクトの色、幅、スタイルなどは、
ObjectSetInteger
やObjectSetDouble
関数を使用してカスタマイズできます。カスタマイズ可能なプロパティはオブジェクトタイプによって異なります。
ObjectCreate
関数を利用することで、トレーディング戦略の視覚化や、チャート上に有益な情報を提供するカスタムインジケータやツールの開発が可能になります。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/objects/objectcreate
他のオブジェクト関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
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 | オブジェクトのタイプを取得します。 |
コメント