せっかくMT4(メタトレーダー4)を使うのなら、あなたオリジナルのEA(自動売買プログラム)やテクニカルインジケーターを自作してみませんか!?
この記事では、初心者向けに、MQL4言語を使ったプログラミングについて解説します。
「プログラミングなんて自分にはとても無理だ」と言われる方も多くいると思いますが、そんなことはありません。実は超簡単なんです。アラフィフのおっさんが言うんだから間違いありません。
なぜ超簡単なのかというと、ここで作るどのプログラムも、基本的に、すでに出来上がっているサンプルEAのソースコードの一部を書き換えるだけだからです。
ホントに超簡単ですので、ぜひ挑戦してみましょう♪
※2020年5月2日、窓埋めEAの記事を追加しました。
MQL4言語とは?
MQL4言語(Meta Quotes Language 4)とは、MT4で使用されるプログラム言語で、ベースはC言語です。
MT4で使用するEAやインジケーターは、このMQL4言語で書かれています。
基礎編|プログラミングの基本
はじめに、プログラミングの基礎を理解しましょう。
ここの内容をきちんとインプットできれば、以降のアウトプットがスムーズにできるようになります。
EAの基本構造と書き方
MT4のサンプルEAを使ってEAの基本構造と書き方を解説します。
EA自作は難しいものではありません。簡単ですから、ぜひ挑戦してみましょう♪

変数と配列
変数と配列はあらゆるプログラム言語の基礎です。
変数はデータを入れる箱で、配列は整列された複数の変数の箱です。

if文とfor文
ともにプログラムの実行の流れを制御する構文です。
if文は条件分岐を処理する構文で、for文はループ処理する構文です。

OrderSend()とOrderClose()
OrderSend関数は新規注文を行い、OrderClose関数は決済注文を行います。
どちらもMQL4言語独自の関数ですが、EA作りには必須の関数です。

よく使う用語だけに絞ったお手軽リファレンス
よく使うプログラミング用語だけ集めました。
あなたがEAやインジケーターを自作するときに、きっと役立つと思います。

実践編|EAやインジケーターの自作
サンプルEAを使ってオリジナルEAを自作しよう
MT4のサンプルEAの一部をササっと書き換えて、MACDとスローストキャスティックスの2つのインジケーターで売買判断を行うオリジナルEAを作ります。
完成品を無料でダウンロードできます。

サンプルインジケーターを使ってカスタムインジケーターを自作しよう
MT4のサンプルインジケーターの一部をササっと書き換えて、カスタムインジケーター「HiLoバンド」を作ります。
HiLoバンドは、チャート上に、過去n日間の高値・安値のラインを描き、レジスタンスやサポートを確認したり、高値・安値のブレイクアウトを判断するテクニカル指標です。
完成品を無料でダウンロードできます。

カスタムインジケーターをEA化してみよう
前回作ったカスタムインジケーター「HiLoバンド」を使って、ブレイクアウト手法をEA化します。
ブレイクアウトとは、過去一定期間の高値・安値を突破したことをシグナルとする有名な投資手法です。
完成品を無料でダウンロードできます。

リピート系注文をEA化してみよう
MT4のサンプルEAの一部をササっと書き換えて、人気のリピート系注文をEA化します。
トラリピなどの既存のサービスを使えばいいと思われるかもしれませんが、リピート系注文をMT4でするメリットはたくさんあります。
完成品を無料でダウンロードできます。



窓埋めをEA化してみよう
MT4のサンプルEAの一部をササっと書き換えて、有名な窓埋めの手法をEA化します。
窓埋めは、前週金曜の終値と翌月曜朝の始値のギャップ(窓)を埋めようとする相場のパターンを利用してトレードする手法であり、勝てる手法として人気があります。
窓埋めはシストレ向きの手法であり、MT4とも非常に相性が良いです。
完成品を無料でダウンロードできます。

応用編|さまざまな機能を追加
自作EAにトレーリングストップを実装してみよう
トレーリングストップとは、価格の動きにロスカットラインを追跡させていく投資手法です。
損失を抑えつつ、利益を伸ばせる有効な手仕舞い方法として人気があります。

自作EAにnバーストップを実装してみよう
nバーストップは、過去nバーの期間の高値または安値超えを基準にストップロスオーダーを設定します。
直近の価格変動を重視した手仕舞い方法で、広く使われています。

自作EAにATRストップを実装してみよう
ATRとは平均的な1日の値幅のことです。
ATRストップとは、トレーリングストップのトレール幅をATRで算出する投資手法です。
システムトレーダーのバイブル『魔術師たちの心理学―トレードで生計を立てる秘訣と心構え』でも、ATRを使ったストップロスの設定が推奨されています。

自作EAに複利システムを実装してみよう
複利とは、トレードで得た利益を再投資することにより、利息が利息を生んで大きくふくらんでいく効果のことです。
リスクは大きいですが、うまく活用できれば、資金効率が上がり、グラフ上、二次曲線を描いて資金が増えていきます。

自作EAに新規注文の時間制限機能を実装してみよう
「この時間帯のトレードは避けたい」とかその逆とか、考えることもあると思います。
時間や曜日を指定し、そのときだけ取引しない、または取引する機能をEAに実装する方法を解説します。

EA自作の落とし穴
EAの自作にはバックテストが不可欠です。
EAの有用性を確認するためやパラメーターを最適化するために、バックテストは正しく行いましょう。
間違ったバックテスト結果に騙されないようにしましょう。
コントロールポイントでバックテストをやってはダメ
バックテストは「全ティック」で行った結果でなければ信頼できません。
時間がかかっても「全ティック」でやりましょう。

カーブフィッティングに気を付けよう
バックテストではカーブフィッティングに注意しましょう。
カーブフィッティングされたシステムは、過去にだけ合うように出来てしまっているので、未来に全く通用しません。

まとめ
以上、初心者向けに、MQL4言語を使ったプログラミングについて解説しました。
せっかくMT4を使っているんですから、ぜひあなたオリジナルのEAやインジケーターを自作してみましょう。
すでに出来上がっているサンプルEAのソースコードをちょっと書き換えるだけで、こんなにいろいろ出来ます。
アイディア次第では、ものすごいEAを自作できるかもしれませんよ。