
MetaTrader上で稼働するインジケーターやEAは、MQLというプログラム言語で作られています。
MQL言語を覚えてしまえば、自作インジケーターやEAを作ることが可能になります。ちょっとしたサインを確認したい場合や、メールでシグナルを飛ばしたりスマホに通知させたりなど、開発ができるようになると、トレードの幅が格段に上がります。
今回、プログラムなんて触ったことのない人でも、MQL言語でインジケーターやEAを作れるように、実際に動くサンプルコードを使いながら勉強して頂けるコンテンツを用意しますので、一緒に勉強していきましょう!
MQL言語とは
MQL言語で何ができるのか?
シンプルなインジケーターから、複雑な売買ロジックを搭載したEAまで作成することが可能です。
プログラムというのは、一連の処理を手順化したものであり、いつ動かしても決まった処理を行うロボットなのです。
処理を手順化した物がプログラム
同じ条件なら、誰が実行しても同じ結果になるのがプログラムです。書かれている通りにしか動けないのがプログラムです。
例えば、実際にトレードをするときの流れを大きくブロックに分けて考えると、次のようになります。どういう実装をするかによって処理は変わってきますが、大枠としての流れとしてはこのような感じです。

普段のトレードで考えれば分かりやすいと思いますが、売買サインの条件に合致する場合にのみエントリーを行い、決済サインが出たときにクローズ処理を実行させるように実装します。
プログラムというのは、各ブロックにどのような処理をさせるのかを書くだけなんです。移動平均線のGCDCをサインにしても良いし、もっと複雑に判断させても構いません。あなたの売買ロジックをプログラムに落とし込むだけの話なんです。
過去データから計算したアウトプットがインジケーター
何気なく使っているインジケーターは、過去のデータを元に計算されたアウトプットを視覚的に見せているだけに過ぎません。移動平均線なら一本の線が引かれ、RSIならオシレーターの強弱が表示されます。
例えば、標準のパラメータで表示される移動平均線はこうなります。

14日のSMAで終値を元に移動平均線を表示させただけです。
標準のパラメータの場合、現在足から遡った14個分の終値を、14で割っただけの数字になります。これを全てのローソク足に対して同じ計算をした物が移動平均線であり、その結果トレンドの方向性がわかりやすくなるといった物ですね。
EMAなど移動平均線の種別を変えると、表示される線が違って見えるのは、内部的な計算ロジックが違うためです。
具体例として、次のデータを期間3のSMA方式で計算してみましょう。
期間3なので、現在足を含んだ3個の価格を足し込んだ結果、3で割ります。あとは一つずつ遡り、相対的に同じ計算を繰り返すだけです。
位置 | 価格 | 移動平均値 |
---|---|---|
現在足 | 100 | (100+110+120)/3=110 |
一つ前 | 110 | (110+120+110)/3=113 |
二つ前 | 120 | (120+110+100)/3=110 |
三つ前 | 110 | (110+100+110)/3=106 |
四つ前 | 100 | 計算対象外 |
五つ前 | 110 | 計算対象外 |
移動平均の場合、内部的にこのような計算処理が行われていると考えてください。
もちろんRSIやボリンジャーバンドなどは、求められる計算結果も違います。何らかの計算が行われて、画面に表示されているだけの話なんです。
開発環境の準備
最初のプログラムは、机上の空論で考えるより、実際に書いて動かしてみるのが一番勉強になります。
何がどうなって動いているのか、その原理を理解してしまえば、あとはそれほど難しくありません。
実際の作り方は次回以降にお話ししますので、まずは開発環境を整えておきましょう。
MT4のダウンロード
PC版MT4に開発環境が統合されていますので、今MT4をお使いの方はそのまま開発が可能です。
まだPC版のMT4をお持ちでないならダウンロードしてください。
開発環境の起動
MT4を起動したら、メニュー上部にある赤枠で囲んでいる本のアイコンをクリックしてください。

クリックするとMetaEditorが起動します。これが開発環境になります。

設定も何もありません。開発環境の用意はこれで完了です。
MT4とMT5
実はMT4は古い環境で、現在MT5が最新となっていますが、MT5はあまり使われていません。
また、MT4とMT5は別物の環境です。Mt4で使えていたプログラムもMT5では動きません。MT4で使っているインジケーターなどをMT5に移行させるツールもあるにはあるのですが、完全に移行するのが難しいようで、動作保証がされていません。
MT5のほうがビジュアルが綺麗だし、細かい設定も可能なのですが、圧倒的にMT4ユーザーが多いです。
そもそもメタトレーダーはトレードツールなので、トレードに活用できることを最優先に考えています。ビジュアルが綺麗でも使いにくければ使わないし、今より便利にならないと乗り換える意味がないんですよね。
その根底にあるのが、開発環境の違い。
MT4はC言語に似たスタイルで昔風の感じに対して、MT5はJava言語のようなオブジェクト指向型の言語となっています。
今までMT4で開発してきた人達からすると、MT5で作るなんて面倒くさくて仕方ない。何かメリットでもあれば話は別ですが、目新しいメリットも特になく、今までの環境で事足りるため、MT5への移行が進んでいません。
シンプルに、ちょっとロジックの検証をするのに、MT4の方が簡単ということが大きな理由だと個人的には思っています。