はじめに:なぜMT4で自動売買を覚えるべきか
FXやCFDのトレードを続けていると、「チャートの前に張り付いている時間が長すぎる」「感情でエントリーしてしまう」といった悩みに必ず一度はぶつかります。こうした悩みを減らすための現実的な手段が、MT4(MetaTrader4)での自動売買(EA:Expert Advisor)です。
とはいえ、多くの初心者にとって「プログラミング」「EA」という単語はハードルが高く感じられます。本記事では、インジケーターは移動平均線とRSIだけというシンプルな構成で、MT4用EAを自作し、バックテストし、動かすまでの全体像を丁寧に解説します。
MT4自動売買の全体像をざっくり把握する
まずは細かいコードに入る前に、MT4で自動売買が動く仕組みを俯瞰しておきます。
- MT4はチャートの価格データ(ティック)を受け取り続ける。
- EAは、そのティックをトリガーにして「ルール通りの条件判定」を行う。
- 条件を満たした場合にだけ、EAが自動で成行注文や決済の命令を出す。
- トレーダーはロジックとパラメータを設計し、EAのON/OFFや運用ロットを管理する。
この構図を理解しておくと、「EAとは何をしているプログラムなのか」がイメージしやすくなります。EAはあくまで、あなたが決めたルールを忠実に繰り返す「ロボット」にすぎません。儲かるかどうかは、ロジックとリスク管理次第です。
開発環境の準備:MT4とMetaEditorを触れるようにする
MT4で自作EAを動かすには、MetaEditorという付属の開発ツールを使います。
- MT4を起動し、メニューから「ツール」→「MetaQuotes Language Editor」を開く。
- または、MT4画面左上の「MetaEditor」アイコンをクリック。
- 初回起動時は英語表示でも問題ありません。後からでも慣れます。
MetaEditorが開いたら、メニューの「新規作成」から「Expert Advisor(テンプレート)」を選び、新しいEAファイルを作成します。ファイル名は分かりやすく、例えば「Simple_MA_RSI_EA」などとしてください。
今回作るEAのコンセプトを明確にする
いきなり複雑なロジックに走ると、高確率で挫折します。初心者が最初に作るEAは、シンプルで再現しやすく、チャートを見れば納得できるロジックにするのが鉄則です。本記事では、以下のようなコンセプトで進めます。
- メインロジック:短期移動平均線と長期移動平均線のゴールデンクロス/デッドクロス。
- フィルター:RSIで「買われすぎ」「売られすぎ」を避ける。
- 時間軸:15分足または1時間足(スキャルではなくミニスイング寄り)。
- リスク管理:1トレードの損失を口座残高の1〜2%以内に収める。
- ナンピン・マーチンゲールは使わない。
これだけでも立派なEA戦略になります。移動平均線とRSIはどの証券会社のチャートにもある基本インジケーターなので、ロジックを他のプラットフォームに応用することも容易です。
MQL4の最低限の構造を理解する
EAはMQL4という言語で書かれますが、すべてを覚える必要はありません。初心者がまず押さえるべきなのは、以下の3つの関数だけです。
- OnInit():EAがチャートにセットされたときに一度だけ実行される初期化処理。
- OnDeinit():EAがチャートから外されるときに実行される終了処理。
- OnTick():新しいティック(価格更新)があるたびに呼び出されるメイン処理。
EAの中身は、ほぼすべてOnTick()に書いていきます。「今ポジションを持っているか」「新規エントリーすべきか」「決済すべきか」を、この関数の中で毎ティック確認するイメージです。
EAの骨格コードをイメージする
以下のような骨格を頭に入れておくと、コードの意味が理解しやすくなります(実運用には細かい例外処理などが必要ですが、ここでは概念を掴むための簡略版です)。
int OnInit() {
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) {
// 終了時の処理(ログ出力など)
}
void OnTick() {
// 1. 現在のポジション状況を確認
// 2. インジケーターの値を取得
// 3. エントリー条件・決済条件を判定
// 4. 必要なら注文を発注または決済
}
最初は「ここに何を書けばいいのか」が分からなくて当然です。次のセクションから、具体的なロジックをこの骨格の中に落とし込んでいきます。
インジケーター条件の設計:移動平均線×RSI
今回のEAで使うインジケーター条件を具体的に定義します。
移動平均線の設定
例として、以下のパラメータを採用します。
- 短期移動平均線:期間20、単純移動平均(SMA)、終値。
- 長期移動平均線:期間50、単純移動平均(SMA)、終値。
買いエントリー条件の例:
- 一つ前の足で短期MAが長期MAの下にあり、現在足で短期MAが長期MAの上に抜けた(ゴールデンクロス)。
- RSIが30以上70以下の中立圏にあり、極端な買われすぎ・売られすぎではない。
売りエントリー条件の例:
- 一つ前の足で短期MAが長期MAの上にあり、現在足で短期MAが長期MAの下に抜けた(デッドクロス)。
- RSIが30以上70以下の中立圏。
このように、トレンド方向は移動平均線のクロスで判断し、RSIで極端な値を避けるという設計にすると、視覚的にもイメージしやすくなります。
ロット計算と損切り幅の考え方
EAの良し悪しはロジックだけでなく、リスク管理に大きく左右されます。特に初心者がやりがちなのが、「ロット固定」「損切りなし」の危険な設定です。ここでは、口座残高に応じてロットを自動計算する考え方を説明します。
例えば、1トレードで口座残高の2%を最大損失にすると決めた場合:
- 口座残高:100,000円相当
- 許容リスク:2% → 2,000円
- ストップロス幅:20pips
1pipsあたりの価値を計算し、それに基づいてロット数を求めます。MQL4ではAccountBalance()やMarketInfo()を使って通貨ペアごとのポイント値を取得し、ロットを計算することができます。最初は計算式に戸惑うかもしれませんが、「損切り幅×ロット=許容損失額以内」に収めるという原則だけは必ず守ってください。
具体的なEAロジック例のイメージ
ここでは、概念レベルでロジックの流れを文章で整理しておきます(実際のコードを書くときは、これを一行一行に落とし込みます)。
- 現在のシンボル・時間足の短期MA・長期MA・RSIの値を取得する。
- 一つ前の足の短期MA・長期MAも取得し、クロスの有無を判定する。
- すでにポジションを持っている場合は、新規エントリーを行わない(1ポジション制)。
- 買い条件を満たし、かつポジションがなければ、計算したロットで成行買い注文を出す。
- 売り条件を満たし、かつポジションがなければ、計算したロットで成行売り注文を出す。
- エントリーと同時に、ストップロスとテイクプロフィットを自動で設定する。
- ポジション保有中は、トレーリングストップなどのロジックを追加してもよい。
実際には、約定エラーやスプレッド拡大、取引禁止時間などへの対応も必要ですが、最初のEAでは「ロジックが期待通りに働くか」「バックテストの資産曲線がどう動くか」に集中するとよいでしょう。
バックテストでロジックの癖を把握する
EAが書けたら、いきなりリアル口座で動かすのではなく、MT4のストラテジーテスターでバックテストを行います。
- テスターの「エキスパートアドバイザ」に自作EAを選択。
- 通貨ペア(例:EURUSD)、期間(例:過去3年)、時間足(例:H1)を設定。
- 初期証拠金やレバレッジは、実際に想定している環境に近づける。
- スプレッドは固定値だけでなく、ブローカーの平均的な値に近づける。
バックテストでは、以下のポイントを見るとロジックの特徴をつかみやすくなります。
- 資産曲線が長期的に右肩上がりか、それともレンジ気味か。
- 最大ドローダウンがどの程度か。
- 連敗時の資産減少率はどれくらいか。
- 1トレードあたりの平均損益(期待値)はプラスか。
完璧なEAを作ろうとすると、パラメータをいじりすぎて過剰最適化(オーバーフィッティング)に陥りがちです。「過去データにだけ綺麗にフィットしたEA」は、将来の相場で崩壊しやすいことを常に意識してください。
フォワードテストで「生きた相場」に慣らす
バックテストである程度の手応えを感じたら、次はデモ口座や少額のリアル口座でフォワードテストを行います。フォワードテストでは、以下の点を確認します。
- 経済指標発表や早朝・深夜など、流動性が低い時間帯での挙動。
- スプレッドが急拡大したときの約定状況。
- 自分の想定と異なるタイミングでエントリー・決済していないか。
EAは、プログラム通りに動いている限り「バグ」ではありません。もし「なぜここでエントリーしたのか」が分からない場合、ロジック側か、あるいは自分の理解が不足している可能性があります。フォワードテスト中は、チャート上でEAのシグナルを目視しながら検証することが重要です。
よくある失敗パターンとその回避策
初心者がEA運用で陥りがちな失敗パターンをいくつか挙げ、それぞれの回避策を整理します。
失敗例1:相場が変化したのに放置する
長期トレンドからレンジ相場へ切り替わったにもかかわらず、トレンドフォロー型のEAをそのまま運用し続けると、ドローダウンが一気に拡大しがちです。
回避策としては、ボラティリティ指標(ATRなど)やトレンド指標(ADXなど)で相場の状態を判定し、EAのON/OFFやロットを切り替えるといった運用ルールを決めておくことが挙げられます。
失敗例2:EAの数を増やしすぎる
いくつものEAを同時に動かすと、ポジション管理やリスク管理が複雑になり、全体としてどのくらいのリスクを取っているのか把握しにくくなります。
最初は1つの通貨ペア・1つのEAからスタートし、運用に慣れてから徐々に拡張するのが安全です。
失敗例3:短期足にこだわりすぎる
1分足や5分足はシグナルが多く、バックテストの結果も派手になりがちですが、スプレッドやスリッページの影響を強く受けます。
初心者が最初に取り組むなら、15分足〜1時間足程度で、ノイズをある程度ならした時間軸を選ぶ方がロジックの検証もしやすくなります。
他のインジケーターEAへの発展アイデア
移動平均線とRSIでEAを一つ作れたら、その応用として以下のようなアイデアに広げることができます。
- ボリンジャーバンド×RSIの逆張りEA:バンドタッチ+RSIダイバージェンスでエントリーするロジック。
- MACDクロス+移動平均線フィルター:MACDのシグナルクロスをメイントリガーに、長期MAの傾きでトレンド方向を判断。
- ATRベースのトレーリングストップ:ATRの値に応じてストップ距離を自動調整し、ボラティリティに応じたリスク管理を行う。
重要なのは、1つのインジケーターに依存しすぎないことです。複数のインジケーターを組み合わせたからといって必ず成績が良くなるわけではありませんが、それぞれの役割(トレンド判断、エントリートリガー、フィルター、決済ロジックなど)を明確に分担させると、EA全体の設計思想が整理されてきます。
自分なりの「ルール化」を進めるための具体例
最後に、実際の運用をイメージしやすいよう、シンプルな運用ルールの例を挙げます。
- 対象通貨ペア:EURUSD、時間足:H1。
- 1トレードあたりのリスクは口座残高の1.5%まで。
- 同時保有ポジションは通貨ペアごとに1つまで。
- 最大ドローダウンが口座残高の20%を超えたら、一度EAを停止して検証し直す。
- 月に一度、バックテストとフォワードテストの結果を見ながらパラメータを微調整する。
これらはあくまで一例ですが、EA任せではなく、自分が「運用者」としてルールを決める意識を持つことが重要です。EAはあくまでツールであり、最終的な意思決定者は常に自分であることを忘れないでください。
まとめ:小さく作り、小さく試し、徐々に磨き上げる
本記事では、MT4で自動売買を始める初心者向けに、移動平均線とRSIという基本インジケーターだけを使ったEA自作の流れを解説しました。
- MT4とMetaEditorを使えば、誰でもEA自作の第一歩を踏み出せる。
- 複雑なロジックより、まずは移動平均線×RSIなどシンプルな組み合わせから始める。
- リスク管理(ロット計算・損切り幅)はロジックと同じくらい重要。
- バックテストとフォワードテストを通じて、EAの癖と限界を把握する。
- 一つのEAを作れたら、他のインジケーターEAにも応用していく。
自動売買は「一度作れば放置で稼げる魔法の箱」ではありませんが、ルールベースで淡々とトレードを積み重ねるための強力な味方になります。小さく作り、小さく試し、結果を見ながら少しずつ改善していく。このプロセスを繰り返すことで、裁量トレードだけでは得られなかった視点や気づきが必ず蓄積されていきます。
まずは本記事の内容を参考に、移動平均線とRSIだけのシンプルなEAを一つ完成させてみてください。それが、あなた自身のオリジナルEAポートフォリオを構築していくための第一歩になります。


コメント