MQL4のパラメーターでキーコードを指定できるようにする方法

プログラミング
この記事は約7分で読めます。

MQL4でインジケーターを作成している際、パラメーター指定時にキーボードのキーをプルダウンで選択させるようにさせたいケースが有るかと思います。

少々躓いたので、方法を記載しておこうと思います。

この記事のゴール
  • MQL4で作成したインジケーターのパラメータ指定時に、キーボードのキーをプルダウンで選択できるようになること
  • プルダウン選択時の参考画像は以下の通り
スポンサーリンク

キーコードを定義したENUMを作成

まずはキーコードを定義したENUMを作成します。

ポイントとしてはインジケーター等のメインとなるソースファイルとは分けることです。

ENUM専用のソースファイルを別で用意しておくと良いでしょう。

なので通常の「.mq4」ファイルではなく「.mqh」ファイルを作成することになります。

こうすることで、インジケーター等のメインとなるソースファイルからインクルードして使うことができるようになります。

ちなみに、「.mqh」ファイルの配置先は「Include」フォルダ配下になります。

サンプルコードは以下のとおりです。

// キーコード
enum ENUM_KEY_CODE  // ENUM名
  {
   ENUM_KEY_CODE_LEFT = 37  // ←
   , ENUM_KEY_CODE_UP = 38  // ↑
   , ENUM_KEY_CODE_RIGHT = 39  // →
   , ENUM_KEY_CODE_DOWN = 40  // ↓
   , ENUM_KEY_CODE_ZERO = 48  // 0
   , ENUM_KEY_CODE_ONE = 49  // 1
   , ENUM_KEY_CODE_TWO = 50  // 2
   , ENUM_KEY_CODE_THREE = 51  // 3
   , ENUM_KEY_CODE_FOUR = 52  // 4
   , ENUM_KEY_CODE_FIVE = 53  // 5
   , ENUM_KEY_CODE_SIX = 54  // 6
   , ENUM_KEY_CODE_SEVEN = 55  // 7
   , ENUM_KEY_CODE_EIGHT = 56  // 8
   , ENUM_KEY_CODE_NINE = 57  // 9
   , ENUM_KEY_CODE_A = 65  // A
   , ENUM_KEY_CODE_B = 66  // B
   , ENUM_KEY_CODE_C = 67  // C
   , ENUM_KEY_CODE_D = 68  // D
   , ENUM_KEY_CODE_E = 69  // E
   , ENUM_KEY_CODE_F = 70  // F
   , ENUM_KEY_CODE_G = 71  // G
   , ENUM_KEY_CODE_H = 72  // H
   , ENUM_KEY_CODE_I = 73  // I
   , ENUM_KEY_CODE_J = 74  // J
   , ENUM_KEY_CODE_K = 75  // K
   , ENUM_KEY_CODE_L = 76  // L
   , ENUM_KEY_CODE_M = 77  // M
   , ENUM_KEY_CODE_N = 78  // N
   , ENUM_KEY_CODE_O = 79  // O
   , ENUM_KEY_CODE_P = 80  // P
   , ENUM_KEY_CODE_Q = 81  // Q
   , ENUM_KEY_CODE_R = 82  // R
   , ENUM_KEY_CODE_S = 83  // S
   , ENUM_KEY_CODE_T = 84  // T
   , ENUM_KEY_CODE_U = 85  // U
   , ENUM_KEY_CODE_V = 86  // V
   , ENUM_KEY_CODE_W = 87  // W
   , ENUM_KEY_CODE_X = 88  // X
   , ENUM_KEY_CODE_Y = 89  // Y
   , ENUM_KEY_CODE_Z = 90  // Z
   , ENUM_KEY_CODE_COLON = 186  // :
   , ENUM_KEY_CODE_SEMICOLON = 187  // ;
   , ENUM_KEY_CODE_COMMA = 188  // ,
   , ENUM_KEY_CODE_HYPHEN = 189  // -
   , ENUM_KEY_CODE_PERIOD = 190  // .
   , ENUM_KEY_CODE_SLASH = 191  // /
   , ENUM_KEY_CODE_AT = 192  // @
   , ENUM_KEY_CODE_KAKKO1 = 219  // [
   , ENUM_KEY_CODE_YEN = 220  // \
   , ENUM_KEY_CODE_KAKKO2 = 221  // ]
   , ENUM_KEY_CODE_HATT = 222  // ^
   , ENUM_KEY_CODE_UNDER = 226  // _
  };

ちなみにキーコードは上記が全てではないので、足りない部分がある場合は適宜追加していってください。

メイン(ENUM参照元)となるソースファイルの作成

ENUMを定義したファイルを作成し終わったら、次はメインとなるファイルを作成することになります。

ここではインクルード方法とパラメーターとして指定できるようにする方法を解説いたします。

まずはソースコードの全体像です。

#property copyright     "エンジニア投資家の記録"
#property link          "https://engistor.com/"
#property version       "1.00"
#property description   "サンプルソースです。"
#property strict
#property indicator_chart_window

// ライブラリ読み込み
#include <Enums.mqh>

// 外部パラメータ
input ENUM_KEY_CODE KEY = ENUM_KEY_CODE_UP;

インクルード方法

インクルードは以下の部分で行っております。

// ライブラリ読み込み
#include <Enums.mqh>

ENUMを定義しているファイルのパスが「Include/Enums.mqh」となっている場合は上記の方法でインクルードが可能です。

もし「Include」配下にフォルダを作っていて、その配下にENUMを定義したファイルを入れている場合は、記載の方法が変わりますのでご注意ください。

例) 「Include/Sample/Enums.mqh」 というパスの場合は以下のようになる。

// ライブラリ読み込み
#include <Sample/Enums.mqh>

パラメーターとして指定できるようにする方法

続いてパラメーターとして指定できるようにしている部分の実装は以下のとおりです。

// 外部パラメータ
input ENUM_KEY_CODE KEY = ENUM_KEY_CODE_UP;

ENUM_KEY_CODE KEYの部分はENUMを定義したときの名称(ENUM名)と一致させています。

ENUM_KEY_CODE_UPの部分は初期値になります。

したがって、このインジケーターを使用する場合、「↑」がプルダウンの初期値として設定されていることになります。

まとめ

いかがでしたでしょうか。

以下の手順をご紹介いたしました。

  1. キーコードを定義したENUMを作成
  2. メイン(ENUM参照元)となるソースファイルの作成

ポイントとしてはENUMを定義するファイルを「.mqh」ファイルとして用意することで、使い回しが可能になるという点です。

これを応用すれば、同じようなコードを書いている場合、1箇所にまとめることで生産性を高めることができます。

ぜひご活用ください。

コメント

タイトルとURLをコピーしました