裁量トレードだけでチャートを見続けるのは、時間も体力も消耗します。そこで役に立つのが、MT4(MetaTrader4)を使った自動売買EAです。あらかじめ決めたルールどおりにエントリーや決済を繰り返してくれるため、感情に振り回されにくくなり、検証もしやすくなります。
とはいえ、「プログラミングは難しそう」「EAを触ったことがない」という初心者の方も多いはずです。この記事では、MT4標準のインジケーター(移動平均線・RSI・MACD)を使って、シンプルなEAを自分で組み立てるイメージを持てるように、できるだけ平易な言葉で解説していきます。
FXだけでなく、株価指数やコモディティ、暗号資産のCFDなど、MT4で取引できる様々な銘柄に応用できる考え方です。まずはデモ口座や小さなロットから試し、少しずつ自分のスタイルに合う自動売買を育てていきましょう。
EA(エキスパートアドバイザー)とは何か
EAとは、MT4上で動く自動売買プログラムのことです。MQL4という専用言語で書かれており、チャートに適用すると、次のような処理を自動で行います。
- リアルタイムで価格やインジケーターの値を監視する
- 条件を満たしたら新規注文を出す
- 保有ポジションの利益や損失をチェックする
- 決済条件を満たしたらポジションをクローズする
通常のインジケーターが「シグナルを表示するだけ」なのに対して、EAは「実際に注文を出す」点が大きな違いです。チャートを見て手で注文を出していた作業を、コードに置き換えていくイメージです。
EA開発に必要な準備
MT4でEAを自作・検証するためには、最低限次の準備が必要です。
- MT4が使える口座(多くの海外FX業者や一部国内業者で提供)
- デモ口座または少額のリアル口座
- MT4に付属しているMetaEditor(MQL4の編集ソフト)
MT4を起動すると、上部メニューの「ツール」から「MetaQuotes Language Editor」を開けます。ここがEAを作成・編集するための開発画面です。最初は難しく感じるかもしれませんが、作るEAはシンプルで構いません。まずは「1つのインジケーターだけを使ったEA」を目標にすると取り組みやすくなります。
また、EAの検証には「ストラテジーテスター」を使います。MT4下部のターミナルウィンドウから「ストラテジーテスター」タブを開き、作成したEAと通貨ペア・期間を選んでバックテストを実行します。チャート上で過去の値動きを高速再生しながら、ルールどおりに売買できているか確認できます。
インジケーターを使ったEA設計の基本発想
EAは「条件判定」と「売買処理」の組み合わせです。インジケーターを使うEAであれば、基本的には次のような流れになります。
- 最新バーと1本前のバーのインジケーター値を取得する
- クロスや閾値(しきい値)を判定する
- 条件を満たしたらエントリー、保有中は決済条件を監視する
ここでは、MT4に標準搭載されている代表的な3つのインジケーターを例に、EAのロジックを設計するイメージを具体的に見ていきます。
例1:移動平均線クロスEAのアイデア
最もシンプルで人気のあるロジックが、短期と長期の移動平均線クロスに基づくトレンドフォローです。例えば次のようなルールを考えられます。
- 短期MA:20期間単純移動平均線(SMA)
- 長期MA:50期間単純移動平均線(SMA)
売買ルールの例は次のとおりです。
- 1本前までは短期MAが長期MAより下だった
- 最新バーで短期MAが長期MAを上抜けた → 買いエントリー
- 逆に、1本前まで短期MAが長期MAより上で、最新バーで下抜けた → 売りエントリー
決済ルールは複数考えられます。
- 短期MAが再び長期MAを逆方向にクロスしたら決済
- あらかじめ決めたpips数で利確/損切り
- 一定時間が経過したらクローズ
このようなシンプルなロジックでも、時間足(5分足・1時間足・4時間足など)や通貨ペアを変えると挙動が大きく変わります。株価指数やコモディティ、暗号資産CFDに対しても、同じ考え方で検証できます。
例2:RSIを使った逆張りEAのアイデア
RSIは、買われ過ぎ・売られ過ぎの度合いを見るオシレーター系インジケーターです。RSIを使ったEAの典型的なルールは次のようになります。
- RSI期間:14
- 買われ過ぎ水準:70
- 売られ過ぎ水準:30
逆張りEAの一例としては、次のようなロジックが考えられます。
- RSIが30を下回ったあと、再び30を上抜けたら買いエントリー
- RSIが70を上回ったあと、再び70を下抜けたら売りエントリー
このとき、単純に逆張りするだけだと、強いトレンド相場で含み損が膨らみやすくなります。そこで、トレンドフィルターとして移動平均線を組み合わせるのが定番です。
- 価格が200期間移動平均線より上にあるときだけ「買い」シグナルを有効にする
- 価格が200期間移動平均線より下にあるときだけ「売り」シグナルを有効にする
こうすることで、長期トレンドの方向に沿った逆張りだけを行い、無駄なシグナルをある程度カットできます。FX通貨ペアだけでなく、株価指数CFDや商品CFDでも同様に試すことができます。
例3:MACDを使ったトレンドフォローEAのアイデア
MACDは、2本の移動平均線の差をもとにトレンドの勢いを測るインジケーターです。MT4のMACDでは、MACDラインとシグナルラインのクロスが基本シグナルになります。
シンプルなEAの例としては、次のようなルールを設計できます。
- MACDラインがシグナルラインを下から上にクロスしたら買いエントリー
- MACDラインがシグナルラインを上から下にクロスしたら売りエントリー
- トレンド方向に一定pips進んだら一部利確、残りはトレーリングストップで伸ばす
MACDはダマシも多い指標ですが、長めの時間足(1時間足、4時間足、日足など)に絞ることで、ノイズをある程度減らせます。EA化する際は、エントリー条件を絞り込みつつ、決済を柔軟にすることがポイントです。
MQL4におけるEAの基本構造
実際のコードを書く前に、EAの骨組みとなるMQL4の構造を理解しておきましょう。典型的なEAには、次の3つの関数が含まれます。
- OnInit():EAがチャートにセットされたときに1回だけ実行される
- OnDeinit():EAがチャートから外されるときに実行される
- OnTick():価格が更新されるたびに呼び出される(売買ロジックの中心)
インジケーターの値を取得するには、MT4が用意している関数を使います。例えば、移動平均線であれば iMA()、RSIであれば iRSI()、MACDであれば iMACD() といった関数です。
移動平均線の最新値と1本前の値を取得するイメージは次のとおりです。
// 最新バーの短期移動平均
double maFastCurrent = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
// 1本前の短期移動平均
double maFastPrevious = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1);
同様に、長期移動平均線も取得して、
- 1本前は「短期 < 長期」
- 最新バーで「短期 > 長期」
という状態を検出できれば、「ゴールデンクロスが起きた」と判断できます。OnTick() の中でこの判定を行い、条件を満たしたら注文関数(OrderSend()など)を呼び出す流れになります。
移動平均クロスEAのシンプルな擬似コード
具体的なイメージをつかみやすくするために、移動平均クロスEAの流れを擬似コードで表現してみます。
OnTick() {
// すでにポジションを持っているか確認
if (ポジションなし) {
短期MAの現在値と1本前の値を取得
長期MAの現在値と1本前の値を取得
// ゴールデンクロス判定
if (短期MA_前 < 長期MA_前 かつ 短期MA_現在 > 長期MA_現在) {
ロットサイズを計算
買いポジションを新規で建てる
}
// デッドクロス判定
if (短期MA_前 > 長期MA_前 かつ 短期MA_現在 < 長期MA_現在) {
ロットサイズを計算
売りポジションを新規で建てる
}
} else {
// ポジション保有中の決済ルール
損切りラインや利確ラインに到達していないか確認
反対方向のクロスが発生していないか確認
条件を満たしたら決済注文を出す
}
}
実際のMQL4コードでは、注文のエラーチェックや、複数ポジションを持つ場合の処理など、もう少し細かい記述が必要になります。ただ、最初のうちは「ポジションは常に最大1つ」「通貨ペアも1つだけ」と決めておくと、ロジックを追いやすくなります。
ストラテジーテスターでのバックテスト手順
EAを作ったあとは、必ずストラテジーテスターで過去検証を行います。おおまかな手順は次のとおりです。
- MT4下部の「ストラテジーテスター」を開く
- エキスパートアドバイザ欄から作成したEAを選択
- 通貨ペア(またはCFD)と時間足を選ぶ
- テスト期間を指定する(過去数年分など)
- 初期証拠金とレバレッジ、ロットサイズを設定する
- 「スタート」ボタンを押してテストを実行する
テスト終了後は、「レポート」タブや「グラフ」タブで結果を確認できます。初心者のうちは、次のポイントに注目すると、EAの良し悪しを判断しやすくなります。
- 最大ドローダウン(資産がどれくらい減ったか)
- プロフィットファクター(総利益 ÷ 総損失)
- トレード数(あまりに少なすぎないか)
- 年月によるバラつき(特定期間だけ極端に良くないか)
良さそうな結果が出たとしても、パラメータを細かくいじりすぎると、たまたま過去データにだけ合った「偶然の最適化」になりがちです。期間や通貨ペアを変えてもある程度似た結果が出るかどうかを確認しながら、慎重に調整していくことが重要です。
よくある失敗パターンとリスク管理のポイント
インジケーターEAは一見シンプルですが、設計や運用を誤ると大きな損失につながることもあります。ありがちな失敗と、その対策の考え方をまとめます。
- ナンピン・マーチンゲールに頼りすぎる
負けるたびにロットを倍々にする手法は、一時的には資産曲線が右肩上がりに見えますが、長期的には破綻リスクが高くなりがちです。ロット管理は常に「口座残高の何%までリスクを取るか」という発想で考えたほうが安全です。 - スプレッドやスリッページを無視している
バックテストでスプレッドを低く設定しすぎたり、現実的なスリッページを考慮しないと、実運用では成績が悪化しやすくなります。スプレッドの大きい通貨ペアや、ボラティリティの高い時間帯では、特に注意が必要です。 - パラメータ最適化をやりすぎる
期間や閾値を細かくチューニングしすぎると、過去データにだけ都合よくフィットしたEAになってしまいます。大まかな値で安定して動くかどうかを優先して確認しましょう。
EAはあくまで「自分が決めたルールを自動で実行してくれるツール」です。リスクをどこまで許容するか、資金をどのように分散するかといった全体設計は、最終的には自分で決める必要があります。
インジケーターEAを発展させるためのアイデア
基本的なインジケーターEAに慣れてきたら、少しずつフィルターや条件を追加していくと、より自分の相場観に合ったロジックに近づけられます。例えば次のような発展アイデアがあります。
- 時間帯フィルター:ロンドン時間やニューヨーク時間など、流動性が高い時間帯だけエントリーする
- ボラティリティフィルター:ATR(平均真のレンジ)を使い、一定以上の値動きがあるときだけ取引する
- 上位足トレンドフィルター:上位時間足の移動平均線でトレンド方向を判定し、その方向に沿ったエントリーだけを許可する
- 複数インジケーターの組み合わせ:移動平均+RSI、MACD+ボリンジャーバンドなど、条件を増やしてダマシを減らす
株式や暗号資産のCFDなど、価格データさえあれば同じロジックを応用できます。異なる市場で同じEAをテストしてみると、「どのようなボラティリティ特性の銘柄と相性が良いのか」が見えてきます。
少額から始めて、自分のEAを育てていく
インジケーターを使ったEAは、アイデア自体はシンプルでも、実際に安定して機能させるまでには時間と試行錯誤が必要です。最初から完璧なEAを作ろうとする必要はありません。まずは「移動平均クロスだけ」「RSIだけ」といった単純なロジックを組み上げ、デモ口座や少額でテストしながら改善していくことが大切です。
この記事で紹介したように、MT4標準のインジケーターだけでも、トレンドフォロー型・逆張り型など様々なEAを設計できます。自分のライフスタイルやリスク許容度に合わせて、自動売買の仕組みを少しずつ整えていきましょう。
最終的には、「なぜこのルールにしたのか」「どの市場・時間足で機能しやすいのか」を説明できるEAほど、長く付き合いやすくなります。記録を残しながら、自分だけのインジケーターEAを育てていってください。


コメント