ObjectGetDouble()の使い方
MQL4 (MT4)のObjectGetDouble()の使い方をChatGPTに確認しました。
賢いですね。きちんとした回答を詳しくもらえました。
使用GPTs:EA Creator
MT4 MQL4のObjectGetDoubleの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
ObjectGetDouble
関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語で、チャート上の特定のグラフィカルオブジェクトのプロパティ(double型)の値を取得するために使用されます。この関数には2つの形式があります。
1. 即時にプロパティ値を返す形式
この形式は、関数が直接double型のプロパティ値を返します。
double ObjectGetDouble(
long chart_id, // チャート識別子
string object_name, // オブジェクト名
int prop_id, // プロパティ識別子
int prop_modifier=0 // プロパティ修飾子(必要な場合)
);
使用例1
チャート上の”ExampleFibo”という名前のフィボナッチリトレースメントオブジェクトのレベル0の価格を取得する例です。
void OnStart()
{
long chartID = ChartID(); // 現在のチャートIDを取得
string objectName = "ExampleFibo";
int propID = OBJPROP_PRICE1; // OBJPROP_PRICE1はフィボナッチリトレースメントの第1レベルの価格を指します
double priceLevel = ObjectGetDouble(chartID, objectName, propID);
Print("フィボナッチリトレースメント '", objectName, "' のレベル0の価格は ", priceLevel, " です。");
}
2. 成功時にtrueを返し、プロパティ値を参照によって受け取る形式
この形式は、関数が成功したかどうかをbool値で返し、プロパティ値を関数の最後のパラメータである参照変数に設定します。
bool ObjectGetDouble(
long chart_id, // チャート識別子
string object_name, // オブジェクト名
int prop_id, // プロパティ識別子
int prop_modifier, // プロパティ修飾子
double& double_var // プロパティ値を受け取る変数
);
使用例2
チャート上の”ExampleFibo”フィボナッチリトレースメントオブジェクトのレベル0の価格を取得し、成功したかどうかをチェックする例です。
void OnStart()
{
long chartID = ChartID();
string objectName = "ExampleFibo";
int propID = OBJPROP_PRICE1; // レベル0の価格
double priceLevel;
if(ObjectGetDouble(chartID, objectName, propID, 0, priceLevel))
{
Print("フィボナッチリトレースメント '", objectName, "' のレベル0の価格は ", priceLevel, " です。");
}
else
{
Print("プロパティ値の取得に失敗しました。");
}
}
注意点
- プロパティ識別子:
prop_id
には、取得したいプロパティの種類を指定します。これはOBJPROP_PRICE1
、OBJPROP_PRICE2
、OBJPROP_WIDTH
など、オブジェクトの種類に応じたプロパティです。 - プロパティ修飾子: 一部のプロパティでは
prop_modifier
を指定する必要があります。たとえば、フィボナッチリトレースメントオブジェクトの異なるレベルの価格を取得する場合などです。 - チャート識別子:
chart_id
は、特定のチャートを指定するために使用されます。ChartID()
関数を使用して現在のチャートのIDを取得できます。 - エラーハンドリング: 第2の形式を使用する場合、関数が
false
を返したら、GetLastError
関数を使用してエラーをチェックすると良いでしょう。
これらの点に注意しながらObjectGetDouble
関数を使用することで、プログラム的にチャートオブジェクトの詳細なプロパティ値を取得し、分析や取引戦略に活用することが可能になります。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/objects/objectgetdouble
他のオブジェクト関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
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 | オブジェクトのタイプを取得します。 |
コメント