今回はPythonのTA-Libライブラリを用いたテクニカル指標の算出方法をご紹介します。
テクニカル指標は、投資での売買タイミング決定や相場のトレンド判断においてとても重要です。このテクニカル指標をPythonを用いて簡単に取得できるようになりましょう。
◆ Windows10へのインストール方法を解説(スクリーンショットあり)
◆ 仮想環境の構築~venvの設定方法~
◆ Pythonでできること(概要や始め方、学習方法までざっくり紹介)
- テクニカル指標を株式投資の参考にしたい
- 使用するライブラリ: Technical Analysis Library
- Pythonによるテクニカル指標の取得方法
- まとめ
テクニカル指標を株式投資の参考にしたい
株式投資には、多くのテクニカル指標があります。
それらを用いることで買うタイミングや売るタイミングを検討できるわけですが、自分でチャートを確認する必要があるため特に株初心者の方には億劫です。
そこで、「それPythonで自動化しようよ」となるわけです。
今回はまず「Pythonで株式のテクニカル指標を取得する」部分にフォーカスを当ててご紹介します。
・
・
今後数回に渡って関連記事を執筆予定ですが、最終的には
ことを目標にしています。
使用するライブラリ:
Technical Analysis Libraryfrom datetime import datetime #日付指定
import matplotlib.pyplot as plt #グラフ描画
import pandas_datareader.data as data #株価取得
import talib as ta #テクニカル指標算出
start = datetime(2019, 1, 1) #2019/1/1以降のデータを取得
end =datetime.now() #現在時刻までのデータを取得
df = data.DataReader("AAPL", 'yahoo', start, end) #AAPL(アップル)の株価を取得
date = df.index
close = df["Adj Close"] #調整後の終値を"close"として保持
今回使用する主なPythonのライブラリは「TA-Lib」です。TA-Libはテクニカル指標を簡単に生成することができます。
その他にも、Pythonで株価を取得することができる「pandas_datareader」も用います。
\pandas_datareaderの詳細はこちら/
Pythonによるテクニカル指標の取得方法
紹介指標
今回はテクニカル指標の中でも特に有名かつ(個人的に)利用頻度の高い指標を4つご紹介します。
これらは、私が実際に取引を行う時にも特に重要視している指標!
移動平均線は、相場のトレンドを確認する指標で、5日と25日のように複数の移動平均線を用いることが一般的です。
コード例
#################################
#移動平均
#指定期間:5日、25日、50日
span5 = 5
span25 = 25
span50 = 50
#各期間における終値の平均値を算出
df["span5"] = close.rolling(window=span5).mean()
df["span25"] = close.rolling(window=span25).mean()
df["sma03"] = close.rolling(window=span03).mean()
#グラフ描画
plt.figure(figsize=(30,15))
plt.subplot(1,1,1)
plt.plot(date,close,label="Close",color="#99b898") #終値
plt.plot(date,df["span5"],label="span5",color="#e84a5f") #5日移動平均線
plt.plot(date,df["span25"],label="span25",color="#ff847c") #25日移動平均線
plt.plot(date,df["span03"],label="span03",color="#feceab") #50日移動平均線
plt.legend()
plt.show()
上記コードでは、5日、25日、50日と3種類の移動平均を算出しています。
可視化結果
プログラムの実行結果として得られるグラフは以下の通りです。終値(Close)と3種類の移動平均線(5日、25日、50日)を獲得できていることが分かります。
ボリンジャーバンドは、標準偏差を用いてレンジを可視化する指標です。順張りに利用することが多く、終値が2σの範囲を超えたタイミングでトレンドに乗っていきます。
コード例
#################################
#ボリンジャーバンド
#指定期間:25日間
df["upper"], df["middle"], df["lower"] = ta.BBANDS(close,timeperiod=span25, nbdevup=2,nbdevdn=2,matype=0)
plt.figure(figsize=(30,15))
plt.plot(date,close,label="Close",color="#99b898")
plt.fill_between(date,df["upper"],df["lower"],color="grey",alpha=0.3)
plt.show()
ボリンジャーバンドは、TA-Libのta.BBANDSにより算出することができます。
可視化結果
灰色で示した部分がボリンジャーバンドです。
MACDは、ゴールデンクロス(短期移動平均線が長期移動平均線を上抜け)とデッドクロス(短期移動平均線が長期移動平均線を下抜け)を判断する指標です。
MACDのヒストグラムがマイナス圏からプラス圏になるとゴールデンクロス、プラス圏からマイナス圏になるとデッドクロスを表します。
コード例
#################################
#MACD
#MACD、シグナル、ヒストグラム(MACD-シグナル)の3種を算出可能
df["macd"], df["macdsignal"],df["macdhist"] = ta.MACD(close, fastperiod=12,slowperiod=26,signalperiod=9)
plt.figure(figsize=(30,15))
plt.subplot(2,1,1)
plt.plot(date,close,label="Close",color="#99b898")
plt.legend()
plt.subplot(2,1,2)
plt.fill_between(date,df["macdhist"],color="grey",alpha=0.5,label="MACD_hist")
plt.hlines(0,start,end,"grey",linestyles="dashed")
plt.legend()
plt.show()
MACDは、TA-LibのMACDによって算出できます。ここでは、ヒストグラムを可視化しています。
可視化結果
グラフ上段が終値の推移、下段がMACDのヒストグラムです。ヒストグラムの値0付近をチェックすることでゴールデンクロス、デッドクロスを判断することができ、今後のトレンド予想に利用できます。
RSIは、相場の買われすぎ、売られすぎを判断する指標です。ファンダメンタル分析と組み合わせて利用することで効果を発揮する指標です(私は売られすぎのタイミングで逆張りするのが好きです)。
コード例
#################################
#RSI
df["RSI"] = ta.RSI(close,timeperiod=span25)
plt.figure(figsize=(30,15))
plt.subplot(2,1,1)
#上段終値推移
plt.plot(date,close,label="Close",color="#99b898")
plt.plot(date,df["span5"],label="span5",color="#e84a5f")
plt.plot(date,df["span25"],label="span25",color="#ff847c")
plt.plot(date,df["span50"],label="span50",color="#feceab")
plt.legend()
#下段RSI
plt.subplot(2,1,2)
plt.plot(date,df["RSI"],label="RSI",color="grey")
plt.ylim(0,100)
plt.hlines([30,50,70],start,end,"grey",linestyles='dashed') #30,50,70に基準値破線
plt.legend()
plt.show()
RSIは、TA-LibのRSIを用いて算出できます。
可視化結果
市場に大きな影響が与えられた場合は、RSIが0や100付近になってしまうこともあるため注意が必要ですが、緩やかな上昇、下落、横ばいの場合には有効な指標です。
銘柄にも依存しますが、RSIが20~40で売られすぎ、60~80で買われすぎと判断されるため、RSI30、70の値に破線を加えています。
すべて一つのグラフに描画する
ここまでご紹介した指標を1つのグラフで可視化することも可能です。
コード例
#################################
#すべての指標を表示
plt.figure(figsize=(20,10))
plt.subplot(5,1,1)
#移動平均線
plt.plot(date,close,label="Close",color="#99b898")
plt.plot(date,df["span5"],label="span5",color="#e84a5f")
plt.plot(date,df["span25"],label="span25",color="#ff847c")
plt.plot(date,df["span50"],label="span50",color="#feceab")
plt.legend()
#出来高
plt.subplot(5,1,2)
plt.bar(date,df["Volume"],label="Volume",color="grey")
plt.legend()
#MACD
plt.subplot(5,1,3)
plt.fill_between(date,df["macdhist"],color="grey",alpha=0.5,label="MACD_hist")
plt.hlines(0,start,end,"grey",linestyles="dashed")
plt.legend()
#RSI
plt.subplot(5,1,4)
plt.plot(date,df["RSI"],label="RSI",color="grey")
plt.ylim(0,100)
plt.hlines([30,50,70],start,end,"grey",linestyles='dashed')
plt.legend()
#ボリンジャーバンド
plt.subplot(5,1,5)
plt.plot(date,close,label="Close",color="#99b898")
plt.fill_between(date,df["upper"],df["lower"],color="grey",alpha=0.3)
plt.legend()
plt.show()
ここでは出来高も追加してしまいました(笑)
可視化結果
少し窮屈ではありますが、多様な指標を1つのグラフとして可視化できました。実際の取引では複数の指標を用いながら売買を行うことになるので汎用性があるのではないでしょうか。
まとめ
今回は、PythonのTA-Libライブラリを用いて、株式のテクニカル指標算出方法をご紹介しました。
・ボリンジャーバンド
・MACD
・RSI
よく用いられる有名指標に絞りましたが、TA-Libは200近くの指標算出が可能ですのでぜひ利用してみてください。あなただけの売買タイミングを分析してみましょう。
投資へのハードルが下がっている昨今、プログラミングスキルとの併用は大きな力になります。
本ブログでは、株式やプログラミングに関する記事を投稿しています。
プログラミング(Python)を学びたい方におすすめの書籍やプログラミングスクール、おすすめの学習方法などをご紹介しておりますのでぜひご覧ください。
は、プログラミングスクールという方法がおすすめです。
私の一押しは『TechAcademy』です。
質問することですぐに分からないところをクリアにできますし、進捗をサポートしてくれるため確実に成長することができます。
無料相談を実施しているため、まずは話を聞いてあなたのスタイルに合っているかどうか確認してみるのが良いと思います。
コメント