0
4

More than 3 years have passed since last update.

【Python】TA-Libでテクニカル指標計算 Part 2. ボリンジャーバンドの描画

Last updated at Posted at 2021-04-09

今回は,テクニカル指標であるボリンジャーバンド(Bollinger Bands)をPythonライブラリTA-Libで計算し,描画する方法を紹介します.

【Python】TA-Libでテクニカル指標計算 Part 1. RSIの描画
【Python】TA-Libでテクニカル指標計算 Part 2. ボリンジャーバンドの描画
【Python】TA-Libでテクニカル指標計算 Part 3. SMA(単純移動平均線)の描画
【Python】TA-Libでテクニカル指標計算 Part 4. MACDの描画

TA-Libのインストール

以前の記事

をご覧ください.

TA-Libによるボリンジャーバンド描画

各ライブラリインポート

import datetime
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import talib as ta

株価データ取得

今回は,2020/1/1~2021/3/1におけるS&P500のボリンジャーバンドを取得してみたいと思います.

株価は,pandas_datareaderで取得します.もちろんウェブやローカルにあるCSVファイルを読み込むなどでも構いません.

start = datetime.date(2020,1,1)
end = datetime.date(2021,3,1)
df = web.DataReader('^GSPC', 'yahoo', start, end) #get data

pandas-datareaderで取得したデータは以下のように,High(高値),Low(低値),Open(始値),Close(終値),Volume(出来高),Adj Close(調整後終値)を持つDataFarameとなっています.

                   High          Low         Open        Close      Volume    Adj Close
Date
2019-12-31  3231.719971  3212.030029  3215.179932  3230.780029  2893810000  3230.780029
2020-01-02  3258.139893  3235.530029  3244.669922  3257.850098  3458250000  3257.850098
2020-01-03  3246.149902  3222.340088  3226.360107  3234.850098  3461290000  3234.850098
2020-01-06  3246.840088  3214.639893  3217.550049  3246.280029  3674070000  3246.280029
2020-01-07  3244.909912  3232.429932  3241.860107  3237.179932  3420380000  3237.179932
...                 ...          ...          ...          ...         ...          ...
2021-02-23  3895.979980  3805.590088  3857.070068  3881.370117  6280650000  3881.370117
2021-02-24  3928.649902  3859.600098  3873.709961  3925.429932  5942350000  3925.429932
2021-02-25  3925.020020  3814.040039  3915.800049  3829.340088  6513060000  3829.340088
2021-02-26  3861.080078  3789.540039  3839.659912  3811.149902  6512950000  3811.149902
2021-03-01  3914.500000  3842.510010  3842.510010  3901.820068  5071540000  3901.820068

ボリンジャーバンドに必要なデータ

pandas-datareaderで取得したデータのうち,ボリンジャーバンドを計算するために必要なデータは,終値(Close)だけです.dfの’Close’の列だけをcloseとして取り出します(他のカラムでも計算自体はできます).

close = df['Close']

TA-Libでボリンジャーバンドを計算

#Bollinger Bands
upper1, middle,lower1 = ta.BBANDS(close, timeperiod=25, nbdevup=1, nbdevdn=1, matype=0)
upper2, middle, lower2 = ta.BBANDS(close, timeperiod=25, nbdevup=2, nbdevdn=2, matype=0)
upper3, middle, lower3 = ta.BBANDS(close, timeperiod=25, nbdevup=3, nbdevdn=3, matype=0)

描画

plt.plot(close,label='price',color='k')
plt.plot(upper1,label='upper1',color='b')
plt.plot(lower1,label='lower1',color='b')
plt.plot(upper2,label='upper2',color='g')
plt.plot(lower2,label='lower2',color='g')
plt.plot(upper3,label='upper3',color='r')
plt.plot(lower3,label='lower3',color='r')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.show()

image.png

まとめコード

import datetime
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import talib as ta

start = datetime.date(2020,1,1)
end = datetime.date(2021,3,1)

df = web.DataReader('^GSPC', 'yahoo', start, end) #get data

close = df['Close']

#Bollinger Bands
upper1, middle,lower1 = ta.BBANDS(close, timeperiod=25, nbdevup=1, nbdevdn=1, matype=0)
upper2, middle, lower2 = ta.BBANDS(close, timeperiod=25, nbdevup=2, nbdevdn=2, matype=0)
upper3, middle, lower3 = ta.BBANDS(close, timeperiod=25, nbdevup=3, nbdevdn=3, matype=0)

plt.plot(close,label='price',color='k')
plt.plot(upper1,label='upper1',color='b')
plt.plot(lower1,label='lower1',color='b')
plt.plot(upper2,label='upper2',color='g')
plt.plot(lower2,label='lower2',color='g')
plt.plot(upper3,label='upper3',color='r')
plt.plot(lower3,label='lower3',color='r')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.show()

もう少しだけ丁寧な解説を以下の記事で行っています.

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4