コンテンツにスキップ

移動平均線(Moving Average, MA)

移動平均線は、価格ノイズを平滑化してトレンドの方向、強さ、転換を捉える最も基本的なテクニカル指標です。単体で使うより、上位足の方向確認、動的サポート/レジスタンス、他指標のフィルタとして使うのが実践的です。

SMA 20とSMA 50を重ねたローソク足チャートのイメージ。下落トレンドからの反発局面でゴールデンクロスが生じている。

架空データによるイメージ図(実際の相場データではありません)。短期線(SMA 20)が長期線(SMA 50)を下から上抜けるゴールデンクロスの例。

定義

SMA(Simple Moving Average, 単純移動平均)

過去 nn 本の終値を単純平均します。

SMAt(n)=1ni=0n1Pti\text{SMA}_t(n) = \frac{1}{n}\sum_{i=0}^{n-1} P_{t-i}

  • 実装は素直だが、全期間を等しく扱うため反応が遅い
  • 大口プレーヤーの意識線として使われやすい(200SMA など)

EMA(Exponential Moving Average, 指数平滑移動平均)

新しい価格ほど重みが大きくなるように再帰的に平滑化します。

EMAt=αPt+(1α)EMAt1,α=2n+1\text{EMA}_t = \alpha P_t + (1 - \alpha)\,\text{EMA}_{t-1}, \quad \alpha = \frac{2}{n+1}

  • SMA より反応が速いがダマシも多い
  • MACD などの派生指標の内部でも使われる

WMA(Weighted Moving Average, 加重移動平均)

期間内で線形に重みをつけます(直近ほど重い)。

WMAt(n)=i=0n1(ni)Ptii=1ni\text{WMA}_t(n) = \frac{\sum_{i=0}^{n-1} (n-i)\,P_{t-i}}{\sum_{i=1}^{n} i}

  • EMA と SMA の中間的な特性
  • 短期のブレイクを拾いやすい

代表的な期間

期間呼称主な用途
5 / 10短期線直近の勢い、スキャルの意識線
20 / 25中期線日中トレンド、ボリンジャーバンドの中央線
50 / 75中長期線スイングのトレンド判定
100中長期線日足での押し目/戻り目
200長期線相場の大局判定。海外勢が強く意識する

USD/JPY は 200SMA(日足)と 89 / 200EMA(4H)が特に機能する傾向があります。

シグナル

クロス

  • ゴールデンクロス:短期 MA が長期 MA を上抜け → 買いシグナル
  • デッドクロス:短期 MA が長期 MA を下抜け → 売りシグナル
  • 単発では遅行性が強く、レンジでは連続してダマされる

パーフェクトオーダー

短期 > 中期 > 長期(or 逆)の順に整列した状態。トレンドの強さを示します。順張り戦略のエントリー条件として使うと勝率が上がりやすくなります。

グランビルの法則

MA と価格の位置関係から8つのシグナルを定義する古典。要約すると次のとおりです。

買いパターン

  1. MA 上向き + 価格が MA を下から上抜け
  2. MA 上向き + 価格が一時的に MA を割るが再度上抜け
  3. MA 上向き + 価格が MA 上で反発
  4. MA 下向きだが価格が MA から大きく乖離 → 自律反発狙い

売りパターンは 1–4 の反転。

動的サポート/レジスタンス

トレンド中の押し目、戻り目で MA が反発点になります。上位足の MA ほど強く効きます。USD/JPY 日足 200SMA タッチは節目として意識されます。

USD/JPY での使いどころ

  • 日足 200SMA:年間のトレンド判定。上抜け/下抜けは長期方針の転換
  • 4H 89EMA:スイング押し目候補。フィボナッチ 61.8% と重なると強い
  • 1H 20SMA + 75SMA:デイトレの短期トレンド確認と押し目
  • 東京 → ロンドン移行時(JST 16:00 前後) で MA を跨ぐブレイクは伸びやすいが、東京仲値(JST 09:55)前後は反転しやすいので注意

落とし穴

  • レンジではノイズ製造機:MA の傾きがフラット(例: 20本前と現在の差が 20 pips 未満)のときはクロスを無視する
  • ラグ:SMA(200) は約100本前の情報が中心。転換点では常に遅れる
  • 最適化過剰:バックテストで期間を細かくグリッドサーチすると簡単にオーバーフィットする。整数刻み(10, 20, 50, 200 等)の「意識される値」を優先する
  • 時間足を混在させない:上位足 MA を下位足に重ねる場合、必ず「上位足の値を静的に固定して描画」すること。下位足で再計算すると別物になる
  • ゴールデンクロス単体でエントリーしない:上位足の方向 + 価格構造(高値/安値切り上げ)と組み合わせる

Python 実装スケッチ

import pandas as pd
def sma(series: pd.Series, n: int) -> pd.Series:
return series.rolling(window=n, min_periods=n).mean()
def ema(series: pd.Series, n: int) -> pd.Series:
return series.ewm(span=n, adjust=False, min_periods=n).mean()
def wma(series: pd.Series, n: int) -> pd.Series:
weights = pd.Series(range(1, n + 1))
return series.rolling(window=n).apply(
lambda x: (x * weights.values).sum() / weights.sum(), raw=True
)

min_periods=n を指定して、期間を満たさない先頭区間で NaN を返すのが安全です(バックテストで先読みバグを避ける)。

参考

  • John J. Murphy, Technical Analysis of the Financial Markets, ch. 9 (Moving Averages)
  • Joseph Granville, Granville’s New Strategy of Daily Stock Market Timing
  • Investopedia — “Moving Average (MA)”
  • 陳満咲杜『FXチャート実践帳』(移動平均の運用例)