MT5(MQL5)でインジケーターを作成しようと考えています。チャートの日付変更線の横にその日の日付を表示させたいのですが、ヒントをいただけると助かります。よろしくお願いします。

MT5(MQL5)でチャートに日付を表示させるためには、以下の手順に従うことができます。

1. インジケーターを初期化する際に、チャートオブジェクトを作成します。例えば、テキストオブジェクトを作成するための `OBJECT_TEXT` フラグを使用できます。

“`mql5
// 初期化
OnInit() {
// テキストオブジェクトを作成
ObjectCreate(“dateText”, OBJ_TEXT, 0, 0, 0);
}

// デインでの表示
OnCalculate() {
// テキストオブジェクトの座標と文字列を更新
ObjectSetText(“dateText”, TimeToStr(TimeCurrent(), TIME_DATE), 10, “Arial”, clrWhite);
ObjectSet(“dateText”, OBJPROP_CORNER, 3);
ObjectSet(“dateText”, OBJPROP_XDISTANCE, 10);
ObjectSet(“dateText”, OBJPROP_YDISTANCE, 10);
}
“`

上記の例では、テキストオブジェクトを左上に配置し、10ピクセル右と下にオフセットさせています。また、テキストのフォントは「Arial」、文字色は「白色」に設定されていますが、必要に応じてこれらの値を変更することができます。

2. チャートの日付変更を検出するために、`OnChartEvent()` 関数を使用します。

“`mql5
// 日付変更時の処理
OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) {
if(id == CHARTEVENT_OBJECT_CREATE && sparam == “dateText”) {
// 日付が変更された時にテキストオブジェクトを更新
ObjectSetText(“dateText”, TimeToStr(TimeCurrent(), TIME_DATE), 10, “Arial”, clrWhite);
}
}
“`

上記の例では、`OnChartEvent()` 関数が `CHARTEVENT_OBJECT_CREATE` イベントを受け取り、その際にオブジェクト名が「dateText」であれば、日付を更新する処理を行っています。

このようにすることで、チャート上に日付を表示させることができます。ただし、チャート上の日付変更線に直接表示する方法や、他のカスタマイズを行いたい場合は、さらなる調査やカスタマイズが必要になるかもしれません。

コメントを残す