MT4で作るシンプルEA入門:移動平均線とRSIを使った自動売買戦略

FX自動売買

本記事では、MT4(MetaTrader4)を使って「移動平均線とRSI」という基本的なテクニカル指標を組み合わせたシンプルな自動売買EA(エキスパートアドバイザー)を自分で作る方法について解説します。専門的な数式や難しいプログラミング理論はできるだけ避け、初心者でもイメージしやすいレベルで、戦略設計からEA化、テストの流れまでを一通り理解できるように構成しています。

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

MT4の自動売買とEAの基本構造を理解する

MT4で自動売買を行うには、「EA(エキスパートアドバイザー)」と呼ばれるプログラムファイルをチャートに適用します。EAはMQL4という専用言語で書かれており、相場の値動き(ティック)を受け取るたびに、あらかじめ記述されたロジックに従って「エントリーするか」「決済するか」を自動判断します。

EAの内部では、代表的に次のような処理が行われます。

・現在の価格や過去の価格データを取得する
・移動平均線やRSIなどインジケーターの値を計算する
・売買ルール(条件式)に合致しているか判定する
・条件を満たした場合に発注(成行・指値など)を行う
・保有ポジションに対して、損切・利確・トレーリングストップなどの管理を行う

この一連の流れを、自分のトレードルールに合わせて組み立てることがEA作りの本質です。本記事では、「移動平均線でトレンド方向を認識し、RSIで押し目・戻りを狙う」という、ごく基本的なロジックを題材にします。

戦略コンセプト:移動平均線×RSIでトレンドフォロー+押し目買い

最初に決めるべきは「どのような値動きを狙う戦略なのか」というコンセプトです。ここでは、FXの主要通貨ペア(例:EURUSD、USDJPYなど)の1時間足を対象に、次のようなシンプルな発想で戦略を組み立てます。

・移動平均線で「上昇トレンド」か「下降トレンド」かをざっくり判定する
・上昇トレンド中は押し目(価格の一時的な下落)で買いエントリーする
・下降トレンド中は戻り(価格の一時的な上昇)で売りエントリーする
・押し目・戻りを測るためにRSIを使用し、「行き過ぎた反動」を狙う

裁量トレードでもよく使われる考え方ですが、EAではこの発想を「明確な数値条件」に落とし込みます。たとえば、次のようなルールです。

・短期移動平均線(期間20)が長期移動平均線(期間50)より上なら上昇トレンド
・上昇トレンド中にRSI(期間14)が30以下まで下がったら「売られすぎ」とみなす
・RSIが30を下から上に抜けたタイミングで買いエントリー
・逆に、短期MAが長期MAより下なら下降トレンドとみなす
・下降トレンド中にRSIが70以上の「買われすぎ」まで上昇し、70を上から下に抜けたタイミングで売りエントリー

このように、裁量判断で曖昧になりがちな「押し目」「戻り」を、インジケーターの数値として明文化することで、EAに落とし込みやすくなります。

インジケーター設定:期間・時間足・通貨ペアの決め方

EAを作る前に、どの時間足・通貨ペアで動かすのか、そして各インジケーターの期間設定をどうするかを決めておきます。最初は、次のような標準的な組み合わせから始めるのが無難です。

・時間足:1時間足(H1)
・通貨ペア:スプレッドの狭いメジャーペア(EURUSD、USDJPYなど)
・移動平均線(MA):短期20、長期50(どちらもSMA)
・RSI:期間14、レベル30/70

なぜ1時間足なのかというと、5分足や1分足のような超短期足に比べてノイズが少なく、同時に日足よりもエントリー回数が多くなるため、EAの検証がしやすいからです。移動平均線やRSIの期間も、「MT4のデフォルト設定に近い値」を使うことで、極端にカーブフィットしたパラメータを避けられます。

もちろん、バックテストやフォワードテストを通じて、期間を微調整していく余地はありますが、最初から細かく最適化しすぎると、偶然にフィットしただけのパラメータを選んでしまいがちです。まずは「標準的な設定」でEAを組み、挙動を理解することを優先します。

買いエントリー条件の具体例

次に、実際にEAに書き込む「条件式」をイメージしやすいよう、買いエントリーの条件を細かく分解してみます。

1. トレンド判定
・短期MA(20)が長期MA(50)より上
・価格(終値)が両方の移動平均線より上、または少なくとも短期MAより上

2. 押し目判定(RSI)
・RSIが一度30以下に下落し、「売られすぎ」ゾーンに入った
・その後、RSIが30を下から上にクロスしたタイミング

