RSIやDMI等の指標が、Pythonで計算したものとTrading View上での値が異なるのはなぜ?

Pythonを使って自前で計算したテクニカル指標が、Trading Viewで表示させた値と異なることがあります。また、異なる取引所のチャートをみると、同じ銘柄と指標でもやはり違う値になることがあります。

この違いは、移動平均の計算の違いによるものです。

RSIやDMIなどのテクニカル指標を計算する際に、その内部では、移動平均を使います。

例えば、RSIの計算方法は以下のように導入されることが多いです。

RS=(n日間の終値の上昇幅の平均)÷(n日間の終値の下落幅の平均)
RSI= 100 - (100 ÷ (RS+1))

この(○○日間の××の平均)という計算部分が、値に違いが出る部分です。
指標の計算例を示しているサイトでは、単純移動平均(SMA)を使って紹介することが多いです。人によっては、指数移動平均(EMA)を使う場合もあります。

そして、Trading view では、修正移動平均(RMA)が使われています。ランニング移動平均とも呼ばれます。これは指数移動平均の一種で、EMAの平滑化係数を半分にしたものと同じです。EMAよりも変化が緩やかになります。

pythonで計算する場合は、以下のようになります(期間n)。

# 単純移動平均(SMA)
SMA = data.rolling(n).mean()

# 指数移動平均(EMA)
EMA = data.ewm(span=n).mean()

# 修正移動平均(RMA)
RMA = data.ewm(alpha=1.0/n).mean()

バックテスト環境と実際に取引する環境では、このように計算方法に違いが出る可能性があるので注意が必要です。
ただ、些細な計算方法の違いで利益が吹き飛ぶような戦略では、そもそも信頼ならないので、バックテスト段階で色々と他の移動平均も試してみることをお勧めします。


以下宣伝

☆取引手数料が10%オフになる紹介リンクです
人気海外取引所binance新規口座開設はこちら↓

https://accounts.binance.com/en/register?ref=KJWM1JMM

binance 口座開設

☆紹介リンクからの登録でボーナスが増える!
人気海外取引所bybitの口座開設はこちらから↓

https://www.bybit.com/jpwelcome/?affiliate_id=22416&language=ja-JP&group_id=0&group_type=1&ver=b

bynance 口座開設


この記事が気に入ったらサポートをしてみませんか?