ObjectMove()の使い方
MQL4 (MT4)のObjectMove()の使い方をChatGPTに確認しました。
賢いですね。きちんとした回答を詳しくもらえました。
使用GPTs:EA Creator
MT4 MQL4のObjectMoveの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
ObjectMove
関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語で、チャート上の特定のグラフィカルオブジェクトを新しい位置に移動するために使用されます。この関数は、オブジェクトのアンカーポイント(通常はオブジェクトを形成するための主要な点)を新しい価格と時間の座標に設定することで機能します。
ObjectMove関数の基本形式
bool ObjectMove(
string name, // オブジェクト名
int point_index, // 移動するアンカーポイントのインデックス
datetime time, // 新しい時間座標
double price // 新しい価格座標
);
name
: 移動するオブジェクトの名前です。point_index
: 移動するアンカーポイントのインデックス(例えば、トレンドラインの始点は0
、終点は1
)です。time
: アンカーポイントの新しい時間座標です。price
: アンカーポイントの新しい価格座標です。
使用例:トレンドラインの終点を新しい位置に移動
以下の例では、”MyTrendLine”という名前のトレンドラインが存在するとして、その終点(point_index=1
)を現在の価格から10ピップス上と現在の時間から1時間後に移動します。
void OnStart()
{
string objectName = "MyTrendLine";
// 終点を移動させたい新しい位置の設定
datetime newTime = TimeCurrent() + 3600; // 現在の時間から1時間後
double newPrice = Ask + 10 * Point; // 現在のAsk価格から10ピップス上
// トレンドラインの終点を新しい位置に移動
if(ObjectMove(objectName, 1, newTime, newPrice))
{
Print("オブジェクト '", objectName, "' の終点が新しい位置に移動されました。");
}
else
{
Print("オブジェクト '", objectName, "' の移動に失敗しました。エラー: ", GetLastError());
}
}
注意点
- オブジェクトの存在:
ObjectMove
を使用する前に、指定された名前のオブジェクトがチャート上に実際に存在することを確認してください。 - ポイントインデックスの正確性: 移動するアンカーポイントのインデックスを正しく指定してください。オブジェクトの種類によって、利用可能なアンカーポイントの数が異なります。
- エラーハンドリング: 関数が
false
を返した場合、GetLastError
関数を使用してエラーコードを取得し、問題の原因を特定してください。 - 価格と時間の座標: 新しい価格と時間の座標を適切に設定してください。特に、価格座標は市場の実際の範囲内であり、時間座標は過去ではなく将来を指すようにしてください。
ObjectMove
関数を適切に使用することで、チャート上の分析や視覚的表示を動的に調整し、リアルタイムでの市場分析やトレーディング戦略の展開に役立てることができます。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/objects/objectmove
他のオブジェクト関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
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 | オブジェクトのタイプを取得します。 |
コメント