3. エントリー実行
・上記の条件が足確定時に成立したら、次の足の始値付近で成行買い注文を出す
・すでに同一通貨ペアで買いポジションを持っている場合は、新規エントリーをスキップする(ナンピンを避けるため)

EAでは、これらの条件を「移動平均の値」と「RSIの現在値/一つ前の足の値」を用いて判定します。たとえば、MQL4ではiMAやiRSIといった組み込み関数で数値を取得し、if文の中でクロスを判定することになります。

売りエントリー条件の具体例

売りエントリーは、買いエントリーの逆を考えればよいので、ロジックは比較的シンプルです。

1. トレンド判定
・短期MA(20)が長期MA(50)より下
・価格(終値)が短期MAより下

2. 戻り判定(RSI)
・RSIが一度70以上に上昇し、「買われすぎ」ゾーンに入った
・その後、RSIが70を上から下にクロスしたタイミング

3. エントリー実行
・条件が足確定時に成立したら、次の足で成行売り注文
・すでに同一通貨ペアで売りポジションを持っている場合は、新規エントリーを行わない

このように、「トレンド方向」と「押し目・戻り」をセットで扱うことで、レンジ相場での無駄なエントリーをある程度減らすことが期待できます。ただし、完全にノイズを消すことはできないため、後述する損切りやロット管理が非常に重要になります。

損切り・利確・トレーリングストップの設計

エントリーロジックだけでなく、「どこで損切りするか」「どこで利益を確定するか」もEAの成績を大きく左右します。ここでは、初心者でも理解しやすく実装しやすい、固定幅ベースの管理方法を例にします。

・損切り(SL):エントリー価格から一定pips離れた位置に置く(例:30pips)
・利確(TP):損切り幅の1.5~2倍程度の位置に置く(例:45~60pips)
・トレーリングストップ:含み益が一定幅(例:20pips)以上乗ったら、SLを少しずつ有利な方向へ移動させる

たとえば、30pipsの損切り、60pipsの利確であれば、1回の勝ちで2回分の負けをカバーできるリスクリワードになります。もちろん、市場環境によって最適な幅は変わりますが、最初は「大きく負けずにコツコツ試せる設定」を意識することが大切です。

トレーリングストップを使う場合、含み益が伸びたときにできるだけ利益を伸ばしつつ、急な反転で利益を大きく削られないようにすることが目的です。EAでは、現在価格とエントリー価格の差分を計算し、一定以上の含み益がある場合にSLを引き上げていくロジックを書きます。

ロットサイズとリスク管理の考え方

EAを運用するうえで、戦略ロジックと同じくらい重要なのが「ロットサイズの決め方」です。過剰なロットで運用すれば、一時的なドローダウンで口座が大きく減ってしまう可能性があります。逆にロットを小さくしすぎると、検証に時間がかかりすぎてしまいます。

一般的な考え方として、1回のトレードで口座残高のうち1~2%程度までの損失に収まるように損切り幅とロットサイズを決める方法があります。たとえば、口座残高10万円で、1回の許容損失を2%(2,000円)とする場合、30pipsの損切りなら、1pipsあたり約67円までにロットを抑える、といったイメージです。

EAでは、口座残高や損切り幅から自動的にロットを計算するロジックを書くこともできますが、最初は固定ロットで運用しつつ、EAの特性を掴んでからリスク管理を高度化していく方がわかりやすいでしょう。

EAのコード構造イメージ(MQL4の基本的な枠組み)

ここでは、詳細なコードではなく、「どのような場所にどのような処理を書くのか」という構造イメージを示します。MQL4のEAには、代表的に次のような関数が登場します。

OnInit():EA起動時に一度だけ実行される初期化処理
OnDeinit():EA停止時に実行される終了処理
OnTick():価格が動き、ティックが発生するたびに呼び出されるメイン処理

このうち、売買ロジックの多くはOnTick()の中に書かれます。イメージとしては、次のような流れです。

1. 現在時刻が新しいバーの開始かどうかを判定
2. 新しいバーが確定したタイミングでのみ、インジケーターの値を再計算
3. 買い条件・売り条件をチェック
4. 既存ポジションの有無を確認し、必要ならエントリー発注
5. 既存ポジションに対して損切り・利確・トレーリングストップを更新

実際のコードを書くときは、「条件判定」「発注」「ポジション管理」をそれぞれ別の関数に分けると見通しが良くなります。たとえば、CheckBuySignal()CheckSellSignal()ManagePositions()のように名前をつけて分割することで、後からロジックを修正しやすくなります。

バックテストの進め方と注意点

EAを作ったら、すぐにリアル口座で動かすのではなく、まずはMT4のストラテジーテスターでバックテストを行います。バックテストでは、過去の価格データに対してEAを走らせ、どのような損益曲線になったか、最大ドローダウンがどの程度だったかなどを確認できます。

