MT4(MetaTrader4)は、FXやCFDの世界で長く使われている定番プラットフォームです。その最大の魅力のひとつが、インジケーターや自動売買プログラム(EA:Expert Advisor)を自分で作って動かせることです。本記事では、移動平均線・RSI・MACD・ボリンジャーバンドなどの基本インジケーターを使って、初心者が自分のEAを作り始めるときの具体的な手順と考え方を、できるだけ分かりやすく解説します。
MT4のEAとは何をしてくれるプログラムか
EAは一言で言えば「決めたルール通りに自動で売買してくれるプログラム」です。裁量トレードでは、チャートを見ながら「そろそろ上がりそうだ」「ここで利確しよう」と感覚で判断しがちですが、EAでは次のようにルールをはっきりと文章にします。
- どの時間足・どの通貨ペアを取引するか
- どのインジケーターをどのように使ってエントリーするか
- どこで損切り・利確をするか
- 1回の取引でどれくらいのロットを持つか
この「ルール」をMQL4という言語でコード化したものがEAです。プログラミングと聞くと難しく感じますが、初心者でもロジックをシンプルに絞れば、基本インジケーターを使ったEAから十分スタートできます。
EA作成に使う基本インジケーターの整理
まずは、本記事で扱う基本インジケーターをざっくり整理します。どれもMT4に標準搭載されています。
移動平均線(Moving Average)
一定期間の終値の平均を線で結んだものです。トレンドの方向や強さを視覚的に確認できます。短期線と長期線のクロス(ゴールデンクロス/デッドクロス)は、EA化しやすい典型的なロジックです。
RSI(Relative Strength Index)
買われ過ぎ・売られ過ぎを0〜100のオシレーターで示す指標です。一般的には70以上が買われ過ぎ、30以下が売られ過ぎとされ、逆張りロジックと相性が良いです。
MACD
短期と長期の移動平均線の差を使ってトレンドの強さや転換を捉える指標です。MACDラインとシグナルラインのクロス、MACDのゼロライン抜けなどが売買シグナルとして使われます。
ボリンジャーバンド
移動平均線を中心に、価格のブレ幅(標準偏差)を上下バンドとして表示する指標です。バンドの±2σや±3σに価格が触れたときの逆張り、バンドの収縮と拡大を使ったブレイクアウトなどがEAでよく使われます。
EAを作る前に必ず決めておくべき3つのこと
いきなりコードを書き始めるのではなく、次の3点を紙やメモ帳に日本語で書き出してからEA化に進むと、迷いにくくなります。
1. どの時間足・どの市場状況を狙うか
同じロジックでも、5分足と1時間足では性格がまったく変わります。例えば次のようにざっくり決めましょう。
- 短期売買でコツコツ取りたい → 5分足〜15分足
- 落ち着いてチャートを見たい → 1時間足〜4時間足
- スイング寄りで回転を減らしたい → 4時間足〜日足
最初は自分が普段よく見ている時間足をそのまま使うのが無難です。
2. トレンドフォローか逆張りか
移動平均線のクロスやMACDはトレンドフォロー系、RSIやボリンジャーバンドのバンドタッチは逆張り系というように、インジケーターによって得意な戦い方が違います。どちらかに絞ると設計がシンプルになります。
3. 1回の負けをどこまで許容するか
EAで最も重要なのがリスク管理です。「口座残高の何%を1回の負けで許容するか」をあらかじめ決め、その範囲でロットと損切り幅を調整します。初心者は1〜2%程度から始めると大きく資金を減らしにくくなります。
移動平均線クロスEAの基本ロジック
最初の一歩として作りやすいのが「短期移動平均線と長期移動平均線のクロス」を使ったEAです。典型的なロジックを日本語で書くと次のようになります。
- 短期MAが長期MAを上抜けたら買いエントリー
- 短期MAが長期MAを下抜けたら売りエントリー
- 利益が一定pipsに達したら利確
- 逆方向のシグナルが出たら決済またはドテン
これをMQL4風の疑似コードで書くとイメージしやすくなります。
// 疑似コード:移動平均線クロスEAのイメージ
if (短期MAが長期MAを上抜け && 買いポジションがない) {
買いエントリー;
損切りと利確を設定;
}
if (短期MAが長期MAを下抜け && 売りポジションがない) {
売りエントリー;
損切りと利確を設定;
}
実際のMQL4では、iMA()関数で移動平均線の値を取得し、直近バーと1本前のバーの関係を調べることで「クロスしたかどうか」を判定します。
RSI逆張りEAの基本ロジック
次に、RSIを使った典型的な逆張りEAの考え方です。こちらも日本語ロジックから整理します。
- RSIが30を下回ったら売られ過ぎとみなす
- RSIが30を再度上抜けしたタイミングで買いエントリー
- RSIが70を上回ったら買われ過ぎとみなす
- RSIが70を再度下抜けしたタイミングで売りエントリー
これをEA化するときのポイントは、「水準を割った瞬間」ではなく「割ってから元のゾーンに戻ったとき」をシグナルにすることでダマシをある程度減らせる点です。
疑似コードのイメージは次のようになります。
// 疑似コード:RSI逆張りEA
if (RSI < 30) 売られ過ぎフラグ = true;
if (売られ過ぎフラグ && RSIが30を上抜け && 買いポジションがない) {
買いエントリー;
売られ過ぎフラグ = false;
}
if (RSI > 70) 買われ過ぎフラグ = true;
if (買われ過ぎフラグ && RSIが70を下抜け && 売りポジションがない) {
売りエントリー;
買われ過ぎフラグ = false;
}
MQL4ではiRSI()関数でRSIを取得し、同様に現在バーと1本前のバーの値を比較して「30ラインを上抜けしたかどうか」を判定します。
MACDトレンドフォローEAの基本ロジック
MACDはトレンドの強さや転換を捉えるのが得意です。EAに落とし込む場合、次のようなロジックが考えられます。
- MACDラインがシグナルラインを下から上に抜けたら上昇トレンドの初動とみて買い
- MACDラインがシグナルラインを上から下に抜けたら下降トレンドの初動とみて売り
- MACDがゼロラインより上にあるときだけ買いシグナルを有効にする(トレンドのフィルター)
- MACDがゼロラインより下にあるときだけ売りシグナルを有効にする
MACDとゼロラインの組み合わせで、レンジ相場のダマシをある程度ふるい落とすことができます。
ボリンジャーバンドブレイクEAの基本ロジック
ボリンジャーバンドは「価格の揺れ幅」を目安にする指標です。EA化で代表的なのが、バンドブレイクアウトを狙う手法です。
- バンド幅が一定値以下まで縮小した状態(スクイーズ)を検出
- その後、ローソク足の終値が上側バンドを明確に上抜けしたら買い
- 終値が下側バンドを明確に下抜けしたら売り
- バンドの中心線(移動平均線)や反対側バンドを利確ポイントにする
EAでは、iBands()関数で上バンド・下バンド・中心線の値を取得し、終値との位置関係を条件分岐で判定します。バンド幅は「上バンド − 下バンド」で計算できます。
インジケーターEA共通の設計ポイント
どのインジケーターを使うEAでも共通する設計上のポイントがいくつかあります。ここを最初から意識しておくと、後の検証がスムーズになります。
1. シグナルの確定タイミングを「足の確定」に合わせる
確定前のバー(リアルタイムで動いている途中の足)の値でシグナル判定をすると、インジケーターの値が大きく変動し、シグナルが出たり消えたりします。EAでは「1本前の足が確定したタイミングで、その足の値を使って判定する」というルールにすると安定します。
2. 同時保有ポジションの上限を決めておく
短期足でEAを動かすと、条件次第では連続でシグナルが出てポジションが積み上がることがあります。最初は「常に1ポジションのみ保有」「最大2ポジションまで」など、上限を決めてロット管理をしやすくしておきましょう。
3. スプレッド・約定力の影響を意識する
EAはバックテスト段階では理想的な約定を前提としますが、実際の取引ではスプレッドの広がりや約定拒否・スリッページが発生します。特にスキャルピング寄りのロジックではスプレッドが成績への影響を大きくします。検証段階から、スプレッドをある程度現実寄りに設定しておくとギャップを減らせます。
MT4でEAを作る実際の手順
ここからは、MT4上でEAを作る具体的な手順を簡単に整理します。細かな画面操作は環境によって多少異なりますが、大まかな流れは共通です。
1. MetaEditorを起動する
- MT4のメニューから「ツール」→「MetaQuotes Language Editor」を開く
- または、MT4画面上部の「MetaEditor」アイコンをクリック
2. 新しいEAファイルを作成する
- MetaEditor上で「新規作成」→「Expert Advisor(テンプレート)」を選択
- EAの名前を入力(例:
MyIndicatorEA) - 作成を完了すると、基本的なテンプレートコードが自動生成される
3. OnTick関数にロジックを書く
MQL4では、価格が動くたびにOnTick()関数が呼び出されます。この中に「インジケーターの値を取得→条件判定→注文発注」という流れを書いていきます。
例えば、移動平均線クロスEAの非常に簡略化したイメージは次のようになります。
void OnTick() {
double maFastCurrent = iMA(NULL, PERIOD_H1, 5, 0, MODE_EMA, PRICE_CLOSE, 0);
double maFastPrev = iMA(NULL, PERIOD_H1, 5, 0, MODE_EMA, PRICE_CLOSE, 1);
double maSlowCurrent = iMA(NULL, PERIOD_H1, 20, 0, MODE_EMA, PRICE_CLOSE, 0);
double maSlowPrev = iMA(NULL, PERIOD_H1, 20, 0, MODE_EMA, PRICE_CLOSE, 1);
// ゴールデンクロスを検出
bool isGC = (maFastPrev < maSlowPrev) && (maFastCurrent > maSlowCurrent);
// デッドクロスを検出
bool isDC = (maFastPrev > maSlowPrev) && (maFastCurrent < maSlowCurrent);
// ここにポジション保有状況のチェックと発注ロジックを書く
}
実運用用のEAでは、ロットサイズ計算、エラー処理、ポジション管理など、さらに多くのコードが必要ですが、最初は「インジケーターの値の取り方」と「条件分岐の書き方」に慣れることを優先しましょう。
4. コンパイルしてエラーを確認する
コードを書いたら必ずコンパイルしてエラーや警告を確認します。構文エラーがあれば、MetaEditorの下部にあるログに行番号とともに表示されるので、一つずつ修正していきます。最初はスペルミスやセミコロン抜けが多くなりがちですが、慣れれば自然と減っていきます。
ストラテジーテスターでのバックテスト手順
EAがコンパイルできたら、次はストラテジーテスターでバックテストを行います。MT4の画面下部「ストラテジーテスター」から、次のような流れで設定します。
- テストするEAを選択
- 通貨ペアと時間足を指定
- テスト期間を指定(例:過去3年分)
- モデル(始値のみ/全ティックなど)を選択
- 初期証拠金やレバレッジを設定
- 「スタート」を押して結果を確認
バックテストの結果では、総損益だけでなく、次のような指標も必ず確認しましょう。
- 最大ドローダウン(どれくらい口座残高が落ち込んだか)
- 勝率だけでなくリスクリワード(平均利益/平均損失)
- 取引回数(少なすぎると検証として弱く、多すぎるとスプレッドの影響が増える)
デモ口座でのフォワードテストの進め方
バックテストである程度納得できる結果が出たら、いきなりリアル口座に入れるのではなく、デモ口座で「フォワードテスト」を行います。
- 実際のリアルタイムレートでEAを1〜2か月ほど動かす
- 約定状況やスプレッドの影響、想定外の動作がないか確認する
- 必要に応じてパラメーター(期間・利確幅・損切り幅など)を微調整する
フォワードテストの期間中は、EAに任せきりにせず、日々の取引履歴をエクセルなどにまとめて、どのような場面で利益が出ているか・損失が出ているかを観察することが大切です。
初心者がやりがちな失敗と避けるための工夫
インジケーターEA作りで初心者が陥りがちな失敗パターンと、その回避策をいくつか挙げます。
1. パラメーターを過度に最適化しすぎる
バックテストの成績を良くしようと、移動平均線の期間やRSIの閾値を細かく変えて「最も成績が良い組み合わせ」を探しすぎると、過去データにだけ都合の良いロジックになりがちです。期間や閾値は、インジケーターの一般的な使われ方から大きく外れない範囲で決めるのが無難です。
2. ロジックを詰め込みすぎて複雑化する
「移動平均線とRSIとMACDとボリンジャーバンドを全部組み合わせれば精度が上がるはず」と考えがちですが、条件が増えるほどシグナルは減り、その分検証もしづらくなります。最初は「1つのインジケーター+シンプルなフィルター」くらいから始めると傾向をつかみやすくなります。
3. ロット管理を軽視してしまう
EAのロジックに夢中になりすぎて、ロットの大きさや最大ドローダウンをあまり気にしないまま運用してしまうと、数回の連敗で大きく口座残高を減らすことがあります。EAの検証時には、必ず「このロットで連敗したらどのくらい減るか」をシミュレーションしておきましょう。
少額から始めて知見を溜めるステップ
実際にEAを運用する際は、いきなり大きなロットで勝負する必要はありません。次のようなステップで、少額から経験を積んでいくのがおすすめです。
- デモ口座でEAの動作に慣れる
- 少額のリアル口座で、ロットを極小にして数か月運用
- 取引履歴を分析し、ロジックの癖や弱点を把握する
- 必要ならロジックを微調整した第二版EAを作る
- EAの信頼性が高まってきたら、無理のない範囲でロットを少しずつ増やす
EA作成は、一度で完璧なロジックを作るというよりも、「小さく作って検証し、改善していく」サイクルを回し続ける作業です。基本インジケーターを使ったシンプルなEAは、そのサイクルを学ぶのに最適な題材と言えます。
まとめ:基本インジケーターEAは最良の教材になる
本記事では、移動平均線・RSI・MACD・ボリンジャーバンドといった基本インジケーターを使ったEA作りの考え方と、MT4上での具体的な手順を解説しました。
- まずは日本語でロジックを書き出す
- どの時間足・どの市場状況を狙うかを決める
- トレンドフォローか逆張りかをはっきりさせる
- リスク許容度に合わせてロットと損切り幅を決める
- ストラテジーテスターでバックテストし、デモ口座でフォワードテストする
最初は難しく感じても、シンプルな移動平均線クロスEAやRSI逆張りEAから手を動かしていくことで、次第にインジケーターの意味や相場との相性が体感的に分かってきます。基本インジケーターEAを「自分のトレードを見直す教材」として活用しながら、少しずつ自分なりのロジックを組み立てていくことで、裁量トレードにも良い影響が出てきます。
焦らず、小さく、検証と改善を繰り返しながら、MT4でのEA作りを楽しみつつ身につけていきましょう。


コメント