MARKET
9/25 8:27 時点|ドル円158.78▼-7 pips|ドル円 予想レンジ158.41 〜 159.23|ドル円 上の節目158.90▲|ドル円 下の節目157.80▼|ユーロドル1.1378▼-2 pips|ユーロドル 予想レンジ1.1351 〜 1.1408|ユーロドル 上の節目1.1403▲|ユーロドル 下の節目1.1359▼|きょうの指標重要指標なし|

OnChartEvent ― クリック・ドラッグ・キー入力のたびに呼ばれる|MQL4/MQL5リファレンス

MQLリファレンス›関数イベントハンドラOnChartEvent
(‘both’, ‘MQL4 / MQL5 両対応’)イベントハンドラパネル操作

OnChartEventクリック・ドラッグ・キー入力のたびに呼ばれる

チャート上のクリック・オブジェクトのドラッグ・キー入力等が起きるたびに呼ばれる。自作のボタン・パネルを操作可能にするには、ほぼ必ずここに処理を書く。

1書式

void OnChartEvent(
   const int     id,       // イベントの種類
   const long    &lparam,   // 整数の付加情報
   const double  &dparam,   // 小数の付加情報
   const string  &sparam    // 文字列の付加情報
);

書式はMQL4・MQL5で同じ。lparam/dparam/sparamは参照渡し(&)で宣言する(下記の罠を参照)。

2引数

引数 内容
id イベントの種類。CHARTEVENT_CLICK(チャートのクリック)・CHARTEVENT_OBJECT_CLICK(オブジェクトのクリック)等
lparam / dparam / sparam イベントの種類ごとに意味が変わる付加情報。オブジェクトクリックならsparamにオブジェクト名が入る

3戻り値

戻り値は無し(void)。

4使用例

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if(id == CHARTEVENT_OBJECT_CLICK && sparam == "mybutton")
   {
      Print("ボタンが押されました");
      ObjectSetInteger(0, "mybutton", OBJPROP_STATE, false);
   }
}

MetaEditorでコンパイル0エラー・0警告を確認済み。

6よくある罠

⚠ 実務で踏んだもの
  • lparam・dparam・sparamを参照渡し(&)で宣言し忘れると、コンパイルは警告止まりで通ってしまうのに、実行時に一度も呼ばれない。(実機で確認済み:値渡しのままだと warning 70 が出て、クリックしても反応しない)
  • ボタン(OBJ_BUTTON)は押すとON状態のまま固定される。ObjectSetIntegerでOBJPROP_STATEをfalseに戻す処理を書かないと、見た目が押しっぱなしのままになる。
  • sparamでオブジェクト名を比較するとき、前方一致で済ませるつもりが完全一致になっていて反応しない、といった取り違えが起きやすい。

7関連する関数

MORNING BRIEF平日 毎朝7時までに更新

今日はどこを見ればいいか。

ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。

朝刊を見る→
9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし
REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。