最終更新: 2026年06月
移動平均線には複数の種類がある。その中で最も使われるのがSMA(単純移動平均線)とEMA(指数平滑移動平均線)だ。「どちらが優れているか」という問いを受けることがあるが、答えは「用途による」だ——これは逃げではなく、バックテストデータが示している現実だ。
本記事では計算原理の違いから始めて、EA設計においてどちらをどう使い分けるかを整理する。EAの設計だけでなく、手動トレードでの移動平均線の使い方にも応用できる内容だ。
計算式の違い——何が本質的に異なるのか
SMA(Simple Moving Average、単純移動平均線)
SMA(n) = (過去n本の終値の合計) ÷ n
最もシンプルな計算だ。期間内の全データに等しいウェイトを与える。20日SMAなら過去20本の終値を足して20で割るだけだ。
特性: 全データポイントの重みが均等。ノイズに強く、大きな流れを把握しやすい。反応は遅い。
SMAの「遅さ」はデメリットとして語られることが多いが、長期トレンドの把握においては「遅さ」が「安定性」になる。50日SMA・200日SMAが機関投資家に広く使われるのは、ノイズに流されない安定した基準線として機能するからだ。
EMA(Exponential Moving Average、指数平滑移動平均線)
平滑化定数 k = 2 ÷ (n + 1)
EMA(t) = 終値(t) × k + EMA(t-1) × (1 - k)
直近の価格に高いウェイトを与え、過去に行くほど指数関数的にウェイトが下がる。20日EMAなら最新データのウェイトが約9.5%(k = 2/21 ≈ 0.095)となり、20日SMAより直近価格に敏感だ。
特性: 新しい価格変動を素早く反映。反応が速い一方でノイズ(ダマシ)が増えやすい。
EMAは「今の相場の変化を速く捉えたい」という場面で有効だ。特にデイトレやスキャルピングでは、EMAのレスポンスの速さが早期エントリーにつながりやすい。ただし、その速さがダマシの増加とトレードオフになっている点は常に意識しておく必要がある。
バックテストで確認された性能差
海外のデータ駆動型比較(stratbase.ai・horizontrading.ai の独立検証)では以下の傾向が確認されている。
| 指標 | EMAベースEA | SMAベースEA | |---|---|---| | 正味損益(例) | +$51,280 | +$42,350 | | 取引回数 | 31回 | 24回 | | 勝率 | 55% | 58% | | プロフィットファクター | 1.92 | 1.85 |
この例ではEMAが絶対損益で上回るが、SMAが勝率で上回っている。SMAは取引回数が少なく、1トレードあたりの質が高い傾向がある。EMAは取引機会が多く、速い反応によって早期エントリーができる。
重要な注意: この結果はサンプルであり、通貨ペア・時間足・期間設定・その他の条件によって逆転する可能性がある。「どちらが優れているか」はバックテスト設計とトレードスタイルに依存する。
バックテスト比較を行う際は、同じ通貨ペア・時間足・期間でEMAとSMAを差し替えるだけの比較を行い、どちらが自分のスタイルに合っているかを確認することを推奨する。
相場環境別の使い分け
| 相場環境 | 適切な選択 | 理由 | |---|---|---| | 強いトレンド相場 | EMA | 早い反応でトレンド初動を捉えやすい | | レンジ・チョピー相場 | SMA | ノイズ耐性でダマシが少ない | | 長期トレンド把握 | SMA(50/200期間) | 大局観の基準線として機能しやすい | | 短期デイトレ・スキャルピング | EMA(9/20/50期間) | 速い反応でエントリータイミングが早まる |
機関投資家・ヘッジファンドの実務では「SMAで相場の構造的トレンドを定義し、EMAでエントリーシグナルを生成する」という組み合わせが標準的に使われる。この2段構造が有効な理由は、EMAの速さとSMAの安定性を補完させているからだ。
レンジ相場でEMAを使ったクロスEAを動かすと「ダマシ」が連続しやすい。これはEMAの特性(速い反応)がレンジ相場の細かい値動きに反応しすぎるためだ。相場環境フィルター(ADXやATRを組み合わせてトレンドが発生していないときはエントリーを止める)と組み合わせることで、レンジ相場でのダマシを減らせる。
EA設計での実装比較
MQL5でのSMAとEMA取得
// SMA
int sma_handle = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE);
// EMA
int ema_handle = iMA(_Symbol, _Period, 20, 0, MODE_EMA, PRICE_CLOSE);
// 値の取得(共通)
double ma_values[];
ArraySetAsSeries(ma_values, true);
CopyBuffer(sma_handle, 0, 0, 3, ma_values);
MQL5では iMA() 関数の第5引数でSMA/EMAを切り替えるだけだ。計算原理は異なるが実装コードの差は最小限で済む。
MQL4での書き方(参考):
// MQL4ではiMA()の呼び出し方が異なる
double sma = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
double ema = iMA(_Symbol, _Period, 20, 0, MODE_EMA, PRICE_CLOSE, 0);
MT4ユーザーはMQL4の構文を確認してから実装してほしい。MQL4とMQL5は関数の引数が異なる部分があるため、コードをそのまま転用すると動作しないことがある。
クロス判定ロジックの比較
EMAを使ったクロス判定はSMAより1〜2本早くシグナルが出る傾向がある。これはバックテストで「取引回数が増える」という形で現れる。取引コスト(スプレッド)の影響を考えると、シグナルの速さが必ずしもプラスになるわけではない。
筆者が確認したところ、スプレッドが1.5pips以上の通貨ペアではEMAのシグナル頻度増加がコストに食われるケースが見られた——ただしこれはスキャルピング系のEA検証での話であり、スイング系ではこの傾向が弱まる。
クロス判定を使うEAでは、シグナルが出てから「確認の足」を1本待ってエントリーする「n-1本前のクロスを確認する」手法がダマシを減らすのに有効なことがある。EMAを使う場合でも、翌足の確認でダマシの頻度を抑えられる。
バックテスト設計の重要な注意点
期間設定の最適化より組み合わせの設計を優先する
「EMA20がEMA50を上抜けたら買い」という単純なクロスEAをバックテストし、「20や50の代わりに何期間が最適か」を最適化ツールで探す作業は過剰最適化のリスクが高い。
代わりに推奨する設計思想:
- SMAで大局環境を定義する: 日足EMA200が上向きか下向きかでバイアスを決める
- EMAでエントリーシグナルを生成する: 1時間足のEMA9/EMA21のクロスでエントリー
- 両者の一致でエントリーを許可する: 上位足SMAの方向と下位足EMAのクロスが一致したときのみ
この2段構造にすることで「上位足のトレンドに逆らったエントリー」を機械的に排除できる。バックテストで比較すると、単純なEMAクロスより2段構造の方がドローダウンが小さくなる傾向がある。
ウォークフォワード必須
特にEMAを使ったEAでは、シグナルの頻度が多いためバックテストが「過去への最適化」に陥りやすい。バックテスト期間の最後30%をフォワード期間として検証するウォークフォワードを必ず実施する。
ウォークフォワードでIn-SampleとOut-of-Sampleの成績差が大きい(2倍以上異なる)場合は、過適合の疑いが強い。パラメーターを絞り込むか、ロジックをシンプルにする方向で再設計を検討してほしい。
EMAとSMAを組み合わせた実践的なEAロジック例
以下は「SMAで環境判断、EMAでエントリー」という2段構造の概念ロジックだ。実装の参考にしてほしい。
エントリー条件(ロング):
- 日足SMA200が上向き(または終値がSMA200より上)
- 1時間足EMA9がEMA21を下から上に抜けた
- RSI(14)が50以上70以下(過熱していない)
エントリー条件(ショート):
- 日足SMA200が下向き(または終値がSMA200より下)
- 1時間足EMA9がEMA21を上から下に抜けた
- RSI(14)が50以下30以上(売られすぎていない)
この構造自体はシンプルだが、バックテストで各条件の有無を切り替えながら改善することで、自分のトレードスタイルに合ったロジックに育てることができる。
Claudeがエントリーポイントの判断をするFXツールhedgrow-fxでは、このような多条件EAロジックをAIと対話しながら設計できる。
まとめ:EMAとSMAの使い分けガイド
- 計算の違い: SMAは均等ウェイト、EMAは直近ほど高ウェイト
- 速さの違い: EMAはSMAより1〜2本早くシグナルが出る
- 用途の違い: EMAは短期・トレンド相場向き、SMAは長期・大局判断向き
- EA設計の推奨: SMAで環境定義、EMAでエントリーシグナルという2段構造
- バックテストの注意: 期間の最適化より組み合わせの設計を優先し、ウォークフォワード分析で過適合を防ぐ
「EMAとSMAのどちらが良いか」という問いは、「スプリントと長距離走、どちらが速いか」という問いに似ている。目的と状況によって使い分けるものだ。
EMAのバックテストとSMAのバックテストを同じ条件で比較することで、自分のトレードスタイルにどちらが合うかを自分の目で確認することを勧める。理論よりも自分のバックテストデータが最も信頼できる判断材料だ。
Claudeと会話しながらインジケータが作れる[hedgrow-fx]はこちら
EMAとSMAの比較バックテストや、2段構造の複合EA設計をClaudeと対話しながら進めたい場合は、Hedgrow FX を活用すると設計サイクルを効率化できる。
よくある質問(FAQ)
Q: EMAとSMAのどちらを使うべきですか? A: トレードスタイルで選ぶ。短期・スキャルピングにはEMA、長期・スイングの大局把握にはSMAが適しやすい。実際のEAではSMAで環境定義、EMAでシグナル生成という2段構造が実務的に安定しやすい。
Q: WMA(加重移動平均線)やSMMA(平滑移動平均線)との違いは? A: WMAは古いデータほど線形にウェイトが減る。SMMAはEMAより平滑化が強く、ATRなどに使われる。FXのEA設計では現状EMAとSMAの組み合わせが最も一般的でドキュメントも豊富だ。
Q: EMA200とSMA200の使い分けは? A: 多くの機関投資家はSMA200を「長期トレンドの構造線」として参照する。EMA200は若干速く反応するが、どちらを使っても大きな差は出ない。一般的にはSMA200の方が「多くの参加者が見ている線」として機能しやすい。
Q: バックテストでEMAとSMAのどちらが成績が良いですか? A: 条件次第だ。強いトレンド相場ではEMAが優位、レンジ・チョピー相場ではSMAが優位になりやすい傾向がある。単一の通貨ペア・期間でどちらかを「優れている」と断定するのは早計だ。
Q: MQL5でEMAとSMAを切り替えるにはどうすればいいですか? A: iMA()関数の第5引数を MODE_EMA か MODE_SMA に変更するだけで切り替えられる。コードの変更量が最小限で済むため、両者の比較バックテストが容易に実施できる。
Q: EMAのクロスEAでダマシが多い場合はどうすればいいですか? A: いくつかのアプローチがあります。1つ目はクロス確認後に「確認の足」を1本待ってからエントリーする方法。2つ目はADXやATRで相場のトレンド強度を計測し、トレンドが弱いときはエントリーを止める相場環境フィルターを追加する方法。3つ目はSMAで上位足のトレンド方向を確認してから、トレンド方向のクロスのみエントリーを許可する2段構造にする方法です。
Q: 移動平均線のゴールデンクロス・デッドクロスは今でも有効ですか? A: 単純なゴールデンクロス・デッドクロスだけのシステムは、バックテストでは期間によって機能したりしなかったりします。それ自体を否定するのではなく、RSI・サポレジ・上位足トレンドとの組み合わせで確度を高めることが重要です。クロスシグナルを「エントリー条件の一つ」として使い、他の条件と組み合わせるアプローチが実用的です。
Q: 移動平均線のリボン(複数EMAを重ねる手法)はEA設計に使えますか? A: 使えます。EMA9・EMA21・EMA50などを複数表示して「順番が揃っているか(ブル配列・ベア配列)」でトレンドの強さを判定する手法はMQL5で実装可能です。ただしパラメーターが増えるほど過適合リスクも上がるため、バックテストでのウォークフォワード分析が特に重要になります。
免責事項: 本記事はFXトレードおよびEA設計の教育目的で作成されています。FX取引には元本割れを含む損失リスクがあります。バックテスト結果は過去のデータに基づくものであり、将来の利益を保証するものではありません。投資判断はご自身の責任において行ってください。
著者: Hedgrow FX編集部(金融工学専門家監修)
