MT4の基本インジケーターを使った自動売買EAの作り方入門

システムトレード

本記事では、MT4で代表的なテクニカルインジケーターを使った自動売買EA(エキスパートアドバイザー)を自分で組むための基本的な考え方と具体的な手順を解説します。裁量トレードの感情に振り回されるのではなく、あらかじめ決めたルールをコードとして落とし込み、同じ条件を機械的に繰り返すことで、トレードをより客観的に管理しやすくすることが目的です。

スポンサーリンク
【DMM FX】入金

インジケーターEAとは何かを整理する

インジケーターEAとは、「特定のテクニカル指標の条件がそろったらエントリーし、別の条件が来たら決済する」というロジックを、MT4のEAとして自動実行させる仕組みです。たとえば、移動平均線のゴールデンクロスで買い、デッドクロスで決済する、RSIが30以下で買い、50で利確する、といった単純なルールでもEA化できます。

ここで重要なのは、インジケーターEAは「インジケーターの値そのもの」ではなく、「その値をどう解釈するか」というルールの塊だという点です。同じ移動平均線でも、期間や時間軸、クロスの定義(終値ベースか、高値・安値を使うか)で結果は大きく変わります。EAを作るということは、この解釈ルールを細かく設計していく作業だと考えると分かりやすいです。

MT4でEAを動かすための基本的な準備

まずはMT4でEAを動かすための最低限の準備を確認します。難しいことをする必要はなく、以下の流れを押さえれば十分です。

1. MT4をインストールし、デモ口座またはリアル口座にログインする。
2. 「ナビゲーター」ウィンドウから「エキスパートアドバイザ」を確認する。
3. 「ツール」→「オプション」→「エキスパートアドバイザ」で自動売買を許可する設定を確認する。
4. チャートを開き、時間足(M5、M15、H1など)と通貨ペア(例:USDJPY)を選ぶ。
5. EAファイル(.ex4 または .mq4)を「MQL4」フォルダ内の「Experts」フォルダに配置し、MT4を再起動する。

この記事では、EAファイルそのものをコンパイルするところまでを前提としつつ、ロジックの設計に焦点を当てて解説します。実際にコードを書く際には、MT4に付属の「メタエディター」を使ってMQL4言語でEAを記述します。

代表的なテクニカルインジケーターとEA化の考え方

ここでは、MT4でよく使われる基本インジケーターを例に、EA化の考え方を整理します。例として挙げるのは以下の3つです。

・移動平均線(Moving Average)
・RSI(Relative Strength Index)
・MACD(Moving Average Convergence Divergence)

どれもMT4標準搭載のインジケーターであり、初期設定のままでも動きます。EAでは、これらを関数として呼び出し、戻り値に応じて売買条件を判定します。

移動平均線クロスEAの発想

移動平均線を使った最も基本的なEAは「短期線と長期線のクロス」を利用したトレンドフォローです。具体的には、以下のようなロジックが代表的です。

・短期移動平均線が長期移動平均線を下から上に抜けたら買いエントリー(ゴールデンクロス)
・短期移動平均線が長期移動平均線を上から下に抜けたら売りエントリー(デッドクロス)
・すでにポジションがある場合は、反対クロスで全決済する

EA化する際は、「どの足の終値で」「何本前の足までさかのぼって」クロスを判定するかが重要です。たとえば、現在の足ではなく1本前の確定足を使ってクロスを判定するようにすれば、「一瞬クロスしただけで、確定前に元に戻る」というノイズをある程度避けることができます。

RSI逆張りEAの発想

RSIは買われ過ぎ・売られ過ぎを測るオシレーターです。EAでは、RSIが一定値を下回ったら買い、上回ったら売り、あるいは決済という逆張りロジックがよく使われます。典型的な例は次の通りです。

・RSIが30以下になったら買いエントリー(売られ過ぎ)
・RSIが70以上になったら売りエントリー(買われ過ぎ)
・一定の利幅(例:+30pips)またはRSIが50付近まで戻ったら決済

ただし、トレンドが強い場面では、RSIが売られ過ぎ・買われ過ぎゾーンに張り付いたまま価格が進んでしまうことがあります。そのため、EA化する際には「移動平均線の傾きがフラットに近いときだけエントリーする」「上位足がレンジのときだけ動かす」など、トレンドフィルターを組み合わせると暴走を抑えやすくなります。

MACDトレンドフォローEAの発想

MACDは短期と長期の指数移動平均線の差を使ったトレンド系インジケーターです。EAでは、MACDラインとシグナルラインのクロス、あるいはMACDがゼロラインを抜けたタイミングを使ってエントリー・決済を判定します。

たとえば、以下のようなロジックが考えられます。

・MACDラインがシグナルラインを下から上に抜けたら買いエントリー
・MACDラインがシグナルラインを上から下に抜けたら売りエントリー
・MACDがゼロラインを反対方向に抜けたら決済

