本記事では、MT4(MetaTrader4)で移動平均線・RSI・MACDといった基本インジケーターを使い、自分でシンプルなEA(自動売買プログラム)を組み立てる考え方を解説します。裁量トレードだけに依存せず、「ルールをコードに落とし込む」という発想を身につけることで、売買判断のブレを減らし、検証しやすい取引スタイルを目指すことができます。
難しい数学や高度なプログラミングができなくても、MT4の基本構造とインジケーターの考え方を押さえれば、シンプルなEAから十分にスタートできます。ここでは投資初心者でも理解しやすいように、できるだけ具体例を交えながら丁寧に説明していきます。
MT4のEAとインジケーターEAの位置づけ
まず、MT4での自動売買の仕組みを大まかに整理しておきます。MT4では、以下のようなプログラムが動作します。
・インジケーター(Indicator):チャート上に線やサインを描画するためのプログラムです。売買は行わず、「判断材料」を提供します。
・エキスパートアドバイザー(EA):実際に発注・決済を行う自動売買プログラムです。インジケーターの値やプライスの動きをもとに、売買ルールを実行します。
本記事で扱うのは、「基本インジケーターのシグナルをもとに売買するEA」です。たとえば、以下のようなイメージです。
・移動平均線の短期線が長期線を上抜けしたら買いエントリー
・RSIが30を下回ったら買い、70を上回ったら売り
・MACDがシグナルを上抜けしたら買い、下抜けしたら売り
インジケーターEAのメリットは、ルールが明確で再現性が高いことです。一方で、どんなルールでも常に勝てるわけではなく、相場環境によって成績が変わる点には必ず注意が必要です。
代表的な基本インジケーターの考え方
EAを作る前に、ベースとなるインジケーターの特徴を整理します。ここでは代表的な3つを取り上げます。
移動平均線(Moving Average)
移動平均線は、過去一定期間の終値の平均値を線として表示したものです。たとえば「20期間移動平均線」は、直近20本分の終値の平均をつないだ線になります。トレンドの方向や強さをざっくり把握するのに使われます。
EAでよく使われるのは、短期線と長期線のクロスです。
・短期線が長期線を上抜け → 上昇トレンドへの転換シグナルとして「買い」
・短期線が長期線を下抜け → 下降トレンドへの転換シグナルとして「売り」
移動平均線は、トレンド相場では比較的素直に機能しやすい一方、レンジ相場ではダマシが増える傾向があります。そのため、EAでは「トレンドフィルター」と併せて使うなどの工夫が重要です。
RSI(Relative Strength Index)
RSIは「買われ過ぎ・売られ過ぎ」を数値で示すオシレーター系インジケーターです。一般的に0〜100の範囲で推移し、70以上で買われ過ぎ、30以下で売られ過ぎと判断されることが多いです。
EAでは、RSIを使った逆張りロジックがよく用いられます。
・RSIが30を下回った → 一時的な売られ過ぎと見て買い(ロング)
・RSIが70を上回った → 一時的な買われ過ぎと見て売り(ショート)
ただし、一方向に強くトレンドが出ている相場では、RSIが長時間高止まり・低止まりすることもあります。その場合、逆張りだけに頼ると損失が膨らみやすくなるため、トレンドの有無を併せて判定する工夫が必要です。
MACD(Moving Average Convergence Divergence)
MACDは2本の移動平均線の差をベースにしたトレンド系インジケーターです。MACD線とシグナル線のクロスや、ゼロラインとの位置関係などからトレンドの強さや転換を把握します。
EAでは、以下のようなロジックがよく使われます。
・MACDがシグナルを下から上に抜けた → 上昇トレンドへの転換として「買い」
・MACDがシグナルを上から下に抜けた → 下降トレンドへの転換として「売り」
MACDはトレンド方向の把握に適しているため、順張りEAを組むときの主役になりやすいインジケーターです。
インジケーターEAを設計する基本ステップ
具体的なEAのコードを書く前に、まず「どのような戦略にしたいか」を紙に書き出すことをおすすめします。設計の基本ステップは次の通りです。
1. 使うインジケーターを決める
移動平均線だけなのか、RSIやMACDを組み合わせるのかを決めます。最初は1〜2種類に絞った方がルールを把握しやすくなります。
2. どの時間足で運用するか
5分足・15分足・1時間足・4時間足など、時間足によってEAの性格は大きく変わります。短期足はエントリー回数が増えますがノイズも多く、長期足はエントリーは減るもののトレンドを捉えやすい特徴があります。
3. 通貨ペアを決める
ボラティリティが高い通貨ペア(例:GBP/JPY)は値動きが大きく、EAの損益も動きやすくなります。最初はスプレッドが比較的狭く、値動きのクセが分かりやすいメジャーペア(EUR/USDやUSD/JPYなど)から始めると検証しやすくなります。
4. エントリー条件と決済条件を明文化する
「何が起きたら買うのか」「どこで利益確定・損切りするのか」を、インジケーターの値やローソク足の状態として具体的に書き出します。曖昧な表現を避け、「もしAかつBなら買い」「もしCになったら決済」という形で整理することが重要です。
具体例1:移動平均線クロスEAの考え方
まずは最も基本的な「短期移動平均線と長期移動平均線のクロス」を使ったEAの考え方を解説します。
ここでは、以下のようなシンプルなルールを例にします。
・期間20の移動平均線(短期)と期間50の移動平均線(長期)を使用
・短期線が長期線を下から上に抜けたら買いエントリー
・短期線が長期線を上から下に抜けたら売りエントリー
・損切りは20pips、利確は40pips
このEAのイメージは、「中期的なトレンド転換を捉えて順張りでついていく」ものです。トレンドが素直に出ている相場では、比較的わかりやすく機能しやすいロジックです。
EA側では、移動平均線の値を取得し、直近2本のローソク足でクロスが起きたかどうかを判定します。MQL4では、iMA()という関数を使って移動平均線の値を取得できます。
// 例:直近バーの20SMAと50SMAを取得
double maFast = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1);
double maSlow = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 1);
double maFastPrev = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 2);
double maSlowPrev = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 2);
// ゴールデンクロス判定(買い)
bool isGoldenCross = (maFastPrev < maSlowPrev) && (maFast > maSlow);
// デッドクロス判定(売り)
bool isDeadCross = (maFastPrev > maSlowPrev) && (maFast < maSlow);
このように、直近と1本前の移動平均線の位置関係を比較することで、「今このタイミングでクロスが発生したかどうか」を判断できます。
具体例2:RSIを使った逆張りEAの考え方
次に、RSIを使った逆張りEAの例です。代表的なアイデアは以下のようになります。
・RSI期間は14
・RSIが30を下回ったら買いエントリーを検討
・RSIが70を上回ったら売りエントリーを検討
・損切り・利確は値幅またはRSIの戻りで行う
EAとしては、iRSI()関数でRSI値を取得し、閾値を超えたタイミングを判定します。
double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, 1);
bool isOversold = (rsi < 30);
bool isOverbought = (rsi > 70);
たとえば、「RSIが30を下回った足が確定したら、その次の足で成行買い」というように、足の確定を待ってからエントリーすることがポイントです。確定前の値で判断すると、ヒゲの動きで一時的に30を割っただけなのに、最終的に戻ってしまうといったダマシが増える傾向があります。
また、RSI逆張りEAはレンジ相場で有利になりやすい一方、強いトレンドが出たときに逆方向のポジションを持ち続けてしまうリスクがあります。そのため、移動平均線でトレンド方向を確認し、「上昇トレンド中は買い方向だけに絞る」などのフィルターを組み合わせる発想も有効です。
具体例3:MACDを使った順張りEAの考え方
MACDを使うEAは、トレンドの方向に素直についていく順張りロジックとして設計しやすいです。ここでは以下のような例を考えます。
・MACDのパラメータは12,26,9(デフォルト)
・MACDがシグナルを下から上に抜けたら買いエントリー
・MACDがシグナルを上から下に抜けたら売りエントリー
・ゼロラインより上なら買いシグナルを優先、下なら売りシグナルを優先
MACDはiMACD()関数で取得できます。
double macdValue, signalValue, histValue;
macdValue = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
signalValue = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1);
double macdPrev = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 2);
double signalPrev = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 2);
bool crossUp = (macdPrev < signalPrev) && (macdValue > signalValue);
bool crossDown = (macdPrev > signalPrev) && (macdValue < signalValue);
MACDがゼロラインより上にあるか下にあるかを確認することで、「上昇相場の押し目買い」「下降相場の戻り売り」といった順張り寄りのロジックを構築できます。
複数インジケーターを組み合わせるときの考え方
移動平均線・RSI・MACDなどを組み合わせることで、シグナルの精度を高めることが目指せます。ただし、インジケーターを増やし過ぎると、シグナルがほとんど出なくなったり、過去データにだけ都合よく合わせた「過剰最適化」になりやすい点には注意が必要です。
基本的な考え方として、インジケーターには以下のような役割分担を持たせると整理しやすくなります。
・トレンド判定用インジケーター(例:移動平均線、MACD)
・エントリータイミング用インジケーター(例:RSI、ストキャスティクス)
・フィルター用インジケーター(例:ボラティリティ系、ATRなど)
たとえば、次のような構成が考えられます。
・移動平均線で上昇トレンドかどうかを判断(短期線が長期線より上)
・RSIが一時的に下がったところで押し目買いエントリー
・ATRでボラティリティが一定以上あるときだけエントリーを許可
このように、それぞれのインジケーターに役割を持たせることで、「なぜこのインジケーターを使うのか」が明確になり、ロジック全体を説明しやすくなります。
リスク管理とロットの考え方
どんなに優れたロジックでも、損切りやロット管理が適切でなければ、口座資金が大きく減ってしまう可能性があります。インジケーターEAを作る際には、リスク管理をルールの一部として必ず組み込むことが重要です。
基本的な考え方として、1トレードあたりの損失許容額を口座残高の一定割合(例:1〜2%)に抑える設計がよく使われます。たとえば、口座残高が10万円で、1トレードの許容損失を1%(1,000円)とする場合、損切り幅が20pipsなら、その20pipsで1,000円の損失になるようなロットを逆算して決めます。
EAでは、以下のようなロット計算ロジックを組み込むことができます。
- 口座残高と許容リスク%から、1トレードの最大損失額を計算
- 損切りpipsと1pipsあたりの価値から必要ロットを算出
- ブローカーの最小ロット・ロット刻みに合わせて調整
こうしたリスク管理を自動化しておくことで、感情に流されない一貫した運用がしやすくなります。
バックテストとフォワードテストの重要性
インジケーターEAを作成したら、必ずMT4のストラテジーテスターでバックテストを行い、過去データに対する成績を確認します。バックテストでは、次のようなポイントに注目します。
- 最大ドローダウン(資産の最大落ち込み)がどの程度か
- 連続損失回数はどのくらいか
- 長期的に見て資産曲線が右肩上がりかどうか
- 通貨ペアや期間を変えても大きく崩れないか
ただし、パラメータを細かくいじりすぎると、過去データに合わせ過ぎた「過剰最適化」になり、リアル相場では機能しにくくなることがあります。そのため、バックテストである程度の手応えを確認したら、デモ口座や小ロットでのフォワードテスト(リアルタイム検証)を行い、実際の値動きの中でどのように機能するか確認することが大切です。
実運用で注意すべきポイント
最後に、インジケーターEAを実際に運用する際の注意点をまとめます。
・VPSや常時稼働環境の準備
EAはMT4が起動している間しか売買できません。24時間稼働させたい場合は、VPS(仮想専用サーバー)の利用や、常時稼働可能なPC環境の準備を検討します。
・スプレッドや約定力の確認
スプレッドが広がりやすい時間帯や指標発表時には、EAの成績が大きく変わることがあります。バックテストの際も、スプレッドの設定や手数料を現実的な水準にして検証することが重要です。
・相場環境の変化への対応
ある期間で良好だったEAでも、そのままずっと同じ成績が続くとは限りません。相場のボラティリティやトレンドの出やすさが変わると、得意・不得意の相場環境が入れ替わります。定期的に成績を確認し、必要に応じてロットの調整や一時停止などの判断を行うことが求められます。
・ロジックを理解したうえで使う
自分でEAを組む過程で、「なぜこのインジケーターを使うのか」「どんな相場を想定しているのか」を言語化しておくと、実運用中に想定外の動きをしたときにも冷静に対処しやすくなります。
まとめ:基本インジケーターからシンプルなEA作りを始める
本記事では、移動平均線・RSI・MACDといった基本インジケーターを使ったEAの考え方を解説しました。ポイントを整理すると、次のようになります。
- まずは1〜2種類のインジケーターに絞ってシンプルなロジックを組む
- 移動平均線クロスはトレンド系の順張りロジックとして扱いやすい
- RSIはレンジ相場向きの逆張りロジックとして活用しやすい
- MACDはトレンド方向に素直についていく順張りEAのベースになりやすい
- 複数インジケーターを使うときは、「トレンド判定」「タイミング」「フィルター」と役割分担を明確にする
- リスク管理やバックテスト・フォワードテストをセットで考える
いきなり完璧なEAを目指す必要はありません。まずはごくシンプルなインジケーターEAから始め、少しずつ条件を追加したり、パラメータを調整したりしながら、自分なりのロジックを育てていくことが大切です。MT4と基本インジケーターを組み合わせたEA作りは、売買ルールの客観化と検証の良いトレーニングにもなりますので、興味があれば小さなステップから試してみてください。


コメント