MT4で移動平均線とRSIを組み合わせたシンプルEAを自作する方法

FX自動売買

この記事では、FX初心者でも扱いやすいMT4(MetaTrader4)を使って、「移動平均線」と「RSI」を組み合わせたシンプルな自動売買EA(エキスパートアドバイザー)を自作する方法について解説します。難しい数式や高度なプログラミングは最小限に抑えつつ、「どういうロジックで売買するのか」「どこにリスクがあるのか」を丁寧に確認しながら進めていきます。

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

MT4自動売買の全体像をまず押さえる

最初に、MT4で自動売買を動かす流れをざっくり押さえておきます。流れが分かっていると、途中でつまずいたときに「自分はいまどこで止まっているのか」が把握しやすくなります。

MT4のEAによる自動売買は、次のようなステップで構成されます。

① 売買ルール(ロジック)を決める
② そのルールをMQL4という言語でEAとして実装する
③ MT4のテスター画面でバックテストして挙動と成績を確認する
④ 実弾を入れる前にデモ口座でフォワードテストを行う
⑤ 問題なければ少額からリアル口座で運用を開始する

今回の記事では、とくに①と②の部分を丁寧に分解し、初心者でも迷わないように解説します。

今回作るEAの売買コンセプト

まずは、今回作るEAの「売買アイデア」を明確にします。インジケーターを闇雲に並べるのではなく、「どういう相場でどう利益を狙うのか」を言語化することが重要です。

コンセプト:トレンド方向に押し目・戻り目でエントリー

今回のEAは、移動平均線で大きな流れ(トレンド方向)を確認し、RSIで「一時的に逆行したタイミング(押し目・戻り目)」をとらえてエントリーするという、非常にベーシックなトレンドフォロー戦略です。

具体的には、以下のようなイメージです。

・短期足では上下に振れるが、中期的には上昇トレンドが続いている
・一時的に売りが強くなりRSIが30近辺まで下がる
・しかし移動平均線はまだ上向きで、価格も移動平均線より上で推移している
→「トレンドは続いているが、一時的に売られ過ぎ」と判断して押し目買い

逆に、下降トレンドの中でRSIが70近辺まで上がったところを戻り売りのチャンスとみなします。

使用するインジケーターの設定

EAで使うインジケーターのパラメータは、最初から奇をてらわず、まずは王道設定からスタートするのがポイントです。今回は、次の設定を使います。

移動平均線(SMAもしくはEMA)

・期間:50
・種別:SMA(単純移動平均線)でもEMAでもよいが、まずはSMAで十分
・適用価格:Close(終値)

期間50は、1時間足なら約2日分、4時間足なら約1週間分、日足なら約2ヶ月分というイメージで、中期のトレンドを捉えやすい設定です。

RSI(Relative Strength Index)

・期間:14
・買われ過ぎ水準:70
・売られ過ぎ水準:30

RSI14は多くのトレーダーが使う「標準設定」です。シンプルに、RSIが30を下回ってから上に戻る動きが出たら「押し目買い候補」、RSIが70を上回ってから下に戻る動きが出たら「戻り売り候補」として扱います。

EAに落とし込む売買ルールの詳細

次に、このインジケーター設定をもとに、EAが自動売買で実行するルールをはっきり定義します。ここを言語化しておくと、コードを書くときに迷いが少なくなります。

買いエントリー条件

買いエントリーの条件を、次のように定めます。

1)終値が移動平均線50の上にある(トレンドは上方向)
2)RSIがいったん30を下抜け、その後30を上抜けた(売られ過ぎからの回復)
3)現在ポジションを持っていない

この3つがそろったら買いエントリーします。「いったん30を下抜けてから30を上抜ける」という条件にすることで、「すでに売られ過ぎゾーンから反転し始めたタイミング」を狙うイメージになります。

売りエントリー条件

売りエントリーの条件は、買いの逆です。

1)終値が移動平均線50の下にある(トレンドは下方向)
2)RSIがいったん70を上抜け、その後70を下抜けた(買われ過ぎからの反転)
3)現在ポジションを持っていない

こちらも、「買われ過ぎのピークをつけてから戻り始めたタイミング」を狙うイメージです。

決済ルール(利確・損切り)

エントリー条件と同じくらい重要なのがエグジット(決済)のルールです。今回の記事では、初心者にも分かりやすいように「固定幅の損切り・利確」と「時間による決済」の2つを採用します。

・損切り幅:エントリー価格から30pips逆行したら損切り
・利確幅:エントリー価格から60pips有利に進んだら利確
・最大保有時間:エントリーから48時間経過したら成行決済

このルールだと、勝ちトレード1回で負けトレード2回をカバーできる「リスクリワード1:2」の設計になります。もちろん、通貨ペアや時間足によって最適値は変わるため、バックテストを通じて調整していきます。

MQL4でEAを書くときの基本構造

売買ルールが固まったら、次はMQL4でEAを書くステップです。ここではコード全文ではなく、構造の考え方を押さえることに重点を置きます。

EAの基本構造

MQL4のEAは、大きく次の3つのパートで構成されます。

1)OnInit():EAの初期化処理を書く部分
2)OnDeinit():EAをチャートから外すときの後片付けを書く部分
3)OnTick():ティックが来るたびに実行されるメインロジック

自動売買ロジックのほとんどは、OnTick()の中に記述します。ここに、「インジケーターの値を取得する処理」「売買条件をチェックする処理」「エントリー・決済の注文を出す処理」をまとめていきます。

インジケーター値を取得する

移動平均線とRSIの値は、それぞれiMA()iRSI()という関数で取得できます。たとえば、直近確定足の移動平均線50の値は次のように書けます。

