RSIとMACDの計算方法
直接回答
RSI(相対力指数)とMACD(移動平均収束発散)は、歴史的な価格シリーズと少数の設定から計算されます。
- RSIは、選択した過去のウィンドウ内の平均的な利益と平均的な損失を使用して、最近の価格のモーメンタムを0–100のスケールに変換します。
- MACDは、指数平滑移動平均(EMA)を使用して、より速いトレンド推定とより遅いトレンド推定の差を測定し、その後、その差を別のEMAで平滑化することがあります。
どちらの指標を説明し、検証するには、以下が必要です。
- 時系列順の価格リスト
- 指標のパラメータ(例:過去のウィンドウ長またはEMAのスパン)
- 正確な計算方法(特にRSIの平均化に関して)
この方法はこれらの選択に依存するため、結果はチャートツールや設定によって異なることがあります。
メカニズムと定義
RSI:移動モーメンタム入力の定義
RSIは、連続するデータポイント間の価格変動から始まります。
- 変動を計算します:
- (\Delta_t = \text{Price}t - \text{Price}{t-1})
- 変動を利益と損失に分けます:
- (\text{Gain}_t = \max(\Delta_t, 0))
- (\text{Loss}_t = \max(-\Delta_t, 0))
- 選択した過去のウィンドウの長さ (N) について、平均的な利益と平均的な損失を計算します。
一般的なRSIの形式では、Wilder式の平滑化が使用されます。Wilder平滑化では、最初に最初の (N) 利益と損失を使用して初期平均を計算し、その後再帰的に更新します:
- 初期(最初のRSI値のため):
- (\text{AvgGain}N = \frac{1}{N}\sum{i=1}^{N}\text{Gain}_i)
- (\text{AvgLoss}N = \frac{1}{N}\sum{i=1}^{N}\text{Loss}_i)
- 更新((t > N) の場合):
- (\text{AvgGain}t = \frac{(\text{AvgGain}{t-1}\cdot (N-1)) + \text{Gain}_t}{N})
- (\text{AvgLoss}t = \frac{(\text{AvgLoss}{t-1}\cdot (N-1)) + \text{Loss}_t}{N})
次に、相対力比率を計算します:
- (\text{RS}_t = \frac{\text{AvgGain}_t}{\text{AvgLoss}_t})
最後にRSIスケールに変換します:
- (\text{RSI}_t = 100 - \frac{100}{1 + \text{RS}_t})
重要なエッジケース:(\text{AvgLoss}_t = 0) の場合、(\text{RS}_t) は直接の除算によって未定義です。多くの実装では、損失が平均化ウィンドウ内で実質的にゼロの場合、RSIが100に近づくとしてこの状況を扱います。結果を検証する際には、データツールで使用されている同じ規約に一致させる必要があります。
MACD:EMA差の定義
MACDは、指数平滑移動平均(EMA)に基づいています。EMAは、最近の価格に対してより敏感に反応する加重移動平均です。
主要な入力は以下の通りです:
- 速いEMAスパン (a)
- 遅いEMAスパン (b)
- シグナルラインスパン (c)(多くの一般的なデフォルトでは (c) は9ですが、正確な設定を確認する必要があります)
-
選択した価格シリーズに対して、速いEMAと遅いEMAを計算します:
- (\text{EMA}_{a}(t))
- (\text{EMA}_{b}(t))
-
MACDラインを差として計算します:
- (\text{MACD}(t) = \text{EMA}{a}(t) - \text{EMA}{b}(t))
-
任意で、MACDラインのEMAとしてシグナルラインを計算します:
- (\text{Signal}(t) = \text{EMA}_{c} \big(\text{MACD}(t)\big))
-
よくヒストグラムも表示されます(再びチャートの規約による):
- (\text{Histogram}(t) = \text{MACD}(t) - \text{Signal}(t))
検証の重要なポイント:EMAの初期化と実装で使用される正確な式は異なることがあります(例:最初のEMA値のシード方法)。計算したMACDがチャートと一致しない場合は、両方の側で同じEMA初期化とスパンが使用されているか確認してください。
証拠または例(自己チェック可能)
以下は、既に持っている任意の固定歴史的価格シリーズを使用して理解を確認するための簡単で検証可能な方法です。
RSIの例設定
この例の前提条件:
- 価格 (\text{Price}_0, \text{Price}_1, …) を持っている
- 過去のウィンドウ (N) を選択する
- 上記で説明したWilder式の平滑化方法を使用する
再現可能な手順:
- 各ステップに対して (\Delta_t) を構築する。
- (\text{Gain}_t) と (\text{Loss}_t) に変換する。
- 最初のRSI値のために、最初の (N) 利益と損失の平均を計算する。
- 以降のポイントについては、Wilder再帰を使用して平均を更新する。
- (\text{RSI}_t = 100 - \frac{100}{1 + \text{AvgGain}_t/\text{AvgLoss}_t}) を適用する。
信頼性のある自己テストは、同じ入力からRSIをゼロから計算し、同じ時間インデックスの値を比較することです。機構のみを検証したい場合は、初期平均が最も重要な早期のRSI出力に焦点を当ててください。
MACDの例設定
前提条件:
- 時系列順の価格シリーズを持っている
- スパン (a)(速い)、(b)(遅い)、(c)(シグナル)を選択する
- 両方のEMAとシグナルEMAに対して同じEMA方法(初期化を含む)を使用する
手順:
- シリーズ全体にわたって (\text{EMA}{a}(t)) と (\text{EMA}{b}(t)) を計算する。
- (\text{MACD}(t)) を得るために引き算する。
- (\text{Signal}(t)) を (\text{MACD}(t)) のEMAとして計算する。
- 必要に応じて (\text{Histogram}(t) = \text{MACD}(t) - \text{Signal}(t)) を計算する。
自己チェックは、MACDラインが各インデックスで速いEMAから遅いEMAを引いたものと等しいことを確認することです。MACDラインが一致してもシグナルラインが一致しない場合、その差はほとんどの場合シグナルスパンまたはEMA初期化の不一致によるものです。
制限と失敗モード
1) 異なる「標準」設定は異なる数値を生成する
RSIとMACDの出力はパラメータ(RSIの過去のウィンドウ (N);MACDのEMAスパン (a)、(b)、およびオプションのシグナルスパン (c))に依存します。ユーザーが同じ指標を使用していると考えている場合でも、プラットフォーム間で設定が異なることがあります。
2) データ整列と欠落ポイントは計算を変える
これらの指標は連続するデータポイントから構築されています。入力シリーズにローソク足が欠けている、不規則なタイムスタンプがある、または「価格」の定義が異なる(例:終値対他の派生値)場合、RSIの計算された利益/損失とMACDのEMAシーケンスが変わる可能性があります。
3) EMAとRSI平均化の初期化は早期の値に影響を与える
RSIの最初に計算された値は、最初の (N) 期間にわたる初期平均化に依存します。MACDの早期の値は、アルゴリズムが「ロックイン」する前にEMAsがシードされる方法に依存します。これは、チャートの歴史の最初の部分で見える違いを引き起こすことがあります。
4) エッジケースは未定義の比率を生成することがある
RSIでは、平均損失がゼロ(または実質的にゼロ)になると、(\text{RS}) はゼロ除算が関与します。実装では、この状況を異なる方法で処理します(例:RSIを100と扱う)。独立して検証する場合、同じエッジケース規約を採用する必要があります。
5) 指標は結果の保証ではない
RSIとMACDは、数学的に変換された価格とモーメンタムのパターンを記述しますが、将来の行動ではありません。