MACDは移動平均線ベースの指標なので、トレンドの初動を捉えるのに向いていますが、レンジ相場ではダマシが増えやすい特徴があります。そのため、RSIなど他のオシレーターを組み合わせて「勢いが弱い場面のシグナルをフィルタリングする」といった工夫が有効です。

EAロジック設計の基本構造

どのインジケーターを使う場合でも、EAのロジック構造は共通しておおむね次のような流れになります。

1. 現在のポジション状況を確認する(ノーポジションか、買いか、売りか)。
2. 各インジケーターの値を取得する(移動平均線、RSI、MACDなど)。
3. エントリー条件がそろっているか判定する。
4. 決済条件(利確・損切り・時間経過など)がそろっているか判定する。
5. ロットサイズ、ストップロス、テイクプロフィットを計算する。
6. 条件を満たす場合にのみ注文を発注する。

この流れを毎ティックまたは毎バーごとに繰り返すことで、EAは自動的にトレードを行います。実際のコードでは、OnTick関数の中にこれらの処理を分割して書いていくイメージです。

具体例:移動平均クロスEAの疑似コードイメージ

ここでは、移動平均線クロスEAのロジックをイメージしやすいように、疑似コードに近い形で説明します。実際のMQL4コードではもう少し細かい記述が必要ですが、流れをつかむことが目的です。

// 1. パラメータ
短期期間 = 10;
長期期間 = 25;
ロット = 0.1;

// 2. インジケーターの値を取得(1本前の確定足)
短期MA_1 = iMA(シンボル, 時間足, 短期期間, 0, MODE_SMA, PRICE_CLOSE, 1);
短期MA_2 = iMA(シンボル, 時間足, 短期期間, 0, MODE_SMA, PRICE_CLOSE, 2);
長期MA_1 = iMA(シンボル, 時間足, 長期期間, 0, MODE_SMA, PRICE_CLOSE, 1);
長期MA_2 = iMA(シンボル, 時間足, 長期期間, 0, MODE_SMA, PRICE_CLOSE, 2);

// 3. クロス判定
ゴールデンクロス = (短期MA_2 < 長期MA_2) && (短期MA_1 > 長期MA_1);
デッドクロス   = (短期MA_2 > 長期MA_2) && (短期MA_1 < 長期MA_1);

// 4. ポジション状況を確認し、エントリー・決済を行う
if (ノーポジション && ゴールデンクロス) {
    買いエントリー(ロット, ストップロス, テイクプロフィット);
}
if (ノーポジション && デッドクロス) {
    売りエントリー(ロット, ストップロス, テイクプロフィット);
}
if (買いポジション保有中 && デッドクロス) {
    全決済();
}
if (売りポジション保有中 && ゴールデンクロス) {
    全決済();
}

このように、EAの中では「インジケーターの値をいくつ取得し、その組み合わせがどう変化したら売買するか」をひたすら判定します。インジケーターを増やしたり、値動きのフィルターを追加したりしても、基本構造は同じです。

インジケーターを組み合わせるときのポイント

複数のインジケーターを組み合わせることで、シグナルの質を高めることは可能ですが、やみくもに条件を増やすと「ほとんどエントリーしないEA」や、「過去データにだけ異常にフィットしたEA」になりがちです。ここでは、代表的な組み合わせ方をいくつか紹介します。

1. トレンド系+オシレーター系
移動平均線やMACDなどのトレンド系で「方向」を決め、RSIなどのオシレーターで「押し目・戻り目」を測る組み合わせです。たとえば、移動平均線が上向きのときだけ、RSIが30以下になったタイミングで買いエントリーする、というロジックが典型例です。これにより、強い下落トレンドでの逆張りエントリーを避けやすくなります。

2. 時間軸の組み合わせ
EAでは、同じ通貨ペアでも複数の時間足を参照できます。H1では上昇トレンド、M15では短期の押し目、というように、上位足で大きな流れを確認し、下位足でタイミングを取る構造を組み込むことも可能です。ただし、時間足を増やしすぎるとロジックが複雑になり、検証が難しくなるため、最初は「上位足1つ+エントリー足1つ」くらいにとどめるのが無難です。

3. ボラティリティ指標との併用
ATRなどのボラティリティ指標を使って、ストップロスやテイクプロフィットの幅を自動調整する方法もあります。たとえば、「ストップロスはATRの1.5倍」「テイクプロフィットはATRの2倍」といった設定にしておくと、相場の変動幅に応じて自然にリスクが調整されます。

リスク管理とロット計算の基本

どれだけインジケーターEAのロジックを工夫しても、ロットサイズや損切り設定が極端だと、少数の連敗で口座残高が大きく減ってしまいます。EAを作るときは、ロジックと同じくらい「リスク管理」の部分を明確にしておくことが重要です。

初心者が意識したい基本の考え方は次の通りです。

・1トレードあたりの損失許容額を「口座残高の〇%」と決める(例:1〜2%)。
・ストップロス幅(pips)から逆算してロットサイズを計算する。
・連敗を想定し、心理的に耐えられるドローダウンの範囲に収まるようロットを抑える。

