MT4で自動売買(EA)を動かしてみたいけれど、「プログラミングが難しそう」「何から手を付ければいいか分からない」という方は多いと思います。この記事では、MT4でよく使われる基本インジケーター(移動平均線・RSI・MACDなど)を組み合わせて、自分専用のシンプルなEAを作る流れを、初心者の方でも理解できるように丁寧に解説します。
ここで紹介するのは、あくまで学習と検証を目的としたシンプルなロジックです。実際に資金を投入する前に、必ずデモ口座や少額から動かし、過去検証・フォワードテストを通じて自分で納得できるまでチェックすることが重要です。
MT4のEAとインジケーターの関係を理解する
まず、EAとインジケーターの役割の違いを整理しておきます。
- インジケーター:チャート上に情報を表示する「計算ツール」。移動平均線、RSI、MACDなど。
- EA(Expert Advisor):インジケーターや価格データを元に「売買ルールを自動で実行するプログラム」。エントリー・決済・ロット計算などを担当します。
インジケーター単体は売買をしませんが、EAの中からインジケーターの値を読み取り、「○○より上なら買い」「△△より下なら決済」といった条件分岐を実装することで、自動売買が実現します。
EA作成の基本ステップの全体像
インジケーターを使ったEAを自作する際の流れは、次のようなステップになります。
- トレードアイデアを言葉で整理する(ロジック設計)
- 使うインジケーターを決め、パラメータを仮決めする
- MQL4でエントリー・決済条件をコード化する
- MT4のストラテジーテスターでバックテストする
- ロジックやパラメータを修正しながら再テストする
- フォワードテスト(デモ口座など)で動きを確認する
この記事では特に、ステップ1〜3をイメージしやすいように、具体的なロジック例とともに解説します。
代表的なインジケーター3つの役割整理
基本的なインジケーターを3つだけ押さえておくと、EAの設計がかなり楽になります。
移動平均線(MA)——トレンドの方向を判断する軸
移動平均線は、一定期間の終値の平均を線で結んだものです。EAでは主に次のような形で利用します。
- 価格が移動平均線より上なら「上昇トレンド」、下なら「下降トレンド」とみなす。
- 短期線が長期線を上抜けしたら「ゴールデンクロス」で買い、下抜けしたら「デッドクロス」で売り。
- 移動平均線の傾きが上向きなら買い方向を優先する。
トレンド方向をざっくり決める「フィルター」として使うと分かりやすいです。
RSI——「買われすぎ・売られすぎ」を見るオシレーター
RSIは、一定期間内の上昇幅と下落幅のバランスから、「今どの程度買われすぎか・売られすぎか」を数値化したインジケーターです。0〜100の間で動きます。
- 一般的な基準:70以上で「買われすぎ」、30以下で「売られすぎ」
- レンジ相場での逆張りに向いているが、トレンドが強いときは逆行してしまうことも多い。
- EAでは「RSIが30を下から上に抜けたら買い」「70を上から下に抜けたら売り」などのシグナルとして利用。
RSIは単独で使うよりも、「トレンド方向をMAで決めて、エントリータイミングをRSIで測る」といった組み合わせの方が安定しやすいです。
MACD——トレンドの強さと転換を捉える
MACDは2本の移動平均線の差をベースにしたインジケーターで、トレンドの勢いと転換点を捉えるのに向いています。
- MACDラインとシグナルラインのクロス
- 0ラインより上か下か(上なら上昇優勢、下なら下降優勢)
- ヒストグラムの拡大・縮小でモメンタムの変化を確認
EAでは、MACDの0ラインやシグナルクロスを使って「トレンド方向にだけエントリーする」「勢いが弱まったら決済する」といった設計ができます。
シンプルなEAロジック例1:移動平均線×RSIの順張り+押し目買い
まずは、移動平均線とRSIを組み合わせた、分かりやすい順張り+押し目買いロジックの例を挙げます。通貨ペアはFXの主要通貨(例:EURUSD)を想定します。
ロジックの概要
- トレンド判定:20期間の移動平均線(MA20)を使用
- 買い方向のみエントリーする順張りロジック
- 一時的な押し目をRSIで判断してエントリー
具体的な条件は次のように設定します。
買いエントリー条件
- 現在の終値がMA20より上にある(上昇トレンドとみなす)
- RSI(14)が一度30以下まで下がった後、30を下から上に抜けた(押し目からの反発)
- 現在保有ポジションがない(多重ポジションは取らない)
この3つが同時に満たされたときに買いエントリーするようEAにコード化します。
決済(手仕舞い)条件
- RSIが70以上になったら利確
- エントリー価格から一定pips逆行したら損切り(例:−30pips)
- 日付が変わる前に全ポジションをクローズするなど、時間フィルターを入れるのも有効
このように、「トレンド方向の押し目だけを拾う」「一定の戻りで利確する」というシンプルな考え方に落とし込むと、EAのロジックも整理しやすくなります。
MT4での実装イメージ
MQL4のコード上では、おおまかには次のような流れになります。
- OnTick関数内で毎ティックごとに価格とインジケーター値を取得
- iMA関数でMA20の値を取得
- iRSI関数でRSI14の現在値と一つ前の値を取得
- エントリー条件・決済条件をif文で判定し、OrderSend / OrderCloseを実行
最初はコードを一から書くのではなく、MT4の「ナビゲータ」→「Expert Advisors」にあるサンプルEAを開き、そこにインジケーター条件を追加・書き換える形で慣れていくのがおすすめです。
EAロジック例2:MACDでトレンド方向を決めて、移動平均線で決済する
次に、MACDをトレンドフィルターとして使い、シンプルな移動平均線で利確・損切りを管理する例を紹介します。
ロジックの考え方
- MACDが0ラインより上のときは買い方向だけトレード
- MACDが0ラインより下のときは売り方向だけトレード
- エントリータイミングは、移動平均線への軽い押し目や戻りを利用
買いエントリー条件の例
- MACDラインが0より上にある
- 価格がMA50より上にある(中期トレンドも上昇)
- 短期押し目として、ローソク足が一度MA20近くまで下げたあと、再び上昇に転じたタイミングでエントリー
決済については、次のような考え方がシンプルです。
決済条件の例
- 価格がMA20を明確に下抜けたら利確または損切り(トレーリングストップ的な扱い)
- MACDが0ラインを割り込んだら、トレンド転換とみなして強制決済
- 一定pips以上含み益が出たら、ストップロスを建値付近に移動してリスクを減らす
MACDを「大きな流れ」、移動平均線を「細かい管理」として役割分担させるのがポイントです。
EA作りで必ず考えるべき3つのポイント
インジケーターを使ったロジックを考えるとき、次の3点を常に意識しておくと、無駄な失敗を減らせます。
1. 相場環境との相性
RSIの逆張りロジックはレンジ相場では機能しやすいですが、トレンド相場では大きく逆行してしまうことがあります。逆に、MACDや移動平均線クロスを使った順張りロジックは、強いトレンド相場では有利ですが、レンジではダマシが増えます。
そのため、EAを設計するときは「このロジックは、どんな相場環境に強いのか」をはっきりさせ、苦手な相場では取引を減らす工夫(ボラティリティフィルターや時間帯フィルターなど)を入れると安定しやすくなります。
2. エントリーよりも出口の設計が重要
多くの初心者はエントリー条件にこだわりがちですが、EAの成績を大きく左右するのは出口設計です。
- 固定pipsの利確・損切り
- ATRなどボラティリティ指標に応じて損切り幅を変える
- トレーリングストップで利益を伸ばしつつ、一定の含み益を確保する
- 時間で手仕舞いする(例:ロンドン時間終了前に全決済)
出口条件を複数試し、どの組み合わせが安定しやすいかをバックテストで確認することが大切です。
3. パラメータの「やりすぎ最適化」を避ける
インジケーターの期間や利確・損切り幅を過去チャートにピッタリ合わせてしまうと、「その期間だけ異常に成績が良いが、将来は通用しない」EAになりがちです。これをオーバーフィッティングと呼びます。
EAのパラメータを調整するときは、次のような点に注意します。
- あまり細かく期間を変えすぎない(例:MA21とMA22の差にこだわりすぎない)
- 異なる相場環境(上昇・下降・レンジ)を含む長めの期間でテストする
- テスト期間を前半・後半に分けて、後半のデータにも通用するかを確認する
「少し雑なくらいの設定でも全体として安定している」EAの方が、実運用では生き残りやすいです。
MT4で実際にEAを動かすまでの具体的な手順
ここからは、インジケーターを使ったEAをMT4で実際に動かすまでの、画面操作の流れを整理します。
1. MetaEditorでEAファイルを作成する
- MT4上部メニューから「ツール」→「MetaQuotes Language Editor」を開く
- 「新規作成」をクリックし、「Expert Advisor(テンプレート)」を選択
- EA名を入力し、ウィザードに従ってテンプレートを生成
- 生成されたコードに、インジケーターの取得と売買条件のロジックを追加していく
最初は、既存のサンプルEA(MACDサンプルなど)をコピーし、条件部分だけをインジケーター条件に書き換えていく方法が理解しやすいです。
2. インジケーター値を取得する基本コード(イメージ)
実際のコードはここでは省略しますが、イメージとしては次のようになります。
- iMA:移動平均線の値を取得
- iRSI:RSIの値を取得
- iMACD:MACDライン・シグナルライン・ヒストグラムの値を取得
これらの関数を使って「一つ前のバー」「現在のバー」の値を取得し、クロスや閾値のブレイクをif文で判定する形になります。
3. ストラテジーテスターでバックテスト
- MT4画面下部の「ストラテジーテスター」を開く
- テストするEAを選択
- 通貨ペア、時間足、テスト期間、初期証拠金などを設定
- 「モデル」は最初は「全ティック」ではなく「コントロールポイント」など、軽いモードから試すとよい
- 「スタート」を押し、損益曲線やトレード履歴を確認する
バックテストでは、結果の「総損益」だけでなく、最大ドローダウン、勝率、平均利益と平均損失のバランスなども確認します。
EA検証時にチェックすべきポイント
インジケーターを使ったEAを検証するときは、次のポイントをチェックします。
1. ドローダウンとリスク
短期で大きく増えるEAでも、途中のドローダウンが深すぎると、実際に運用するのは難しくなります。グラフが大きく上下している場合は、ロットを抑える、損切り幅を狭める、トレード回数を減らすなどの調整が必要です。
2. 相場局面ごとの成績
上昇トレンド・下降トレンド・レンジのそれぞれの局面で成績がどう変わるかを、チャートと履歴を見ながら確認します。特定の局面だけ極端に成績が悪い場合、その局面ではフィルターを入れてトレードを避けるなどの工夫が考えられます。
3. スプレッドや手数料の影響
短期売買ロジックほど、スプレッドや手数料の影響が大きくなります。バックテストの設定で、実際に近いスプレッドを指定したり、スプレッドの広がりを考慮した期間でテストしたりすることが重要です。
インジケーターEAを発展させるアイデア
基本的なインジケーターEAに慣れてきたら、次のような方向に発展させていくことができます。
- 時間帯フィルター(ロンドン時間のみトレード、指標発表前後はトレードしないなど)
- ボラティリティフィルター(ATRが一定以上のときだけトレードする)
- 複数時間足の組み合わせ(上位足でトレンド判定、下位足でエントリータイミング)
- ポジションサイジングの工夫(口座残高の○%をリスクにするなど)
これらはすべて、インジケーターや価格データを追加で読み取り、条件分岐を増やすことでEAに組み込むことができます。ただし、条件を増やしすぎるとオーバーフィッティングになりやすいので、「増やした条件が本当に合理的か」を常に意識することが大切です。
まとめ:インジケーターEAは「シンプルなロジック」から始める
MT4での自動売買EAは、一見すると難しそうに見えますが、やっていることは次の3つに集約されます。
- インジケーターや価格から「条件」を作る
- 条件が満たされたらエントリーし、満たされたら決済する
- これを機械的に繰り返して検証する
最初から完璧なEAを目指す必要はありません。移動平均線×RSI、MACD×移動平均線など、シンプルな組み合わせから始め、小さくテストしながら少しずつ改良していくことが、結果として長く続けられる近道になります。
インジケーターEA作りは、相場を数字とルールで考える良い訓練にもなります。まずはデモ環境や小ロットから、安全に試せる範囲でEA作成と検証を繰り返して、自分に合ったロジックを育てていくことを意識して取り組んでみてください。


コメント