はじめに

MT4はいいぞ!

 MetaTrader4(以下MT4)は非常に素晴らしいツールです。チャートツールとしての機能もさることながら、オリジナルツールの作りやすさと自由度、ExpertAdvisor(以下EA)による自動売買、相場検証の精度と容易さ、これらの機能が非常に高いレベルでまとまっています。MT4は他の取引ツールよりも頭一つ飛び出していると私は確信しております。これを実現しているのが、MT4独自のMQL4と呼ばれるプログラミング言語と、MT4に搭載のバックテスト機能です。

 自動売買プログラミングというと、普通の人は尻込みしてしまうかもしれません。しかしプログラミング言語としてのMQL4は、それほど難しい部類ではありません。ほとんどのプログラムはたった一つのファイルで全ての処理が完結しています。何十ものファイルが結びついた、複雑な処理を作る必要はありません。クラスやオブジェクト指向といった、他のプログラミング言語では必須となる概念を知らずとも、EA・インジケーターを作成できてしまいます。簡単なロジックであれば、わずか100行程度の短い処理で書かれているケースもあります。
 唯一MQL4の敷居が高いところは、プログラミングとFXに関する2つの知識が必要なところでしょう。

 私も初めてMT4をインストールしてからEAを作れるようになるまで、1週間かかりませんでした。大学の授業で多少のプログラミング経験はありましたが、ほぼ素人の状態からでもこの程度の日数で作れたのです。MQL4の敷居の低さがお分かりいただけるのではないでしょうか?

MQL4の罠

 学習コストが低く、FXを知っている人であれば簡単にEAを作れるのがMQL4の良いところです。バックテストでロジック通りに正しく取引するEAであれば、作成までにそれほど労力はいらないでしょう。既にプログラミング経験がある人の場合、たった1日でEAを作ることも可能です。
 バックテストで予定通りの取引を確認できてしまうと、気が早い人であればEAを実戦投入してしまうかもしれません。しかしそれこそがMQL4の罠です。実はMQL4プログラミングには、バックテストでは確認できないバグが沢山あります。このバグを見つけるにはMT4とMQL4に関する深い知識と、念入りなコードチェックが必要です。運用時のバグをほとんど無くせるようになるには、恐らく独学では1年以上の運用経験が必要でしょう。バックテストで良い成績のEAが完成すれば、誰だってリアル口座で運用したくなります。開発者によっては、作成したEAの配布も考えるでしょう。しかし十分な知識と経験の無い開発者が作ったEAには、運用時に発現するバグが高確率で潜んでいます。バグのあるEAが使われてしまうと、トレーダーは思わぬ損失を被るでしょう。

効率の良い学習ツールとしてのMQL4アンチパターン

 初心者が犯しやすいミスと、その解決策がまとめてあれば、EAのバグで資金を溶かすような事例は減るでしょう。しかし現状そのようなサイトは見当たりませんでした。そこで作ったのがこの「MQL4アンチパターン」という記事です。これから私が解説していく話は、けっこう細かい話が多いです。人によっては私のことを神経質な人だなと思うことでしょう。でもその分だけ、他の開発者が教えてくれない、ディープな解説であると自負しております。是非最後までお付き合いいただければと思います。

注意事項

 MQL4アンチパターンでは、MQL4の基礎的な話は省略しています。EAを一度は自力で作ったことがある開発者向けの内容です。変数とは何なのか?とか、if文とは何なのか?とか、どうやって発注するだ?といったプログラミングの基礎部分を知りたい場合は、書籍や他のサイトで学習するのをオススメします。

 余談ですが私が初めてMQL4を勉強した際には、豊嶋先生の「FXメタトレーダー実践プログラミング」で学びました。MQL4初心者に必要な知識が分かりやすくまとまっている良書です。しかし今では若干内容が古くなっている部分もあります。これからMQL4を始める方は、「新MT4対応 FXメタトレーダープログラミング入門」がオススメです。こちらも豊嶋先生の著書です。近年のMQL4の仕様に対応した内容が書かれた本です。

arrow_upward