ストキャスティクスRSIの使い方や計算方法、さらにPythonを使って算出をしてチャートにのせてみました。
こんにちは、新米データサイエンティスト(@algon_fx)です。とうとう待望のゴールデンウィークへ突入しましたね。海外に長年住んでいたので、ゴールデンウィークそもそもが懐かしい(笑)。
まとまった時間が取れるということで、今までやれなかったOANDA APIの勉強と、長らく続いているPythonテクニカル指標シリーズを進めていきたいと思います。
先日にオシレーター系の代表格となる「ストキャスティクス」をPythonを使って書きましたが、今日の勉強はその兄弟分である「ストキャスティクスRSI」の使い方や計算方法、さらにPythonを使って処理をしていきます。
ストキャスティクスRSIとは?
ストキャスティクスRSIですが、名前をみて直感的にわかりますが、単純にストキャスティクスの計算をRSI(相対力指数)を使って算出した指標です。
→参照
ストキャスティクスをPythonで計算
RSI(相対力指数)をPytghonで計算
人気の高いテクニカル指標の多くは、1960年代に考案された年季の入ったものが多いのですが、このストキャスティクスRSIは1994年代に考案されたので、比較的新しい指標ですね。
詳細は上記のRSIのページで確認可能ですが、RSIは「期間中の値動き幅から買われ過ぎ・売られ過ぎを示す指標」でしたね。対して、ストキャスティクスは「期間中の安値・高値に対する終値の位置を見極める指標」となっています。
この2つの指標の特性を組み合わせたものが、ストキャスティクスRSIというわけです。
【人気記事】
ストキャスティクスRSIの計算方法
では、次はストキャスティクスRSIの計算方法を紐解いていきましょう。前述した通り、ストキャスティクスRSIは、ストキャスティクスの計算式へRSIの指標を使うだけです。
では、まずはRSIの計算方法から。
RSI = 期間中の値上がり幅 ÷ (期間中の値上がり幅 + 値下がり幅)x 100%
次にストキャスティクスの計算です。通常のストキャスティクスの%Kは下記の式でした。

こちらの式に、先に算出したRSIの値を代入することで「ストキャスティクスRSI」の計算が可能です。数式に表すと、下記のようになります。