バックテストの際は、次のような点に注意するとよいでしょう。

・テスト期間はできるだけ複数年分を用意し、トレンド相場・レンジ相場が混ざった期間を含める
・1つの通貨ペアだけでなく、複数のペアで挙動をチェックしてみる
・売買回数が極端に少ない戦略は、たまたまフィットしているだけの可能性もあるため注意する
・スプレッドやスリッページの設定を、実際の取引環境に近づける

特に、RSIやMAを使ったシンプルな戦略は、相場環境によって好調な時期と不調な時期がはっきり分かれることが多いため、1年だけの結果では判断せず、長めの期間での安定性を重視することが大切です。

フォワードテストとデモ口座での検証

バックテストである程度納得できる結果が出たら、次はデモ口座でのフォワードテストです。フォワードテストでは、リアルタイムの相場に対してEAを動かし、バックテストと同じような挙動をしているかを確認します。

・バックテストで期待したエントリータイミングと実際のエントリーが大きくずれていないか
・経済指標発表時など、スプレッドが急拡大するときの挙動に問題がないか
・長時間稼働させたときにエラーが出ていないか(ログで確認)

フォワードテストの段階では、ロットを極小にしたリアル口座で試す方法もありますが、慣れるまではデモで挙動を十分に把握してから本運用に移行する方が安心です。

ありがちな失敗パターンと改善のヒント

シンプルなインジケーターEAでも、実際に動かしてみると様々な問題点が見えてきます。初心者が陥りがちなパターンと、その改善のヒントをいくつか挙げます。

・パラメータを過度に最適化しすぎる
バックテストの結果を良くしようと、MAやRSIの期間、損切り幅・利確幅を細かく調整しすぎると、特定の過去データにだけフィットした戦略になりがちです。期間やレベル設定は、「直感的に意味がある範囲」に留め、複数の期間でそれなりに安定しているかどうかを見ることが重要です。

・損切りが遠すぎて、1回の損失が大きくなってしまう
トレンドフォロー戦略では、「押し目だと思ったらそのままトレンド転換だった」というケースも少なくありません。損切り幅を広げすぎると、そうしたケースで大きくダメージを受けてしまいます。ドローダウンが大きいと感じたら、損切り幅をやや狭くし、ロットも抑えて、まずは安定した運用を優先するのが無難です。

・ポジションを増やしすぎる
ナンピンや両建てを多用すると、相場が一方向に動いたときに大きな含み損を抱えるリスクがあります。最初は「1通貨ペアにつき1ポジションまで」というように、ポジション数に上限を設けるロジックを組み込むとよいでしょう。

今後の発展:フィルターや時間帯制限の追加

移動平均線とRSIだけでもEAは作れますが、実際の運用では、より安定性を高めるために追加のフィルターを導入することがあります。たとえば、次のような工夫です。

・ボラティリティ(ATRなど)を用いて、値動きが極端に小さいときはエントリーしない
・重要な経済指標の発表前後は新規エントリーを停止する
・スプレッドが一定以上広がったときはエントリーを見送る
・ロンドン時間・ニューヨーク時間のように、流動性が高い時間帯だけ売買する

これらを順番にEAに追加し、バックテストとフォワードテストで挙動を比較していくことで、「どのフィルターが有効だったか」「どこまで条件を絞り込むべきか」が見えてきます。いきなり複雑なEAを作るのではなく、今回のようなシンプルな戦略をベースに、少しずつ改良していくことが長期的な安定運用につながります。

まとめ:シンプルなインジケーターEAで自動売買の基礎を身につける

本記事では、MT4を用いて「移動平均線とRSI」を組み合わせた自動売買EAを自作するまでの考え方を、戦略コンセプトからインジケーター設定、売買ロジック、リスク管理、検証方法まで一通り解説しました。

・移動平均線でトレンド方向を決め、RSIで押し目・戻りを捉える
・明確な数値条件に落とし込むことで、裁量判断のブレを減らす
・損切り・利確・ロット管理をセットで設計することで、ドローダウンを抑える
・バックテストとフォワードテストを通して、戦略の癖と限界を把握する

まずはデモ口座や小さなロットからスタートし、EAがどのような場面で利益を出し、どのような場面で負けるのかを丁寧に観察することが、自動売買を長く続けるための第一歩です。シンプルなインジケーターEAを通じて、自分なりのルールをプログラムとして表現する感覚を身につけていきましょう。

p-nuts

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

p-nutsをフォローする
FX自動売買
スポンサーリンク
【DMM FX】入金
シェアする
p-nutsをフォローする

コメント

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