536 / 736EMA

Exponential moving average

指数移動平均

EMA は新しい価格を重く扱い、古い履歴の影響を少しずつ弱めます。前回の結果から次の点ができる仕組みと、正しく計算した線同士でも違いが生まれる理由を見ていきましょう。

Exponential moving average、略して EMA は、新しい価格に大きな重みを置く平均です。チャートでは、滑らかな線で価格の動きを捉えやすくします。新しい値は毎回、現在の価格と前回の結果を組み合わせて求めます。そのため Simple moving average(SMA)より変化への反応が速い傾向がありますが、使うのはあくまで入手済みの価格です。

チャートのローソク足が表す時間区間が終わるたびに、Petr は最後の価格を記録します。すべての値を足し直す代わりに、前回の EMA を新しい価格との距離の一部だけ近づけることができます。Fidelity はこのように説明しています。TradingView の式は、新しい価格と前回の EMA にそれぞれ重みを掛けて足す形ですが、計算は同じです。前の結果を次の段階で使う仕組みを再帰計算と呼びます。 [1] [2]

その割合を決めるのが係数、つまり新しい価格の重みを指定する数です。TradingView は一般的な関係式として 2 / (N + 1) を示しており、N は設定する長さです。N が大きいほど新しい値の重みは小さく、調整は緩やかになります。Petr は EMA という名前だけでなく、長さと係数の計算方法も知る必要があります。長さは重みの配分を決めます。下の例で実際の計算を確かめます。 [3]

計算を始める時点では、Petr に前回の EMA はありません。Fidelity が紹介するのは、最初の価格群の普通の平均である SMA から始める方法です。この出発点を決めることを初期化と呼びます。別のツールが違う方法で始めたり、異なる長さの履歴を読み込んだりすると、その後の価格が同じでも線は一致しないことがあります。計算を重ねれば差は次第に小さくなります。EMA という名称だけでは、すべての値の一致は保証されません。 [1]

前回の EMA には、すでに古い価格の影響が含まれています。TradingView が説明するように、計算を進めるたびにその影響はさらに弱まります。これが「指数」の意味です。係数が一定なら、元の値の影響に同じ因子を繰り返し掛けることで減衰していきます。したがって、設定した長さは SMA のように、それより古い価格をすべて除く固定の窓ではありません。数学上、ごく小さい影響も厳密なゼロとは異なります。 上記の係数で長さを 1 にした場合は例外です。EMA は新しい価格そのものになり、前回の結果の重みはなくなります。 [3]

Petr が SMA から EMA に替えると、同じ期間なら、線は新しい価格をより近く追う傾向があります。Fidelity は、この敏感さには反応の早さと短い変化の多さという両面があると指摘しています。方向のはっきりしない相場では、Petr は素早い反転を何度も目にするかもしれません。売買ルールに使うなら、そうした取引の費用も調べる必要があります。線が価格に近いことだけでは、判断の質は分かりません。 [1]

Petr は友人のチャートと自分のものを比較します。TradingView の Source は、ローソク足の最後の価格である Close など、計算に使う値を選ぶ項目です。Timeframe は指標のデータの時間区間を決め、表示中のチャートとは異なる区間も指定できます。差を誤りと判断する前に、市場、データ提供元、使う価格、区間、欠損値の扱いを比べます。入力が一致して初めて、計算自体の比較に意味があります。 [2] [4]

リアルタイムのチャートでは、最新の EMA は価格とともに動きます。TradingView は、未確定のローソク足の Close は最終終値ではなく、更新中の値だと説明しています。それを EMA に使えば、結果も交差の有無も変わり得ます。Petr は、区間の途中で判定するルールと、区間の終了を待つルールを分ける必要があります。過去データのテストで、最終価格を以前から知っていた情報として使ってはいけません。 [5]

Petr は EMA を計算できても、それだけでは売買の時期や方法は決まりません。TradingView の戦略の説明は、シグナル、注文の作成、実際の約定を区別しています。ポジションを閉じるルール、実行時点、費用も必要です。過去のチャートの偶然に合わせてルールを調整し過ぎる overfitting にも注意します。別のデータで、再調整せずに検証すれば、この弱点を見つけやすくなります。正確な計算でも将来の結果は約束できません。 [6]

例 · EMA

同じ価格でも出発点が違う場合

架空の計算例で、係数を 0.5 とします。2 / (N + 1) では長さ 3 に当たります。前回の EMA が 100000 USD/BTC、新しい価格が 100040 USD/BTC なら、0.5 × 100040 + 0.5 × 100000 = 100020 USD/BTC です。もう一方は新しい価格が同じでも、前回の EMA が 100010 USD/BTC です。すると 0.5 × 100040 + 0.5 × 100010 = 100025 USD/BTC となります。元の差 10 USD/BTC は 5 USD/BTC に縮みましたが、消えてはいません。このように初期値の違いは少しずつ薄れます。数字は仕組みを示すためのもので、現在の相場や売買の指示ではありません。

理解を深めるには、この項目とあわせて次もお読みください Moving average, Simple moving average, Moving average crossover, Timeframe, MACD, Backtesting. 次の項目からも参照されています Moving average, Simple moving average, Moving average crossover, Relative Strength Index.

01EMA は指定した数の最新価格だけを使うのですか?

SMA のような有限の窓ではありません。前回の EMA には、それより古い履歴の影響も弱まりながら残っています。長さは通常、係数を決める設定であり、そこから過去が突然消える境界ではありません。結果を正確に再現するには、初期化の方法も必要です。

02反応の速い EMA は、必ず SMA より優れていますか?

何を観察したいかによります。敏感な線は変化を早く示す一方、短い値動きで頻繁に向きを変えることもあります。売買ルールは約定と費用を含めて全体を評価し、調整に使っていないデータでも確かめてください。速さだけでは優位性の証拠になりません。

DOC · 001Fidelity — EMA文書 DOC · 002TradingView — EMA文書 DOC · 003TradingView — Moving averages文書 DOC · 004TradingView — MTF文書 DOC · 005TradingView — Repainting文書 DOC · 006TradingView — Strategies文書
改訂日: 一次資料を優先 · 投資助言ではありません