ObjectGetValueByTime()の使い方
MQL4 (MT4)のObjectGetValueByTime()の使い方をChatGPTに確認しました。
賢いですね。きちんとした回答を詳しくもらえました。
使用GPTs:EA Creator
MT4 MQL4のObjectGetValueByTimeの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
ObjectGetValueByTime関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語で、指定された時間におけるチャート上の特定のグラフィカルオブジェクトの価格値を取得するために使用されます。この関数は、特定の時間点でのオブジェクト(トレンドライン、フィボナッチレベル、チャネルなど)の価格位置を知りたい場合に役立ちます。
ObjectGetValueByTime関数の基本形式
double ObjectGetValueByTime(
long chart_id, // チャートID
string object_name, // オブジェクト名
datetime time, // 時間
int line_id=0 // 線ID
);
chart_id: オブジェクトを検索するチャートのIDです。現在のチャートのIDを取得するにはChartID()関数を使用します。object_name: 価格値を取得したいグラフィカルオブジェクトの名前です。time: 価格値を知りたい特定の時間です。line_id: オブジェクト内の複数の線のうち、どの線に対して操作を行うかを指定します。多くのオブジェクトでは0がデフォルト値です。
使用例:特定のトレンドライン上の特定の時間での価格値を取得
以下の例では、指定されたチャートIDとトレンドラインオブジェクト名に基づいて、特定の時間点での価格値を取得し、その価格を表示します。
void OnStart()
{
long chartID = ChartID(); // 現在のチャートIDを取得
string objectName = "MyTrendLine"; // トレンドラインオブジェクトの名前
datetime time = TimeCurrent(); // 現在の時間を取得
double price = ObjectGetValueByTime(chartID, objectName, time, 0);
// 価格値が正しく取得されたかチェック
if(price != EMPTY_VALUE)
{
// 価格値を表示
Print("時間 ", TimeToString(time, TIME_DATE|TIME_MINUTES), " における '", objectName, "' の価格は ", price, " です。");
}
else
{
Print("指定された時間での価格値が見つかりませんでした。");
}
}
注意点
- オブジェクトの存在:
ObjectGetValueByTimeを使用する前に、指定されたオブジェクトがチャート上に存在し、正しいchart_idとobject_nameが指定されていることを確認してください。 - 価格値の有効性: 関数が
EMPTY_VALUEを返した場合、指定された時間でオブジェクトの価格値が存在しない、または計算できないことを意味します。これは、時間がオブジェクトの有効範囲外である場合に発生する可能性があります。 - 正確な時間の指定: 指定する時間は、オブジェクトが存在する期間内である必要があります。時間がオブジェクトの範囲外である場合、関数は有効な価格を返せません。
ObjectGetValueByTime関数を適切に使用することで、特定の時間点でのグラフィカルオブジェクトの価格レベルを効果的に把握し、チャート分析や取引戦略の決定に役立てることができます。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/objects/objectgetvaluebytime
他のオブジェクト関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
| 関数名 | 概要 |
|---|---|
| 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 | オブジェクトのタイプを取得します。 |



コメント