文字が多くて見辛いですが、紐解いてみると、ストキャスティクスではN期間(通常14)の為替レートの終値、高値、安値が使われていたものが、単純にRSIの値に置き換わっているだけです。
上記の式で算出した値がストキャスティクスRSIですが、これに付随して「シグナル」という指標も算出をして使います。ストキャスティクスでは%Kの単純移動平均3で算出した%D(ファスト・ストキャスティクス)がありました。これと同様にストキャスティクスRSIも%Dを算出して、これをシグナルとして使います。
ストキャスティクスRSIの使い方
計算方法式でもやった通り、ストキャスティクスの%Kと%Dの使い方と同様に、ストキャスティクスRSIではStochRSI(%K)とシグナル(%D)を組み合わせて使います。
下記ですがドル円の1分足、下のチャートには14のストキャスティクスRSI(青色)、シグナル(赤色)となっています。
まず左側の黒色部分に注目してみましょう。こちらですが、ストキャスティクスRSI(青色)が20%ラインを下回っています。(つまり売られ過ぎ!)その後にストキャスティクスRSI(青色)がシグナル(赤色)を上抜けしています=これが買いのサインとなります。
チャート右側の黄緑部分は逆ですね。ストキャスティクスRSIが80%ラインを超えている(買われ過ぎ)でStochRSI(赤色)がシグナル(青色)を下抜け=売りのサインとなります。
ストキャスティクスRSIの注意点
ストキャスティクスやRSI、単体ごとを見れば使っている人も多いのですが、ストキャスティクスRSIは少し癖があるので、敬遠されている方も多いかと。
そこで、いくつか計算方法から紐解いた注意点をまとめました。(自分向け笑)
(1)相場レートの動きとストキャスティクスRSIの動きが逆行した場合は、相場の底または天井の可能性が高い。
(2)RSI(相対力指数)と比較するとストキャスティクスRSIはより現在の相場レートに敏感に反応する。
(3)RSIもストキャスティクスRSIもレンジ相場でしか使ったダメ。また短期でのトレードの場合は、現在レートにより敏感なストキャスティクスRSIの方が有利。
RSI、ストキャスティクス、ストキャスティクスRSIと、オシレーター系の代表する指標ですが、計算方法も特徴も異なります。しっかり違いを理解して、使った方が良さそうですね。
ストキャスティクスRSIをPythonを使って計算する
さて、いつもの流れではありますが、最後は本題のPythonを使ってストキャスティクスRSIの計算を行いましょう。前述しましたが、RSI(相対力指数)と通常のストキャスティクスはすでにPytyonのスクラッチで計算をしました。
【参照】
ストキャスティクスをPythonで計算
RSI(相対力指数)をPytghonで計算
ですので、今回はTa-Libを使ってストキャスティクスRSIを算出してみたいと思います!
では、いつも通り必要なライブラリから読み込んであげましょう。
1 2 3 4 5 6 7 8 9 10 11 |
# ストキャスティクスRSIを計算するためのライブラリ import pandas as pd import time import matplotlib.pyplot as plt import datetime import talib as ta ta.get_function_groups %matplotlib qt |
今回使う練習用の過去レートはビットコインの過去レートをスクレイピングしたものを使います。詳しくは、こちらの記事をご参考ください。
1 2 3 4 5 6 7 8 |
# ストキャスティクスRSIを計算するための練習データを用意 # coinmakercap.comからスクレイピングしてPandasへ格納 # コインマーケットキャップからデータをスクレイピング bitcoin = pd.read_html("https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20180101&end="+time.strftime("%Y%m%d"))[0] bitcoin = bitcoin.assign(Date=pd.to_datetime(bitcoin['Date'])) bitcoin['Volume'] = bitcoin['Volume'].astype('int64') |
では、早速「Ta-lib」を使ってストキャスティクスRSIを算出してみましょう。Ta-libをまだ使ったことがない方は、「Ta-libとは?」をご参考ください。
1 2 3 4 |
# ストキャスティクスRSIとシグナル(%D)をTa-libで計算 bitcoin['stochRSI_k'], bitcoin['stochRSI_d'] = ta.STOCHRSI(bitcoin['Close'], timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0) |
やっぱ神ライブラリーですね、Ta-lib。ただ、こればかりに頼ってしまうと、テクニカル指標の計算式など本質的な部分を考えなくなりそうなので、勉強段階はあまり使わない方が良いですね。(個人の所管笑)
参考までにですが、ストキャスティクスでは終値、高値、安値を計算する必要がありますが、上記のコードをみても分かる通り、ストキャスティクスRSIは終値のみからRSIを算出→RSIから%Kと%Dを算出しています。
では、実際にストキャスティクスRSIとシグナル(%D)が計算されたかデータフレームを確認してみましょう。計算方法のセクションでも前述しましたが、一般的な期間は14、%Dは%Kの3日単純移動平均です。
1 2 3 4 |
# 50行〜55行を確認のため表示 bitcoin[50:55] |
大丈夫そうですね。ストキャスティクスと同様にストキャスティクスRSIも0〜100までの値を持ちますが、同様のレンジで計算されているのが確認できます。
では、最後にMatplotlibでストキャスティクスRSIとレートのチャートをプロットしてあげましょう。
1 2 3 4 5 6 7 8 9 10 |
#レートとストキャスティクスRSIをプロット fig, (ax1, ax2) = plt.subplots(2,1, gridspec_kw = {'height_ratios':[3, 1]}) ax1.plot(bitcoin['Date'], bitcoin['Close']) ax2.plot(bitcoin['Date'], bitcoin['stochRSI_k']) ax2.plot(bitcoin['Date'], bitcoin['stochRSI_d']) plt.legend() fig.tight_layout() plt.show() |
なんか非常に怪しい感じのチャートではありますが、一応ストキャスティクスRSIが表示はされていますね。
まとめと次への課題
少し玄人向けなオシレーター系テクニカル指標「ストキャスティクスRSI」の概要と計算方法、さらにPythonを使って過去レートから算出してみました。
RSI(相対力指数)、ストキャスティクス、ストキャスティクスRSIですが、どれも似たような名前ではありますが、計算方法も違いますし、特質も大きく異なります。しっかり各指標の意味合いを理解した上で、FX 機械学習の特徴量として利用していきたいですね。
また今回はTa-Libを使って算出しましたが、正直、なんか不安な感じではあります。次の課題としては、スクラッチでストキャスティクスRSIを算出してみようかと。また、RSIや通常のストキャスなどを全て算出して、シグナルポイントごとの成功率の利確もしてみたいと思います。より深く使い方や特徴を把握して行くべきかなと思いました。
以上です!ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!
ディスカッション
コメント一覧
まだ、コメントがありません