EventChartCustom()の使い方
MQL4 (MT4)のEventChartCustom()の使い方をChatGPTに確認しました。
賢いですね。きちんとした回答を詳しくもらえました。
使用GPTs:EA Creator
MT4 MQL4のEventChartCustomの使い方を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
使い方
EventChartCustom
関数は、MetaTrader 4 (MT4) プラットフォームのMQL4言語で使用され、カスタムチャートイベントを発生させるために使用されます。この関数は特定のチャートに対してユーザー定義のイベントを送信し、それに応じた処理をOnChartEvent
関数内で行うことができます。
EventChartCustom関数の使用法
bool EventChartCustom(
long chart_id, // イベントを受信するチャートの識別子
ushort custom_event_id, // イベント識別子
long lparam, // long型のパラメータ
double dparam, // double型のパラメータ
string sparam // イベントのstringパラメータ
);
chart_id
: イベントを受信するチャートの識別子。ChartID()
関数で取得できます。custom_event_id
: カスタムイベント識別子。ユーザーが定義する値です。lparam
: イベントに関連するlong型のパラメータ。dparam
: イベントに関連するdouble型のパラメータ。sparam
: イベントに関連する文字列型のパラメータ。
パラメータに関する情報を以下の表にまとめます。
イベントカテゴリ | idパラメータの値 | lparamパラメータの値 | dparamパラメータの値 | sparamパラメータの値 |
---|---|---|---|---|
キー押下イベント | CHARTEVENT_KEYDOWN | 押されたキーのコード | キーが押された回数 | キーボードボタンの状態を示すビットマスクの文字列値 |
マウスイベント | CHARTEVENT_MOUSE_MOVE | X座標 | Y座標 | マウスボタンの状態を示すビットマスクの文字列値 |
グラフィカルオブジェクト作成イベント | CHARTEVENT_OBJECT_CREATE | — | — | 作成されたグラフィカルオブジェクトの名前 |
グラフィカルオブジェクト変更イベント | CHARTEVENT_OBJECT_CHANGE | — | — | 変更されたグラフィカルオブジェクトの名前 |
グラフィカルオブジェクト削除イベント | CHARTEVENT_OBJECT_DELETE | — | — | 削除されたグラフィカルオブジェクトの名前 |
チャート上でのマウスクリックイベント | CHARTEVENT_CLICK | X座標 | Y座標 | — |
グラフィカルオブジェクト上でのマウスクリックイベント | CHARTEVENT_OBJECT_CLICK | X座標 | Y座標 | イベントが発生したグラフィカルオブジェクトの名前 |
グラフィカルオブジェクトのドラッグイベント | CHARTEVENT_OBJECT_DRAG | — | — | 移動されたグラフィカルオブジェクトの名前 |
チャート変更イベント | CHARTEVENT_CHART_CHANGE | — | — | — |
ユーザー定義イベント | CHARTEVENT_CUSTOM+N | EventChartCustom 関数で設定された値 | EventChartCustom 関数で設定された値 | EventChartCustom 関数で設定された値 |
この表は、EventChartCustom
関数で使用されるイベントと、それらのイベントに対応するパラメータの値に関する概要を示しています。より詳細な情報については、公式のMQL4ドキュメントを参照してください。
使用例: カスタムイベントを送信し、OnChartEventで処理する
以下の例では、カスタムイベントをチャートに送信し、OnChartEvent
関数でそのイベントを処理します。
// カスタムイベント識別子を定義
#define CUSTOM_EVENT_ID 10001
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// カスタムイベントを設定するための何らかの条件や初期化処理
// ...
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
// カスタムイベントを検出
if(id == CUSTOM_EVENT_ID)
{
Print("カスタムイベントを受信しました: ", sparam);
// イベントに応じた処理をここで行う
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// 何らかの条件が満たされたときにカスタムイベントを発生させる
if( /* 条件 */ )
{
if(!EventChartCustom(ChartID(), CUSTOM_EVENT_ID, 0, 0.0, "Hello, World!"))
{
Print("カスタムイベントの送信に失敗しました。");
}
}
}
//+------------------------------------------------------------------+
注意点
- カスタムイベント識別子
custom_event_id
は、既存のMT4イベントと衝突しないようにユーザーが選ぶ必要があります。 EventChartCustom
関数を使用してイベントを送信するときは、対象となるチャートが開いていることを確認してください。EventChartCustom
関数でイベントを送信すると、OnChartEvent
関数が呼び出されます。この関数内でカスタムイベントを適切に処理するためのロジックを実装してください。- カスタムイベントを使用する際は、パフォーマンスに影響を与えないように適切なタイミングでイベントを送信することが重要です。また、イベントの処理中に重い処理を行うと、MT4の応答性が低下する可能性があるため注意が必要です。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/eventfunctions/eventchartcustom
他のイベント設定関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
EventSetMillisecondTimer | ミリ秒単位でタイマーイベントを設定します。指定された時間間隔後にOnTimer()イベントを発生させるために使用します。 |
EventSetTimer | 秒単位でタイマーイベントを設定します。指定された時間間隔後にOnTimer()イベントを発生させるために使用します。 |
EventKillTimer | タイマーイベントを削除します。EventSetTimerまたはEventSetMillisecondTimerによって設定されたタイマーを停止し、OnTimer()の呼び出しを停止します。 |
EventChartCustom | カスタムチャートイベントを生成します。カスタムイベントを処理するためにOnChartEvent()関数内で使用されます。 |
コメント