本記事では、FX初心者でも取り組みやすい「MT4で自動売買を行う具体的な方法」と「RSIと移動平均線を使ったシンプルなEA(エキスパートアドバイザー)の作り方」を、できるだけわかりやすく解説します。難しい数学や高度なプログラミング知識は必要ありません。MT4の基本操作と、インジケーターの意味を一つずつ押さえながら、最終的に自分の手でEAを組み上げることを目標にします。
MT4自動売買の全体像をイメージする
まずは、MT4で自動売買を行うときの全体像をざっくりイメージしておきます。流れは大きく分けて次の4ステップです。
1. MT4を用意し、自動売買の設定が可能な状態にする
2. どのようなルールで売買するか(売買ロジック)を決める
3. ルールをMQL4という言語でEAとして実装する
4. 過去チャートで検証し、問題なければデモまたは少額で運用する
裁量トレードと比べて、感情のブレを抑えられる一方、「どんなルールで動かすのか」「そのルールに優位性がありそうか」を自分で考える必要があります。本記事では、初心者でも理解しやすい「RSIと移動平均線を組み合わせた逆張り寄りの押し目買い・戻り売り戦略」を題材に、EA化のプロセスを見ていきます。
MT4とEAの基本用語を整理する
EA作成に入る前に、最低限押さえておきたい用語を整理します。
エキスパートアドバイザー(EA)とは
EAは、MT4上で動作する自動売買プログラムです。チャートに適用すると、事前に組み込んだ条件に従って「新規注文」「決済注文」などを自動的に行います。基本的には、次のような処理を繰り返します。
・新しい足が確定する、またはティックが更新される
・インジケーターの値を取得する
・売買ルールに一致しているか判定する
・一致していればエントリー/決済/ロット調整などを実行する
インジケーターとは
インジケーターは、過去の価格や出来高をもとに算出された指標です。トレンドの強さや相場の加熱感、ボラティリティなど、価格そのものだけでは見えにくい情報を補助的に教えてくれます。本記事では次の2つを使います。
・移動平均線(Moving Average):値動きの方向をなめらかに示すトレンド系インジケーター
・RSI(Relative Strength Index):買われ過ぎ・売られ過ぎの度合いを示すオシレーター系インジケーター
MQL4とは
MQL4は、MT4専用のプログラミング言語です。C言語に似た文法で、EAやインジケーター、スクリプトを作成できます。初めて触る方でも、売買ルールがシンプルであれば、基本的なサンプルコードを応用するだけで動くEAを作ることが可能です。
題材とするEA戦略の概要
ここからは、実際にEA化する売買ルールを具体的に定義します。題材とするのは、トレンド方向に沿った押し目買い・戻り売りを狙いつつ、RSIで短期的な行き過ぎを測るシンプルな戦略です。
売買ルールのイメージ
買いエントリーの条件:
1. 現在価格が期間50の移動平均線より上にある(上昇トレンドとみなす)
2. RSI(期間14)が30以下まで低下し、その後30を上回って反発したタイミング
3. 直近の高値を損切り幅と比較して、リスクリワードが一定以上になる位置のみエントリー
売りエントリーの条件はその逆で、価格が移動平均線より下で推移しているときに、RSIが70以上まで上昇した後に70を割り込んだタイミングでエントリーするイメージです。
時間足と通貨ペアの例
時間足は、最初は1時間足(H1)など、極端に短すぎないものを推奨します。通貨ペアは、スプレッドが比較的狭く、値動きが素直なメジャー通貨(例:EURUSD、USDJPY)から始めると検証しやすいです。どの時間足・通貨ペアでも動くように、後でパラメーター化しておくと応用が効きます。
MT4でEA作成環境を整える
EAを自分で組むには、MT4に同梱されている「メタエディター(MetaEditor)」を使います。
MetaEditorの起動
1. MT4を起動する
2. 上部メニューから「ツール」→「MetaQuotes言語エディタ」をクリック
3. もしくは、ツールバーの「MetaEditor」アイコンをクリック
別ウィンドウとしてMetaEditorが立ち上がり、ここでEAの新規作成や編集を行います。
新しいEAファイルの作成
MetaEditorを開いたら、次の手順で新しいEAのテンプレートを作成します。
1. メニューから「ファイル」→「新規作成」を選択
2. 「エキスパートアドバイザ(テンプレート)」を選び、「次へ」
3. 名前を「RSI_MA_EA」など、わかりやすいものにする
4. 著作権やリンクは任意で入力し、「完了」を押す
これで、基本的な構造を持つEAファイルが自動生成されます。中身は後で書き換えていきますが、OnInit、OnDeinit、OnTickといった関数が既に定義されているはずです。
インジケーターを使ったロジックの組み立て方
EAでは、「インジケーターの値を取得する関数」が用意されています。移動平均線にはiMA、RSIにはiRSIなどの組み込み関数を使います。ロジックを組むときの手順は、次のように分解すると理解しやすくなります。
ステップ1:トレンド方向の判定
移動平均線を使って、現在が上昇トレンドか下降トレンドかをざっくり判定します。例えば:
・終値が期間50SMAより上 → 上昇トレンド
・終値が期間50SMAより下 → 下降トレンド
EAでは、最新の確定足(通常は1本前のバー)について、終値と移動平均の値を比較します。これにより、「今は買いだけを狙うべきか、売りだけを狙うべきか」を機械的に決めることができます。
ステップ2:RSIで押し目・戻りを測る
RSIは0〜100の範囲で推移し、一般的には30以下で売られ過ぎ、70以上で買われ過ぎと言われます。本記事の戦略では、上昇トレンド中にRSIが一時的に30以下まで下落し、再び30を上回ったタイミングを「押し目の後の反発」とみなします。
具体的には:
・RSIが30未満になった履歴フラグを立てる
・その後、RSIが30を上回ったら買いエントリー条件を満たしたと判定
このように、数値そのものだけでなく「どこからどこへ抜けたか」という状態変化をコードで表現するのがポイントです。
ステップ3:エントリーと決済の設計
エントリー条件が揃ったら即座に注文を出すのか、それとも値幅のフィルターをかけるのか、決済は固定幅にするのかトレーリングにするのか、といった設計も重要です。初心者向けには、次のようなシンプルな設計から始めるのがおすすめです。
・損切り(SL):固定pips(例:20pips)
・利確(TP):損切りの2倍(例:40pips)
・同時保有ポジション数:通貨ペアごとに1ポジションのみ
このようにしておくと、ロジックの検証もしやすく、リスク管理も比較的シンプルになります。
EAコードの基本構造を理解する
MQL4のEAは、ざっくりと以下のような構造になっています。
・グローバル変数領域:パラメーターや内部フラグを定義
・OnInit():EA起動時に一度だけ呼ばれる初期化処理
・OnDeinit():EA終了時に呼ばれる後処理
・OnTick():新しいティックが来るたびに実行されるメイン処理
売買ロジックの大半はOnTick()内に書かれますが、コードを読みやすくするために、エントリー判定や決済処理を別の関数として切り出すとメンテナンスしやすくなります。
パラメーター化の重要性
移動平均線の期間やRSIの閾値、損切り・利確幅などは、後から調整したくなる可能性が高いです。そのため、externやinput変数として宣言しておき、MT4のプロパティ画面から変更できるようにしておくと便利です。
RSI×移動平均線EAの設計例
ここでは、ロジックをもう少し具体的に落とし込みます。
入力パラメーター例
・Lots:取引ロット数(例:0.1)
・StopLoss:損切り幅(pips)
・TakeProfit:利確幅(pips)
・RSIPeriod:RSI期間(例:14)
・RSIBuyLevel:買い検討のRSIライン(例:30)
・RSISellLevel:売り検討のRSIライン(例:70)
・MAPeriod:移動平均線期間(例:50)
・Timeframe:分析に用いる時間足(例:PERIOD_H1)
買いエントリー条件の擬似コード
1. 既に買いポジションを保有していないか確認
2. 最新の確定足において、終値が移動平均線より上かどうか確認
3. RSIが直近でRSIBuyLevel未満になった履歴があるか確認
4. 現在のRSIがRSIBuyLevelを上抜けたタイミングなら買いエントリー
売りエントリーは上記の逆で、下降トレンド(終値が移動平均線より下)+RSIの上抜けからの下抜けを条件にします。
バックテストとパラメーター調整のポイント
EAを作ったら、いきなりリアル口座で動かすのではなく、必ずバックテストを行います。MT4にはストラテジーテスターが搭載されており、過去データを使ってEAの成績を確認できます。
バックテストの手順
1. MT4上部メニューの「表示」→「ストラテジーテスター」を開く
2. エキスパートアドバイザに作成したEAを選択
3. 通貨ペアと時間足、テスト期間を指定
4. モデリング精度やスプレッドを設定(最初はデフォルトでも可)
5. 「スタート」を押して結果を確認
損益曲線や勝率、プロフィットファクター、最大ドローダウンなどを確認し、極端な偏りがないか、特定の期間でのみ偏って勝っていないかをチェックします。
過剰最適化に注意する
バックテストでいい数字を出そうとして、パラメーターを細かくいじり続けると、過去のデータにだけ都合よくフィットした「過剰最適化EA」になってしまいます。パラメーターの刻みを適度に粗くする、検証期間を分けてアウトオブサンプル(未使用期間)で確かめる、といった工夫を行いましょう。
デモ口座と小ロットからの運用
バックテストである程度の一貫性が確認できたら、次はデモ口座でのフォワードテストです。実際のレート配信に近い環境でEAを動かすことで、スプレッドの変化や約定のズレなど、バックテストでは見えにくい要素も確認できます。
フォワードテストで見るポイント
・バックテストと比べて取引回数や損益に大きな差がないか
・想定していないタイミングでエントリーや決済をしていないか
・指標発表時など、ボラティリティ急上昇局面で挙動が乱れていないか
問題がなければ、リアル口座でも最初は可能な限り小さなロットでスタートし、想定どおりの挙動を続けることを確認しながら調整していくのが堅実です。
よくあるつまずきポイントと対処のヒント
EA作りを始めたばかりの頃に多いつまずきとして、次のようなものがあります。
1. エントリーしない / し過ぎる
条件が厳しすぎるとほとんどエントリーしなくなり、逆に条件が緩すぎると値動きを無視して頻繁に売買してしまいます。エントリー条件のうち、どれを緩めたら回数が増えそうか、どれを追加したらノイズが減りそうかを一つずつ検証すると改善の方向性が見えやすくなります。
2. トレンドと逆方向にポジションを取り続ける
RSIなどのオシレーターだけを頼りにすると、強いトレンド相場で逆張りを繰り返してしまい、大きな含み損を抱えることがあります。移動平均線などのトレンド系インジケーターを組み合わせ、「トレンド方向に沿った押し目・戻りだけを狙う」というフィルターを入れることで、この問題を緩和できます。
3. 損切りと利確のバランスが悪い
損切り幅が狭すぎるとノイズで刈られやすくなり、広すぎると一度の損失が大きくなります。利確幅も同様で、相場のボラティリティに対して現実的な幅を設定する必要があります。平均的な1日の値動き(ATRなど)を参考にしつつ、損切りと利確の比率が1:1を大きく下回らないように意識すると、極端なバランスの悪さは避けやすくなります。
MT4自動売買を学ぶうえでの心構え
EAや自動売買は「放っておくだけで勝てる魔法の箱」ではありません。あくまで、自分で決めたルールを忠実に実行してくれる「ロボット」に過ぎません。ロボット自体の精度を高めることも大切ですが、それ以上に、どのような相場環境でどう振る舞うべきかという考え方を少しずつ磨いていくことが重要です。
小さなロットから検証と改善を繰り返し、結果だけでなくプロセスを記録していくことで、自分なりの「勝ちやすいパターン」「避けるべきパターン」が少しずつ見えてきます。本記事で紹介したRSIと移動平均線を使ったEAは、その入り口として最適な題材の一つです。
まとめ:まずは一つのシンプルEAを完成させる
本記事では、MT4で自動売買を始めるための全体像から、RSIと移動平均線を使ったシンプルEAの設計方法、バックテストとフォワードテストの流れまでを解説しました。重要なのは、複雑なロジックをいきなり追い求めるのではなく、「まずは一つのEAを最後まで作りきり、検証できる状態にする」ことです。
一つのEAを通して、インジケーターの意味や相場環境による得意・不得意、パラメーター調整の考え方など、多くの学びが得られます。その上で、別のインジケーターを組み合わせたり、時間足を変えたりしながら、自分のスタイルに合った自動売買戦略を少しずつ育てていくことができます。
MT4とEA作成は、最初のハードルこそありますが、一度流れを掴めば、トレードの視野を大きく広げてくれる強力なツールになります。焦らず一歩ずつ、シンプルな戦略から取り組んでいきましょう。


コメント