MT4で自動売買を始めたいと思っても、「プログラミングなんて無理」と感じてしまう方は多いです。しかし、基本的な考え方さえつかめば、移動平均線やRSIといった身近なインジケーターを組み合わせて、自分の相場観をEA(エキスパートアドバイザー)という形に落とし込むことは十分可能です。
この記事では、「MT4で自動売買する仕組み」「EAを自分で組むときの考え方」「移動平均線・RSI・MACDなどの基本インジケーターを使ったシンプルEA例」「実際に運用するときの注意点」までを、一連の流れとして解説します。専門用語を極力かみ砕きながら、初めてEAを触る方でも全体像をイメージできるように構成しています。
- MT4自動売買の全体像:EAが何をしているのか
- EAを自分で組むときの考え方:いきなりコードから入らない
- 基本インジケーターの役割を理解する:移動平均線・RSI・MACD
- 具体例1:移動平均線クロスを使ったシンプルEA
- 具体例2:トレンド+RSIで押し目買い・戻り売りをねらうEA
- 具体例3:MACDを使った勢い重視のブレイクアウトEA
- EAコードの基本構造:どこにロジックを書くのか
- リスク管理とロット調整:EAでも最重要テーマ
- バックテストで戦略のイメージをつかむ
- デモ口座でのフォワードテスト:リアルタイムの動きを確認する
- よくある失敗パターンと避けるためのチェックポイント
- まとめ:自分の相場観を、EAという形に翻訳してみる
MT4自動売買の全体像:EAが何をしているのか
まずは、「そもそもEAとは何か」を整理します。EAは、MT4に読み込ませるプログラムファイルのことで、チャート上の価格データやインジケーターの値をもとに、自動で売買シグナルを判断し、条件を満たせば注文を発注・決済してくれます。人間がチャートを見て「ここは買いだ」と判断している作業を、コードで機械的なルールに変換したもの、と考えると分かりやすいです。
EAが実行している主な処理は、次の4つに分解できます。
1. チャートの時間足や通貨ペアなど、対象市場の情報を取得すること。
2. 移動平均線やRSIなどのインジケーター値を計算し、現在の相場状況を数値化すること。
3. 「こうなったら買い/売り」といった売買ルールをチェックし、条件がそろったかどうかを判断すること。
4. 条件がそろったら発注し、あらかじめ決めた損切り・利確条件でポジションをクローズすること。
これらを、24時間休むことなく、感情抜きで淡々と繰り返してくれるのがEAです。つまり、自動売買を作るとは「自分の売買ルールをこの4ステップの中に落とし込む作業」と言い換えられます。
EAを自分で組むときの考え方:いきなりコードから入らない
EA作りでつまずきやすいのは、「最初からコードを書こうとすること」です。実際には、コードを書き始める前にやっておくべき設計作業がいくつかあります。この設計が曖昧なままプログラムを書き出すと、「条件がぐちゃぐちゃで何を検証しているのか分からないEA」になり、検証しても得られるものが少なくなってしまいます。
まずは、紙とペンでも良いので、次のような項目を日本語で書き出してみてください。
・どの時間足でトレードするか(例:5分足、1時間足、4時間足など)
・どの通貨ペアを想定するか(例:ドル円、ユーロドルなど)
・トレンドフォロー型なのか、レンジ逆張り型なのか
・エントリー条件は何か(具体的にインジケーター名と条件を書く)
・決済条件(利確と損切り)はどうするのか
・1回のトレードで、口座残高の何%をリスクにさらすのか
このレベルまで日本語で書ければ、あとはそれをMQL4の文法に翻訳していくだけです。初心者のうちは「できるだけシンプルな条件」に絞り込むことが重要です。例えば、最初は「長期・短期の2本の移動平均線だけ」で構わないので、「どのような場面でどちらの方向に賭けるのか」を明確化しましょう。
基本インジケーターの役割を理解する:移動平均線・RSI・MACD
EAを作るときによく使われるのが、移動平均線・RSI・MACDといった基本インジケーターです。それぞれの役割をざっくり整理しておきます。
移動平均線(MA)は、一定期間の終値の平均値を線でつないだものです。トレンドの方向や強さをつかむのに向いており、「短期線が長期線を上抜けしたら上昇トレンドの初動かもしれない」といった判断に使われます。
RSIは、一定期間の上げ幅と下げ幅のバランスを指標化したオシレーターです。一般的には70以上で買われ過ぎ、30以下で売られ過ぎと解釈されます。トレンドの転換余地や一時的な行き過ぎを測るのに役立ちます。
MACDは、2本の移動平均線の差をベースにしたトレンド系オシレーターです。MACDラインとシグナルラインのクロス、ゼロラインの位置関係などから、トレンドの開始や勢いの変化を読み取ります。
これらを組み合わせることで、「トレンド方向は移動平均線で見る」「エントリータイミングはRSIやMACDのシグナルで絞り込む」といった役割分担が可能になります。EAでは、この役割をコードで明確に記述します。
具体例1:移動平均線クロスを使ったシンプルEA
最初の例として、短期移動平均線と長期移動平均線のクロスを使ったシンプルなトレンドフォローEAを考えます。コンセプトは次のようになります。
・時間足:1時間足
・通貨ペア:ドル円(USDJPY)
・インジケーター:短期MA(期間20)、長期MA(期間80)
・エントリー:短期MAが長期MAを下から上に抜けたら買い、上から下に抜けたら売り
・決済:一定pipsの利確と損切り、または逆シグナルが出たらクローズ
例えば「買い」の場合、EAのロジックは次のようになります。
1. 現在の足(確定足)の20期間MAと80期間MAを取得する。
2. 1本前の足の20期間MAと80期間MAも取得する。
3. 1本前では「短期MA < 長期MA」、現在は「短期MA >= 長期MA」であれば、ゴールデンクロスと判定して買いエントリー。
4. 既にポジションを持っている場合は、新規エントリーを行わない(ダブルポジションを避ける)。
このように「1本前」と「今」の状態を比較するのは、EAでシグナルを判定するときの基本パターンです。リアルタイムで変わる未確定足ではなく、確定足の値だけを使うことで、「テストしたときとリアル運用で条件がズレる」という問題を減らせます。
具体例2:トレンド+RSIで押し目買い・戻り売りをねらうEA
次に、移動平均線でトレンド方向を決め、RSIで押し目・戻りを測ってエントリーするEAを考えます。コンセプトは次のとおりです。
・時間足:4時間足
・通貨ペア:トレンドが出やすい主要通貨ペア(例:EURJPY、GBPUSDなど)
・トレンド判定:期間100の移動平均線よりも価格が上にあれば上昇トレンド、下にあれば下降トレンド
・オシレーター:RSI(期間14)
・上昇トレンド時の押し目買い:RSIが30以下まで下がったあと、RSIが30を再度上抜けしたタイミングで買い
・下降トレンド時の戻り売り:RSIが70以上まで上がったあと、RSIが70を再度下抜けしたタイミングで売り
実際のEAロジックでは、「RSIが閾値を抜けた瞬間」をどのように定義するかが重要です。具体的には、
・1本前の足のRSIが30未満で、現在の足のRSIが30以上になったら「押し目完了」とみなす
・1本前の足のRSIが70より上で、現在の足のRSIが70以下になったら「戻り完了」とみなす
といった具合に、「前の状態」と「今の状態」の両方を見て判定します。これにより、単に30付近を行き来しているだけのノイズではなく、「一度大きく売られたあと、買い戻しが入ってきた局面」などを抽出しやすくなります。
このEAは、「トレンド方向には素直についていきたいが、高値掴み・安値投げは避けたい」という考え方に基づいています。トレンドは移動平均線でざっくりと判定し、その中で一時的な行き過ぎをRSIで測るイメージです。
具体例3:MACDを使った勢い重視のブレイクアウトEA
3つ目の例として、MACDを使ったモメンタム型のブレイクアウトEAを挙げます。コンセプトは次のようになります。
・時間足:1時間足
・通貨ペア:ボラティリティがある程度ある通貨ペア(例:GBPJPYなど)
・MACD設定:標準の12・26・9
・エントリー条件:直近の高値/安値のブレイクと同時に、MACDラインがゼロラインを抜ける方向に動いていること
具体的には、買いの場合は次のような条件になります。
1. 過去N本(例:過去24本)の高値の中で、もっとも高い価格を直近高値とする。
2. 現在の足で、その直近高値を終値ベースで上抜けしたことを確認する。
3. 同じ足で、MACDラインがゼロラインより上にあり、かつ1本前より値が大きくなっている(勢いが上向き)ことを確認する。
4. 条件を満たしたら買いエントリー。
売りの場合はこれを逆にした条件です。MACDはトレンドの勢いを測るのに向いているため、「単なる高値更新」ではなく「勢いを伴った高値ブレイク」に絞り込みやすくなります。EAにすることで、このような定量的条件をブレずに適用し続けることができます。
EAコードの基本構造:どこにロジックを書くのか
MT4のEAは、MQL4という言語で記述しますが、基本構造はテンプレートが決まっています。代表的な関数は次の3つです。
・OnInit():EAをチャートにセットしたときに一度だけ呼ばれる初期化処理
・OnDeinit():EAを外すときに呼ばれる終了処理
・OnTick():価格が変動するたびに呼ばれるメイン処理
売買ロジックの多くはOnTick()の中に記述します。ただし、そのまま書いていくと読みづらくなるため、多くの場合は次のように機能ごとに関数を分けます。
・インジケーターの値を取得する関数(例:double GetMA(int period))
・現在ポジションの有無を判定する関数
・エントリー条件をチェックする関数
・決済条件をチェックする関数
こうして分割しておけば、「ロジックを変えたいときにどこを触れば良いか」が分かりやすくなります。最初はインターネット上のサンプルEAを開いて、「どの関数が何をしているのか」を順番に追ってみるだけでも、構造のイメージがつかめるはずです。
リスク管理とロット調整:EAでも最重要テーマ
EAを作るとき、多くの人がエントリー条件に意識を集中させがちですが、実際の運用で効いてくるのは「どれくらいのロットで、どこに損切りを置くか」といったリスク管理の部分です。
EAでは、次のような手順でリスク管理を組み込むのが一般的です。
1. 1回のトレードで口座残高の何%まで損失を許容するかを決める(例:1%)。
2. エントリーから損切りラインまでの距離(pips)を計算する。
3. 許容損失額 ÷ pips ÷ 1pipsあたりの価値 からロット数を算出する。
例えば、口座残高10万円、1回のトレードで1%=1,000円までリスクを取ると決め、損切り幅を20pipsにした場合、1pipsあたりの価値が100円になるロットが適正ロットとなります。EAでこの計算を自動化すれば、相場のボラティリティに応じてロット調整ができ、1回の損失で口座が大きく削られにくくなります。
また、連敗時にロットを自動で絞るロジックを組み込むことも可能です。例えば、「直近10トレードのうち7回以上負けているときは、ロットを半分にする」といったルールを追加することで、不調期のドローダウンを和らげる工夫も考えられます。
バックテストで戦略のイメージをつかむ
EAを作成したら、いきなりリアル口座で動かすのではなく、まずはMT4のストラテジーテスターでバックテストを行います。過去のチャートデータを使ってEAを仮想的に動かし、「このルールでトレードを続けた場合、資産曲線はどのように推移したか」を確認する作業です。
バックテストを見る際、初心者が注目しがちなのは総利益や勝率ですが、それだけでは不十分です。むしろ重要なのは、
・最大ドローダウン(どれだけ資産が減る局面があったか)
・連敗数(何回連続で負ける可能性があるか)
・1トレードあたりの平均損失と平均利益のバランス
といったリスク側の指標です。例えば、勝率が高くても、たまに発生する大きな損失でそれまでの利益を吹き飛ばしてしまうEAは、運用するには精神的にも難易度が高くなります。
バックテスト結果の資産曲線を見て、「将来自分がこのカーブに乗るとしたら耐えられるか」をイメージすることが大切です。EAは機械的にトレードしてくれますが、運用ボタンを押すのは自分自身です。納得感のある結果が出ている戦略ほど、長く継続して運用しやすくなります。
デモ口座でのフォワードテスト:リアルタイムの動きを確認する
バックテストである程度手応えを感じたら、次はデモ口座でフォワードテストを行います。バックテストはあくまで過去データに対する成績であり、リアルタイムの値動きでは細かな約定タイミングなどが変わることもあります。デモ口座で一定期間動かすことで、
・実際の約定のズレ具合
・スプレッド拡大時の挙動
・指標発表など急変動時の動き
などを確認できます。また、「自分の生活リズムとEAの動きが合っているか」という現実的な観点も重要です。例えば、深夜に頻繁にポジションを持つ戦略をリアル資金で運用すると、どうしても気になって寝不足になってしまうこともあります。
EAの良いところは、基本的には放置してもトレードを続けてくれる点ですが、それでも時々はログや取引履歴をチェックして、「意図しない動きをしていないか」「想定どおりのロジックになっているか」を確認する習慣を持つと安心です。
よくある失敗パターンと避けるためのチェックポイント
最後に、EAを自作して運用する際によくある失敗パターンと、その回避のためのチェックポイントをまとめます。
1つ目は、「過剰最適化されたEAにしてしまう」ことです。バックテストの成績をよく見せるために、パラメーターを何度も微調整していると、特定期間の値動きだけに過度に適応したEAになりがちです。このようなEAは、テスト期間では素晴らしい成績を出しても、別の期間やリアル運用では急にパフォーマンスが崩れることが多くなります。
これを避けるには、「テスト期間」とは別に「検証用期間」を用意し、テスト期間で調整したパラメーターをそのまま検証用期間に適用して成績を確認する、という二段階のチェックを行う方法があります。両方の期間でそれなりに納得できる結果が出ていれば、過剰最適化のリスクはある程度抑えられます。
2つ目は、「複数のEAを同時に動かしすぎる」ことです。最初は1つのEAの動きをしっかり把握する方が良く、慣れないうちから複数戦略を同時稼働させると、どのEAが利益に貢献しているのか、どのEAが足を引っ張っているのか分かりづらくなります。まずは1つのシンプルなEAから始め、その挙動を理解したうえで徐々にレパートリーを増やす方が、経験値が蓄積しやすくなります。
3つ目は、「相場環境の変化に無関心になる」ことです。EAは決められたルールに従って機械的にトレードしますが、相場環境は常に変化していきます。トレンドが出やすい相場ではトレンドフォロー型EAが機能しやすく、レンジが多い相場では逆張り型EAの出番が増えるかもしれません。EA任せにするのではなく、「今の相場は自分のEAにとって追い風か向かい風か」を定期的に振り返る視点を持つと、戦略の見直しタイミングもつかみやすくなります。
まとめ:自分の相場観を、EAという形に翻訳してみる
MT4で自動売買を行うためのEA作りは、難しく考える必要はありません。移動平均線・RSI・MACDといった基本インジケーターを使い、時間足・通貨ペア・エントリー条件・決済条件・リスク管理をシンプルに組み合わせることから始めれば十分です。
大切なのは、最初から完璧なEAを求めないことです。まずは「自分が裁量で行っているトレード」をできる範囲でルール化し、それをMQL4で表現してみるところからスタートしてみてください。その過程で、「この条件は意味が薄い」「ここをもう少し具体化した方が良い」といった気づきが得られます。EA作りは、単に自動売買を実現するためだけでなく、自分のトレードスタイルを客観的に見直すための強力なツールにもなり得ます。
まずは、移動平均線のクロスやRSIの押し目・戻りシグナルといった、シンプルなロジックから小さく試していきましょう。バックテストとデモ口座での検証を通じて、自分なりに納得できるEAが少しずつ形になっていくはずです。


コメント