double ma = iMA(NULL, PERIOD_H1, 50, 0, MODE_SMA, PRICE_CLOSE, 1);

ここで、最後の「1」は「1本前の確定足」を意味します。同様にRSIも、iRSI()で取得し、1本前・2本前の値を比較することで「30を下抜けてから上抜けたか」を判定します。

エントリー条件の実装イメージ

買いエントリー条件を実装する場合の考え方を、擬似コードで示します。


if (ポジションなし) {
  ma = 移動平均線50の値;
  rsi_now = 現在足のRSI14;
  rsi_prev = 1本前のRSI14;
  if (終値 > ma) {
    if (rsi_prev <= 30 && rsi_now > 30) {
      買いエントリー;
    }
  }
}

売りエントリーも同様に、「終値 < ma かつ RSIが70を上から下に抜けたタイミング」で売りエントリーします。

リスク管理とロットサイズの決め方

EAを動かすうえで、ロットサイズの決め方は非常に重要です。どんな優れたロジックでも、ロットを大きくしすぎれば一時的なドローダウンで口座が耐えきれません。

1トレードあたりの許容リスクを決める

まず、「1回のトレードで口座残高の何%までの損失を許容するか」を決めます。初心者であれば、1トレードあたり口座残高の1%以内に抑えるのが無難です。

例えば口座残高が10万円で、1トレードあたりの許容損失を1%(1,000円)に設定するとします。損切り幅が30pipsであれば、1pipsあたりの価値が約33円になるようにロットを調整する必要があります。通貨ペアや口座仕様によってpipsの価値は変わるため、事前に計算式を確認しておきましょう。

ロットを固定しないメリット

ロットを固定してしまうと、口座残高が増えても減ってもリスクの割合が変動し、長期的な資金管理が難しくなります。一方、「口座残高 × リスク% ÷ 損切りpips ÷ 1pips価値」の式でロットを毎回計算すれば、常に一定のリスク割合で運用できます。

バックテストで必ず確認すべきポイント

EAが完成したら、いきなりリアル運用に移るのではなく、まずはストラテジーテスターでバックテストを行います。ここでは「どの数字を見るべきか」を整理します。

1. 期間と通貨ペア

・最初は1つの通貨ペア(例:EURUSD)に絞る
・期間は少なくとも数年分を確認する(例:2018年〜直近)
・時間足はロジックに合わせて選ぶ(今回は1時間足や4時間足が現実的)

2. 損益カーブの形

純利益がプラスであること以上に、「損益カーブが右肩上がりで大きな崩れがないか」を確認します。途中で大きなドローダウンが何度も出るようなら、ロジックやパラメータを見直す必要があります。

3. ドローダウンと勝率・リスクリワード

・最大ドローダウンが口座残高の何%か
・勝率に比べてリスクリワードは適切か(例:勝率40%でもリスクリワード1:3なら十分戦える)

今回のようなトレンドフォロー系EAは、レンジ相場で連敗が出やすいため、リスクリワードをやや有利にしておくことが重要です。

実運用前のフォワードテスト

バックテストだけでは、スプレッド拡大時の挙動や、約定のズレなどを十分に反映しきれません。そのため、実際のレート配信に近い環境でフォワードテストを行うことが大切です。

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

・EAをデモ口座にセットして数週間〜数ヶ月動かす
・バックテストの傾向と同じような損益パターンになるか確認する
・想定外のタイミングでエントリー・決済していないかをチェックする

ここで明らかにバックテストと違う挙動をするようであれば、タイムフレームの設定やインジケーター取得のロジックなどに問題がないかコードを見直します。

少額リアル運用への移行

デモでのフォワードテストで大きな問題がなければ、次は少額のリアル資金で運用を開始します。いきなり全資金を投入するのではなく、「このEAが完全に止まっても生活に影響のない金額」から始めることが重要です。

また、リアル運用開始直後は、1日1回はMT4の稼働状況を確認し、VPSや回線トラブルが起きていないかをチェックします。

実際の相場環境に合わせてチューニングする

EAは一度作って終わりではありません。相場環境が変われば、インジケーターのパラメータやロット設計も見直す必要があります。

トレンド相場とレンジ相場を見分ける工夫

今回のEAはトレンドフォロー型なので、長期的にレンジが続く相場では苦戦しやすくなります。簡単な工夫として、ATRやボリンジャーバンドの幅を参考に、「一定以上のボラティリティがあるときだけ稼働する」ようなフィルターを追加するのも有効です。

時間帯フィルターの導入

FX市場は時間帯によって特徴が異なります。たとえば、ロンドン市場〜ニューヨーク市場が重なる時間帯は値動きが大きくなりやすく、アジア時間は比較的レンジになりやすい傾向があります。EAに「エントリーしてよい時間帯」を制限するだけでも、無駄なエントリーを減らせる場合があります。

まとめ:シンプルなロジックから始めて、徐々に精度を高める

今回は、移動平均線とRSIという基本的なインジケーターを組み合わせたシンプルなEAを題材に、MT4で自動売買を行うまでの流れを解説しました。

・まずは売買コンセプトを言語化する
・移動平均線でトレンド方向を、RSIで押し目・戻り目をとらえる
・MQL4でインジケーター値を取得し、エントリー条件と決済条件をコード化する
・リスクを1トレードあたり口座の数%に抑え、ロットを調整する
・バックテスト → デモでのフォワードテスト → 少額リアルの順で段階的に進める

この流れを一度体験すれば、MACDやボリンジャーバンド、ストキャスティクスなど別のインジケーターを組み合わせたEAにも応用できます。最初はシンプルなロジックから始めて、経験を積みながら少しずつ改良を重ねていくことが、自動売買で長く相場と付き合うための現実的なアプローチです。

p-nuts

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

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

コメント

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