投資で実現!不労所得生活

MetaTrader/MQL: チャート上でのキーハンドリング

更新:
作成:

EA の OnChartEvent 関数でチャートイベントをハンドルすると、チャート上でのキーボード入力を取得することができます。 これを利用すると、自作の EA にキーボードショートカット(ホットキー)機能を付けることができます。 例えば、数字の 1 キーを押したときに、0.1 ロットの買い成行注文を出す、といったことができます。

キー入力時は、OnChartEvent 関数の id パラメータの値は CHARTEVENT_KEYDOWN になり、lparam パラメータにキーコードが格納されます。 下記のサンプル EA をチャートにアタッチすると、入力したキー情報がチャート上に表示されるようになります。

Experts/MyEa.mq5
int OnInit() {
    return INIT_SUCCEEDED;
}

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
    if (id == CHARTEVENT_KEYDOWN) {
        string key;
        if ('0' <= lparam && lparam <= 'z') {
            key = StringFormat("key=%c(%d)", lparam, lparam);
        } else {
            key = StringFormat("key=%d", lparam);
        }
        Comment("CHARTEVENT_KEYDOWN: ", key);
    }
}

特定のキー(例えば数字の 1 キー)が押されたときに、ユーザーに確認を求めてから処理を行いたい場合は次のようにします。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
    if (id == CHARTEVENT_KEYDOWN && lparam == '1') {
        if (MessageBox("Are you sure to buy?", NULL, MB_YESNO) == IDYES) {
            // ここで買う!
            // buyMarketOrder();
        }
    }
}

関連記事

投資で実現!不労所得生活
サイトマップまくへのメッセージ