EA化する場合、ストップロスをパラメータとして固定する方法と、ATRなどを使って動的に決める方法があります。どちらにせよ、「このEAは1回負けたらいくら減るのか」「10連敗したらどのくらいのドローダウンになるのか」を計算できるようにしておくと、長期的な視点で運用しやすくなります。

バックテストとフォワードテストの進め方

インジケーターEAを実際に動かす前に、過去データで性能を確認する作業がバックテストです。MT4にはストラテジーテスターが用意されており、EAを指定して過去相場での損益曲線や勝率、最大ドローダウンなどを確認できます。

バックテストを行う際のポイントは次の通りです。

・できるだけ長い期間(数年分)のデータでテストする。
・ドル円、ユーロドルなど複数の通貨ペアで試し、偏りを確認する。
・スプレッドを実際の取引環境に近づける設定にする。
・テスト期間を前半と後半に分け、前半でパラメータ調整、後半で確認を行う。

さらに、バックテストの結果が良かったからといって、すぐに大きなロットでリアルトレードを行うのはリスクが高いです。最初はデモ口座や極小ロットでフォワードテストを行い、「リアルタイムの相場でもバックテストと近い挙動をするか」を確認しながら徐々にロットを調整していく流れが現実的です。

初心者がつまずきやすいポイントと対策

インジケーターEAを初めて作るとき、多くの人が似たようなところでつまずきます。代表的なポイントと対策を整理します。

1. 条件を盛り込みすぎてエントリーがほとんど発生しない
「負けたくない」という気持ちから、インジケーターを増やしすぎたり、条件を厳しくしすぎたりすると、シグナルがほとんど出ないEAになりがちです。最初は「トレンド方向を1つの指標で判断し、エントリータイミングをもう1つで決める」程度のシンプルな組み合わせから始め、検証しながら徐々に調整する方が現実的です。

2. 過去データに合わせすぎて将来通用しない(オーバーフィット)
特定の期間・特定の通貨ペアだけで極端に良い結果を出すようにパラメータを追い込むと、将来の相場では全く機能しないことが多くなります。パラメータを調整するときは、「少し数値を変えても結果が大きく崩れないか」「他の通貨ペアでも極端に悪い結果になっていないか」を確認し、安定性を重視するのがポイントです。

3. 実際の約定条件を想定していない
バックテストでは理論値通りに約定しても、リアル相場ではスリッページやスプレッド拡大により、成績が悪化する場合があります。EAを設計するときは、「経済指標発表時はエントリーしない」「スプレッドが一定以上に広がったら新規注文を避ける」など、実際の約定環境を意識した条件を入れると、より現実的な挙動に近づきます。

インジケーターEA作りを通じて得られるメリット

インジケーターEAを自分で作る過程は、単に自動売買を動かすだけでなく、相場観やトレードルールの整理にも大きく役立ちます。自分の頭の中にある「こういう相場では買いたい」「ここまで来たら手仕舞いたい」という感覚を、数値と条件で表現する必要があるため、トレードの基準が自然と明確になります。

また、一度EAとしてロジックを形にしておけば、マーケット環境が変わったときにも「どこを変えれば良いのか」をピンポイントで検討できます。移動平均線の期間だけを変えるのか、RSIの閾値を調整するのか、そもそも時間足を変えてみるのか、といった検証を体系的に行えるようになるため、感覚だけに頼るトレードから一歩抜け出すきっかけにもなります。

まとめ:シンプルなインジケーターEAから始めて、少しずつ改良する

MT4で基本的なインジケーターを使ったEAを作ること自体は、それほど難しい作業ではありません。移動平均線、RSI、MACDといった代表的な指標の値を取得し、エントリーと決済の条件を明確に定義すれば、シンプルなロジックでも十分EAとして機能します。

大切なのは、最初から完璧なEAを目指すのではなく、「まずは動くものを作り、バックテストとフォワードテストを通じて少しずつ改良していく」という姿勢です。インジケーターの組み合わせ方やリスク管理の考え方を身につければ、自分のトレードスタイルに合ったEAを育てていくことができます。

裁量トレードとEAのどちらが正しい、という話ではなく、インジケーターEAは「決めたルールを機械的に実行してくれるパートナー」として活用できます。本記事で紹介した基本的な考え方を押さえつつ、ご自身のアイデアを少しずつコードに落とし込んでいくことで、トレードの可能性を広げていってください。

p-nuts

お金稼ぎの現場で役立つ「投資の地図」を描くブログを運営しているサラリーマン兼業個人投資家の”p-nuts”と申します。株式・FX・暗号資産からデリバティブやオルタナティブ投資まで、複雑な理論をわかりやすく噛み砕き、再現性のある戦略と“なぜそうなるか”を丁寧に解説します。読んだらすぐ実践できること、そして迷った投資家が次の一歩を踏み出せることを大切にしています。

p-nutsをフォローする
システムトレード
スポンサーリンク
【DMM FX】入金
シェアする
p-nutsをフォローする

コメント

タイトルとURLをコピーしました