本記事では、MT4(MetaTrader4)で自動売買を行うために、自分でEA(エキスパートアドバイザー)を組む基本的な手順を、インジケーターを使った具体例とともに解説します。プログラミング初心者でも全体像がつかめるように、専門用語をできるだけかみ砕いて説明します。
MT4自動売買の全体像をつかむ
まず最初に押さえておきたいのは、「MT4の自動売買=EAという小さなプログラムをチャートに載せて、売買ルールを機械に実行させる仕組み」であるという点です。裁量トレードとの違いは、感情を介さず、あらかじめ決めたルールだけで売買する点にあります。
MT4でEAを動かす流れは、おおまかに次のようになります。
- 1. 売買ルールを決める(どの時間足で、どのインジケーターをどう使うか)
- 2. そのルールをMQL4という言語でEAとして実装する
- 3. ストラテジーテスターでバックテストする
- 4. デモ口座や少額でフォワードテストする
- 5. 問題がなければロットを調整しながら運用する
この記事では特に、「1〜2の部分(ルール作りとEA実装)」に焦点を当てて解説します。
EAの基本構造:何を自動化しているのか
EAは、チャートに張り付いて相場を監視し、条件を満たしたときだけ注文・決済を出すロボットだと考えるとイメージしやすいです。MQL4では、EAの中身は大きく次の3つのブロックに分かれます。
- 初期化処理(OnInit):パラメーターの受け取りや初期設定を行う
- メイン処理(OnTick):新しい価格(ティック)が来るたびに実行されるロジック
- 終了処理(OnDeinit):チャートから外れたときなどの後片付け
実際の売買判断のほとんどは、OnTickの中で行います。
「移動平均線のゴールデンクロスになったら成行買い」「RSIが70を超えたら利益確定」など、裁量でやっていることを、そのままコードで書き起こしていくイメージです。
開発環境の準備(MT4とMetaEditor)
EA開発を始めるために必要なのは、MT4本体と、その中に付属している「MetaEditor」です。通常、MT4のメニューから「ツール」→「MetaQuotes Language Editor」を開けば、コードを書く画面が立ち上がります。
実際の作業の流れは次の通りです。
- MT4を起動し、任意のブローカーのデモ口座にログインする
- MetaEditorを開き、「新規作成」ウィザードで「エキスパートアドバイザ(テンプレート)」を選ぶ
- EA名やパラメーター名を入力し、テンプレートコードを生成する
- テンプレートをベースに、売買ロジックを追記していく
- コンパイルしてエラーがないか確認する
- MT4のナビゲーターに表示されたEAをチャートにドラッグ&ドロップして動作確認する
最初はテンプレートコードの量に圧倒されがちですが、「どこに自分のロジックを書けばよいか」さえ分かれば、徐々に慣れていきます。
最小構成EAを理解する:シンプルなサンプル
ここでは、あくまで構造をイメージしてもらうために、考え方だけを紹介します。実際にMQL4コードを書く場合は、ブローカーの仕様や口座設定なども影響するため、必ずデモ口座で動作確認を行ってください。
最小構成のEAは、おおまかに次のような役割を持ちます。
- ポジションを持っていないときに、条件を満たしたら新規注文を出す
- ポジションを持っているときに、決済条件を満たしたら決済する
- リスク管理のためにロットを自動計算したり、ストップロスを設定したりする
MT4のEAでは、現在保有しているポジションを調べる関数や、インジケーターの値を取得する関数が標準で用意されています。これらを組み合わせることで、裁量トレードと同じルールを機械的に再現できます。
代表的インジケーター別:EAロジックの考え方
ここからは、代表的なインジケーターを使ったEAロジックのイメージをいくつか紹介します。実装する際は、必ずテストを行い、実口座での使用前に十分な検証を行ってください。
移動平均線(MA)を使ったトレンドフォローEA
最もシンプルで分かりやすいのが、短期と長期の移動平均線を使ったトレンドフォローです。例えば、次のようなルールが考えられます。
- 時間足:1時間足
- 短期MA:20期間、長期MA:80期間
- 新規買い条件:短期MAが長期MAを下から上に抜けた(ゴールデンクロス)かつ、価格が両方のMAより上にある
- 新規売り条件:短期MAが長期MAを上から下に抜けた(デッドクロス)かつ、価格が両方のMAより下にある
- 決済条件:逆シグナルが出たとき、または一定pipsのストップロス・テイクプロフィットに達したとき
この手法は、トレンドがしっかり出ているときには利益を伸ばしやすい一方、レンジ相場ではダマシが多くなります。EAとして実装する際は、ボラティリティフィルター(ATRなど)を組み合わせて、「動いている相場だけ取引する」といった工夫を加えると安定しやすくなります。
RSIを使った押し目買い・戻り売りEA
次に、RSIを使ったオシレーター系のロジックです。RSIは「買われすぎ・売られすぎ」を数値化した指標で、一般的には30以下が売られすぎ、70以上が買われすぎとされます。
EAの例としては、トレンド方向を移動平均線で判定しつつ、RSIで押し目・戻りのタイミングを測る組み合わせが分かりやすいです。
- 時間足:1時間足
- トレンド判定:200MAより上なら上昇トレンド、下なら下降トレンドとみなす
- 新規買い条件:上昇トレンド中にRSIが30以下まで下がったあと、40を上抜けたタイミングで成行買い
- 新規売り条件:下降トレンド中にRSIが70以上まで上がったあと、60を下抜けたタイミングで成行売り
- 決済条件:RSIが50を割り込んだ(買いの場合)/超えた(売りの場合)タイミング、またはあらかじめ設定したストップロス・テイクプロフィット
このように、トレンドと逆行する一時的な行き過ぎを狙うロジックは、EAとの相性が良いです。裁量で「そろそろ押し目かな」と感じている場面を、インジケーターの条件に落とし込むイメージでルール化していきます。
MACDを使ったトレンド転換EA
MACDは、2本の移動平均線の差をベースに作られたトレンド系指標で、トレンドの強さや転換のタイミングを捉えるのに使われます。EAに組み込む場合、次のような考え方が一例です。
- 時間足:4時間足
- 新規買い条件:MACDラインがシグナルラインを下から上に抜け、かつヒストグラムがマイナスからゼロ付近へ向かっている場面
- 新規売り条件:MACDラインがシグナルラインを上から下に抜け、かつヒストグラムがプラスからゼロ付近へ向かっている場面
- フィルター:日足の200MAより上なら買いシグナルのみ、下なら売りシグナルのみ有効にする
MACDはダマシも多い指標ですが、上位足のトレンド方向と組み合わせることで、より再現性の高いロジックになりやすくなります。
パラメーター設計とEA外部入力の考え方
EAを作るときは、パラメーターを外部入力にしておくことが非常に重要です。たとえば、移動平均線の期間やRSIの閾値などをコードに固定してしまうと、テストのたびにコードを書き換える必要があり、管理が難しくなります。
外部入力にしておけば、ストラテジーテスターのパラメータ欄から数値を変えるだけで、異なる設定を簡単に検証できます。
「期間20と期間80の組み合わせ」と「期間50と期間200の組み合わせ」を比較するといったことも、コードを弄らずに行えます。
ただし、むやみにパラメーターを最適化しすぎると、過去データにだけ都合よくフィットした「過剰最適化(オーバーフィッティング)」を招きます。EA作りの目的は「過去チャートを気持ちよく見せること」ではなく、「将来の不確実な相場で生き残ること」である点を常に意識する必要があります。
バックテストとフォワードテストの基本
EAが一応動くようになったら、次はバックテストです。MT4のストラテジーテスターを使えば、過去データに対してEAを実行し、損益曲線や勝率、ドローダウンなどを確認できます。
バックテストで見るべき典型的なポイントは次の通りです。
- テスト期間全体での損益カーブの形(右肩上がりかどうか)
- 最大ドローダウン(資産ピークからの下落幅)が口座資金に対して許容範囲か
- 勝率だけでなく、平均利益と平均損失のバランス(リスクリワード)
- 特定の相場局面(トレンド・レンジ・急変動)での挙動
バックテストのあとに必ず行いたいのが、フォワードテスト(未来のデータでの検証)です。具体的には、デモ口座や少額のリアル口座でEAを実行し、バックテストで得られた印象と近いパフォーマンスが出るかを確認します。
この段階で、「バックテストでは滑らかな右肩上がりだったのに、リアルでは全く勝てない」といったケースもよくあります。そうした場合は、ロジックやパラメーターの見直しが必要です。
リスク管理:自動売買だからこそ必要な視点
EAは24時間相場を監視してくれる頼もしい存在ですが、同時にリスク管理を間違えると、短時間で大きな損失を出す可能性もあります。特に意識したいのは次の点です。
- ロットサイズ:1回のトレードで口座資金の何%までリスクを取るか
- 最大ポジション数:同時にいくつまでポジションを持てるようにするか
- ストップロス:想定外の動きへの備えとして、必ず損切り幅を事前に決める
- 相関の高い通貨ペアの同時運用:同じロジックを複数通貨に入れる場合のリスク集中
EA作りでは、売買ロジックに目が行きがちですが、長く運用したときに口座がどのように増減するかという視点が非常に重要です。バックテストでは、損益曲線だけでなくドローダウンの大きさと頻度を必ずチェックしましょう。
よくある失敗パターンと回避のヒント
EAを自作して運用する際に、多くの人が踏みがちな落とし穴があります。代表例と、その回避のヒントを挙げます。
- 過去の一部期間だけで最適化し、それ以外の期間で大きく負ける
→ 長期のデータでテストする・期間を分けて検証する・フォワードテストを必ず行う。 - インジケーターを増やしすぎて、シグナルがほとんど出なくなる
→ 条件を足す前に「本当に必要なフィルターか」を検討し、シンプルなロジックを優先する。 - 大きく負けたあとに、ロジックを頻繁に作り直してしまう
→ 想定していたドローダウンの範囲かどうかを先に確認し、単発の負けでロジックを捨てない。 - リアル口座にいきなり大きなロットで投入する
→ 必ずデモ→少額リアル→ロットアップという順番で段階的に進める。
段階的なレベルアップロードマップ
最後に、MT4でEAを自作して運用できるようになるまでの、段階的なステップの一例を示します。
- 既存の無料EAをデモ口座で動かしてみて、「自動売買とは何をしているのか」を体感する
- シンプルな移動平均線クロスEAの中身を眺め、どの部分が売買判断をしているかを理解する
- 自分なりの移動平均線の期間やストップロス幅に変更して、バックテストを行う
- RSIやMACDなど、興味のあるインジケーターを1つ選び、ルールを紙に書き出してからEAに組み込む
- 複数のインジケーターを組み合わせたロジックを試し、シンプルさと安定性のバランスを探る
- 十分なバックテストとフォワードテストを経て、リスクを抑えつつ実運用に進む
MT4でEAを自分で組めるようになると、「アイデアをすぐに検証できる」「感情に振り回されにくくなる」といったメリットが得られます。一方で、どんなEAにも得意な相場と苦手な相場があり、将来の損益は誰にも保証できません。
その前提を受け入れたうえで、少しずつ試しながら、自分なりの自動売買スタイルを育てていくことが重要です。


コメント