MACD戦略はどのように計算されるのか?
直接的な回答
MACD(「移動平均収束発散」)は、同じ価格シリーズに対して計算された2つの指数移動平均(EMA)から計算されます。基本的な手順は、高速EMAを計算し、低速EMAを計算し、それらを引いてMACDラインを得、MACDラインにEMAを適用してシグナルラインを得、シグナルをMACDから引いてヒストグラムを得ることです。
「MACD戦略」というアプローチは通常、MACD値をルールロジックの入力として使用することを意味します(例えば、MACDラインをシグナルラインと比較したり、ヒストグラムの変化を分析したりする)。計算そのものは、上記の指標の数学です。
メカニズムと定義
1) 入力価格シリーズの選択
まず、「価格」が計算中に何を意味するかを定義します。一般的な選択肢には、終値や、時々平均価格が含まれます。入力シリーズを選択したら、MACD計算のすべてのEMAに対して同じシリーズを一貫して適用する必要があります。
作業例の前提条件:すべての計算は、固定頻度でサンプリングされた価格の1つの時系列(例えば、各バーの終値)を使用します。データ頻度やシリーズが変更されると、MACD値は変更されます。
2) 高速および低速EMAの計算
以下を設定します:
n_fast= 高速EMAの長さ(パラメータ)n_slow= 低速EMAの長さ(パラメータ)P_t= 時間tの選択した価格
EMAは、最近の観測に対してより多くの重みを与える加重移動平均です。多くの定義では、EMAは再帰的に書くことができます:
EMA_fast(t) = EMA_fast(t-1) + α_fast * (P_t - EMA_fast(t-1))EMA_slow(t) = EMA_slow(t-1) + α_slow * (P_t - EMA_slow(t-1))
ここで、スムージング係数α_fastとα_slowは長さに依存します:
α_fast = 2 / (n_fast + 1)α_slow = 2 / (n_slow + 1)
初期化の注意(重要な制限):EMAには開始値が必要です。異なるプラットフォームではEMAを異なる方法で初期化することがあります(例えば、最初の価格から開始する、または初期EMAとして単純移動平均を使用する)。そのため、実装間で初期のMACD値が正確に一致しない場合があります。
3) MACDラインの計算
時間tのMACDラインは、高速および低速EMAの差です:
MACD(t) = EMA_fast(t) - EMA_slow(t)
この差は正または負になることがあります。その大きさは価格スケールと選択したEMAの長さの両方に依存します。
4) シグナルラインをMACDのEMAとして計算
n_signalをシグナルEMAの長さ(パラメータ)とします。シグナルラインはMACDシリーズに適用されたEMAです:
Signal(t) = Signal(t-1) + α_signal * (MACD(t) - Signal(t-1))α_signal = 2 / (n_signal + 1)
再び、シグナルEMAには初期化方法が必要です。
5) ヒストグラムの計算
ヒストグラムは、MACDラインとそのシグナルラインの間の距離を強調表示します:
Histogram(t) = MACD(t) - Signal(t)
ヒストグラムが正の場合、MACDはシグナルより上;負の場合、MACDはシグナルより下です。
パラメータの概要
MACD計算は、3つの主要な長さに依存します:
n_fast(高速EMAの長さ)n_slow(低速EMAの長さ)n_signal(シグナルEMAの長さ)
また、以下にも依存します:
- 選択した価格シリーズ
P_t - 実装でEMAsが初期化される方法
- データのサンプリング頻度
証拠または検証可能な例
以下は、簡単な仮定を使用した一般的な数値例であり、再現できるようにしています。
前提条件:
- 時間
t = 1..6の短い価格シリーズを使用 n_fast = 3、n_slow = 6、n_signal = 2を使用- 初期化を伴うEMA再帰を使用(1つを選択し、その後一貫して従う必要があります)
入力価格シリーズを選択(例の値):
P_1, P_2, P_3, P_4, P_5, P_6
ステップA:α_fast = 2/(3+1) = 0.5およびα_slow = 2/(6+1) ≈ 0.2857を計算します。
ステップB:開始値。
- 1つの方法は
EMA_fast(1) = P_1およびEMA_slow(1) = P_1です。
ステップC:t = 2..6に対して前方に反復します:
EMA_fast(t) = EMA_fast(t-1) + 0.5*(P_t - EMA_fast(t-1))EMA_slow(t) = EMA_slow(t-1) + 0.2857*(P_t - EMA_slow(t-1))
ステップD:MACDライン:
tごとにMACD(t) = EMA_fast(t) - EMA_slow(t)。
ステップE:シグナル:
α_signal = 2/(2+1) = 2/3 ≈ 0.6667Signal(1) = MACD(1)(または他の一貫した初期化)を選択し、次に反復します:Signal(t) = Signal(t-1) + 0.6667*(MACD(t) - Signal(t-1))
ステップF:ヒストグラム:
Histogram(t) = MACD(t) - Signal(t)。
計算した際に気づくべきこと:
n_fast、n_slow、またはn_signalを変更すると、MACDおよびシグナルラインの滑らかさと遅延が変わります。- ヒストグラムは独立したシリーズではありません;それは数学的にMACDとシグナルから導かれます。
計算したMACDがチャートツールと異なる場合、最も一般的な理由はEMAの初期化、異なる価格フィールド(終値対典型値)、または異なるパラメータの解釈です。
制限事項とリスク(重要な故障モード)
1) EMA初期化の違い
EMAには開始値が必要なため、異なるソフトウェアはシリーズの最初の部分でやや異なるMACD値を生成することがあります。これは、特に短いデータセットの場合、シグナルEMAとヒストグラムに伝播することがあります。
2) パラメータの感度
MACDはn_fast、n_slow、およびn_signalに直接依存します。小さな変更は以下に影響を与えることがあります:
- アンプリチュード(値の大きさ)
- タイミング(MACDがどれだけ早く反応するか)
- 転換点の頻度
したがって、誰かが異なるパラメータセット間でMACD値を比較すると、比較が誤解を招くことがあります。
3) 価格シリーズと時間頻度の選択
MACDは特定の入力シリーズP_tから計算され、与えられた間隔でサンプリングされます。異なる価格定義や異なるタイムフレームでMACDを計算すると、結果の指標値は一致しません。
4) MACDをルールに使用しても不確実性は除去されません
指標が正しく計算されても、その値を決定に変換すると不確実性が生じます。ライブ環境での実際の結果は、MACD式の外部の多くの要因(例:実行品質、市場条件、運用コスト)に依存します。歴史的な関係は将来の結果を保証しません。
検証と次に確認すべきこと
MACDを正しく計算しているか(または提供者が計算しているか)を独立して確認するには、取引アドバイスに依存せずに次のことができます:
- 正確な入力価格シリーズ(例:終値)とデータ頻度を確認します。
- 高速EMA、低速EMA、シグナルEMAのパラメータ値を確認します。
- 同じ初期化アプローチを使用してEMAsを再計算します。
MACD = EMA_fast − EMA_slowを計算し、次にSignalをMACDのEMAとして計算し、次にHistogram = MACD − Signalを計算します。
「MACD戦略」の議論に関して、次に明確にすべき価値のある質問:MACD値の上に適用されるルールロジックは何ですか(例:どの比較やヒストグラム条件)? 計算は入力が与えられたら決定論的ですが、戦略層はその値がどのように解釈されるかを決定します。