この記事の内容
この記事を読むと…
- 表示の短縮と実際の保存値の丸めを区別できる。
- 七価格からG/LとRSIの全更新を再現できる。
- 単位変換とゼロ規則、版を記録して実装差を診断できる。
記事内で用語を調べる
相対力指数(RSI) ピップ(pip) 残高(Balance) 平均方向性指数(ADX) ATR(アベレージ・トゥルー・レンジ) MACD(移動平均収束拡散法)RSIを再現するには、価格変化だけでなく平滑化された二つの状態G/Lを保存します。「RSI14」と同じ表示でも、元データ、初期化、ゼロの扱いが違えば結果は異なり得ます。架空の全価格列から計算し、表示を丸めることと保存値を丸めることを分けましょう。
RSIは何からできているのか
終値CからΔ=Cₜ−Cₜ₋₁、上昇幅U=max(Δ,0)、下落幅の絶対値D=max(−Δ,0)を作ります。U/Dは非負で、変化ゼロなら両方ゼロ。価格の単位を持つ変化量であり、パーセント収益率ではありません。上昇した日数の割合や参加者の心理を直接測る式でもありません。
| 状態 | 初期化後の更新 |
|---|---|
| G:平滑上昇幅 | ((n−1)G前+U)/n |
| L:平滑下落幅 | ((n−1)L前+D)/n |
| RS(L>0) | G/L |
| RSI(G+L>0) | 100G/(G+L) |
初期値は最初のn変化の算術平均。C₀からn変化を作るにはn+1個の終値が必要なので、n=14なら15個です。その後は最も古い変化を捨てて直近n個の単純平均を再計算する方法とは違います。既に動いているプラットフォームには、表示範囲より前の履歴がある場合もあります。
小数2桁への保存で記憶が消える例
架空のn=3、直前G=L=0.0045、次の価格変化+0.001とします。正確な状態ならG′=(2×0.0045+0.001)/3=0.003333…、L′=2×0.0045/3=0.003、RSI=1000/19≈52.63です。
横にスクロールすると図全体を確認できます。
先にG/Lを両方ゼロへ置き換えると、更新後G′は正、L′はゼロでRSI100です。特定ツールの不具合を主張する図ではありません。0.00という表示でも内部に0.0045が保持され、次の式が内部値を参照するなら、表示の短縮は状態を消しません。
Wilder平滑化を一段ずつ追う
Gₜ=((n−1)Gₜ₋₁+Uₜ)/n、Lₜ=((n−1)Lₜ₋₁+Dₜ)/n。新しい観測の重みは1/nです。Lが正なら100−100/(1+G/L)は100G/(G+L)と同じ。G=L>0で50になりますが、それだけで価格がレンジだとは証明しません。
n=14の重み1/14≈0.07143に対し、通常のEMA14は2/15≈0.13333で別の再帰です。RSIが動くのに必ず同方向へ2〜3本必要だとか、ある別方式は必ず極端な値が多いという結論にはなりません。同じ価格、時刻、期間、初期化でU/D→G/L→RSIの順に最初の相違点を追います。
七つの価格から、全ての中間状態を計算
短い練習のためn=3、終値100,102,101,104,103,103,105、以前の状態・欠損・追加の不安定期間なしとします。RSI14の値でも推奨パラメータでもありません。
| 時点/終値 | Δ/U/D | G/L | RSI |
|---|---|---|---|
| t0/100 | 開始 | なし | なし |
| t1/102 | +2/2/0 | 初期化中 | なし |
| t2/101 | −1/0/1 | 初期化中 | なし |
| t3/104 | +3/3/0 | 5/3/1/3 | 83.3333 |
| t4/103 | −1/0/1 | 10/9/5/9 | 66.6667 |
| t5/103 | 0/0/0 | 20/27/10/27 | 66.6667 |
| t6/105 | +2/2/0 | 94/81/20/81 | 82.4561 |
t3は上昇合計5と下落絶対値合計1を、ゼロ成分も含めて各3で割ります。t4はG=(2×5/3+0)/3=10/9、L=(2×1/3+1)/3=5/9、RSI=100×10/15。一方、直近三つの変化−1,+3,−1を単純平均するとG=1、L=2/3、RSI60です。違いはアルゴリズムで、表示桁数ではありません。
t5の横ばいでは二つの状態が2/3倍されるため比率は不変。横ばい足だから自動的に50へ戻るわけではありません。t6はG=94/81、L=20/81なので100×94/114≈82.4561です。分数が正確な値で、小数は4桁表示です。
ゼロ合計はコードの版を特定する
G+L>0なら、Gだけ正でL=0は100、G=0でLだけ正は0。両方ゼロは0/0で、式だけでは決まりません。固定版C TA-Lib0.6.4のta_RSI.cはTA_IS_ZEROで合計がゼロまたは十分近い場合に0を返します。MQL4公式のカスタム指標例はG/Lがちょうど両方ゼロなら50です。これは選んだコードの規約で、全てのMetaTrader組込み版を検証したものではありません。
| 別々のRSI3初期化例 | 状態 | 結果 |
|---|---|---|
| 100,101,102,103 | G=1/L=0 | 100 |
| 103,102,101,100 | G=0/L=1 | 0 |
| 100,100,100,100 | G=L=0 | 0.6.4は0、MQL4例は50 |
今回保存して該当箇所を読んだTA-Lib mainは、合計が正かを直接検査し、両方ゼロなら50を返します。保存したta_RSI.cのSHA-256は3615579001c957bb0056ef2e074aa39492690bc763aef5a6624d7b0eec05ac77です。mainのURLは変わるため、固定版と同じ永久仕様だとは考えないでください。欠損、完全なゼロ、小さい正の状態は区別します。欠損価格をゼロで埋めると人工的な急落が生じます。
70/30は計算式ではなく、読み方の選択
伝統的な70/30や別の閾値は解釈の規則です。RSIの式そのものや利益の証明ではありません。70超えだけを天井の確率や売り注文と読み替えず、データと費用をそろえた完全なルールとして検証します。
Brown・Cardwellのレンジ解釈と必須規則を分ける
ChartSchoolはBrownの上昇・下降相場のRSIレンジ、Cardwellの解釈を紹介しています。これらは別の観察上の慣行であり、移動平均条件が変われば必ず閾値を切り替えるという数学的義務ではありません。レンジに触れたことだけで本物の買い、売り、統計的優位性とはしません。
同じ50でも、次の変化への感応度は違う
別の架空RSI3状態G=L=1から、横ばいがk回続くと両方g=(2/3)ᵏ、RSIは50のままです。その後に+1の価格変化を加えるとG′=(2g+1)/3、L′=2g/3、RSI′=100(2g+1)/(4g+1)。
| 先行する横ばい | 直前G=L | 同じ+1の後 |
|---|---|---|
| 0回 | 1 | 50→60 |
| 6回 | 64/729 | 50→100×857/985≈87.0051 |
見えている50という比率だけでは次の値を再現できません。二つの状態の絶対的な大きさも必要です。これは再帰の性質であり、持合い後の売買の有効性を示す実証ではありません。
通常・隠れのダイバージェンスを定義する
- 通常の強気:宣言した点の選び方で、価格安値は低下、RSI安値は上昇。
- 通常の弱気:価格高値は上昇、RSI高値は低下。
- 隠れの強気:価格安値は上昇、RSI安値は低下。
- 隠れの弱気:価格高値は低下、RSI高値は上昇。
通常型は反転の可能性、隠れ型は継続の可能性と関連づけて解説されますが、ラベルだけで継続や優れた収益性は保証されません。同じデータ、点の確定時刻、費用条件で、定義した変種を比較します。計算と解釈を分けることが先です。
実装を誤りと呼ぶ前の具体的な照合
配信元、銘柄、適用価格、足間隔、タイムスタンプ、足の確定状態をそろえます。初期化、中間状態の精度、コード版も保存してください。
- 窓と再帰:最新n変化の単純平均なら別方式。本例t4は60対66.6667です。
- 版と精度:ゼロ、近ゼロ判定、実保存値の丸めを確認。表示の短縮とは区別します。
- 情報時点:確定足ルールなら終値と最終RSIが分かるのは確定して受信した後。途中の値を同じ観測としません。
残すべき三つの層:計算、表示、戦略評価
後の価格変化が同じなら、異なる二つのG初期値の差は毎回(n−1)/n倍され、Lも同様です。ただし最終RSIという比率の差が、同じ係数で縮むとは限りません。万能なウォームアップ本数を指定するのでなく状態を再現します。履歴が変われば、同じRSI14という表示でも値が変わり得ます。
まずU/D、G/Lと版固有のゼロ規則を一致させ、次にいつその値を知り得たか確認し、それから完全な入退場ルールと費用を評価します。正しいオシレーター値は取引の有効性の証明ではありません。
日本での追加比較:円と銭への単位変換
独立した架空のUSD/JPY終値を150.00,150.02,150.01,150.04円とし、RSI3の初期値を作ります。変化は+0.02,−0.01,+0.03円、G=1/60円、L=1/300円でRSI83.3333です。同じ値を1円=100銭で15000,15002,15001,15004と表すとG=5/3銭、L=1/3銭。正確な比率ならRSIは同じです。
| 保存方法 | 円単位 | 銭単位 |
|---|---|---|
| 正確な状態 | 83.3333 | 83.3333 |
| 初期G/Lを小数2桁へ実際に丸める | 0.02/0.00→100 | 1.67/0.33→83.5 |
価格を全て正の定数で変換すれば、正確な再帰のG/Lは同じ倍率で変わり比率は不変です。しかし「小数2桁」という保存規則の実際の刻みは単位で変わるため、丸めた結果は不変ではありません。実在の相場列やプラットフォームの出力ではなく、単位・状態精度の診断用モデルです。RSIの式を一致させても、日本での業者登録や商品の契約条件を確認する作業は別に残ります。
同じ価格を円と銭で表すときの精度
単位変換に対する数式の不変性と、固定小数桁への保存の影響を別々に検査します。
小さな画面では横にスクロールするか、図を拡大できます。数値と要点は下のテキストにも記載しています。
- 正確な円・銭
- どちらも83.3333 – G/Lを同じ100倍へ変換すると比率は不変。
- 円で状態を小数2桁保存
- 100 – G=.02、L=0に変わります。
- 銭で状態を小数2桁保存
- 83.5 – G=1.67、L=.33。保存の刻みが別です。
今すぐ行う再現手順
- 初期化、期間、適用価格、履歴、コードの版とハッシュ、ゼロ時の規則を保存。
- 七価格の分数を再現してから任意の閾値を試す。短い表示値を次の状態へ戻さない。
- 未使用の評価データを残す。各5パターンや一か月だけで優位性を認定せず、点、判断時刻、執行、費用を別々に定義。
- 14変化には最低15終値が必要。既存Wilder RSIの再現には以前のG/L、または同じ初期化で十分な過去履歴も確認。直近14変化の単純平均は別計算。
RSIの尺度と確定足、MACDの計算法、RSI・MACDダイバージェンスを続けて読めます。関連例がこの戦略の利益を実証するわけではありません。
理解度を確認
練習の目安: 約2分.
答えと解説を見る
式が使うのは文字列0.00ではなく、内部の0.0045です。
よくある質問
RSI14初期化には何個の価格が必要?
Wilderと単純平均はどう違う?
横ばいなら50ですか?
保存したRSI50だけで次を再現できますか?
出典と検証
- TradingView:RSIの式とRMA
参考資料。適用範囲と前提は記事中に記載しています。
- TA-Lib固定版0.6.4:RSIコード
参考資料。適用範囲と前提は記事中に記載しています。
- TA-Lib main:今回保存した版の該当箇所
参考資料。適用範囲と前提は記事中に記載しています。
- MQL4公式:RSIカスタム指標例
参考資料。適用範囲と前提は記事中に記載しています。
- ChartSchool:Brown・Cardwellの解釈
参考資料。適用範囲と前提は記事中に記載しています。
計算例には前提条件を明記しています。現在の市場データや提供会社の取引条件の代わりにはなりません。
