Pythonコード集

【Pythonコード集】『TA-Lib』を使ってボリンジャーバンドを描画してみよう!後編

【この記事は3分で読めます】

前回は、Pythonのテクカル指標ライブラリ『TA-Lib』を使って、ボリンジャーバンドを描画しました。

未読の方は、以下のリンクからご覧ください。

前編
【Pythonコード集】『TA-Lib』を使ってボリンジャーバンドを描画してみよう!前編

続きを見る

 

後編の今回は、前回の記事で紹介したPythonコードの解説となります。

この記事を読んで、Pythonの理解を深めていただければ嬉しい限りです!


今回のサマリー

・『TA-Lib』でテクニカル指標を簡単に描画するコードの解説

・Pythonを効率的に学ぶ方法についてのご紹介


・おすすめのテクニカル分析本

おすすめ度 

 

チャートやテクニカル分析を基本から学びたい方は、この一冊で十分です。

最初から読む必要はありません。

興味のあるテクニカル指標が書いてあるページを中心に読み進めていくと、テクニカル分析の理解を深めることができます!


Udemyおすすめの講座
・Pythonの基礎から応用まで一気に学ぶならこのコース おすすめ度
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

 

・データサイエンスを学ぶならこの2コース 2コースのおすすめ度
【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜

【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

 

・Python、ファイナンス、英語を一気に学ぶ ”欲張りコース” おすすめ度
Python for Finance: Investment Fundamentals & Data Analytics
※このコースには日本語の字幕がついています。
Python、ファイナンスそして英語の力を同時にレベルアップするコースとしては、Udemy最強のコースです。
ジェイもこのコースで学び、今も復習で使っているコースです。


この記事の対象となる人

こんな人におすすめ

  • Pythonで株価の分析がしたい人
  • Pythonでテクニカルチャートを作りたい人
  • Pythonを学びたいと思っている人

 

この記事でわかること

わかること

  • Pythonでボリンジャーバンドを描画する方法
  • Pythonの効率的な学習方法

Pythonコードの解説

 

今回は、大きく4つのカテゴリーに分けて解説します。

まずは、いつもどおり必要なライブラリのインポートからです。

 

コード1:ライブラリのインポート

import pandas as pd

import matplotlib.pyplot as plt
%matplotlib inline

import seaborn as sns
sns.set()

import yfinance

import talib as ta

 

・解説

▷import pandas as pd
Python版のエクセルであるPandasをインポート。

後のコードを簡単にするために『pd』で簡略。

 

▷import matplotlib.pyplot as plt
今回のチャートライブラリは『matplotlib』です。

上のコードは定型文と思ってください。

後のコードを簡単にするために『plt』で簡略。

 

▷import seaborn as sns
seaborn』は、matplotlibをカッコよく装飾したい時に使います。

『sns.set()』はあってもなくてもOK。

後のコードを簡単にするために『sns』で簡略。

 

▷import yfinance
Yahoo!finance USから株価のデータを取得するライブラリが『yfinance』です。

 

import talib as ta
今回のポイントはここです!

talib』は、Pythonでテクニカル分析の指標を描画する時に用いるライブラリです。

ボリンジャーバンドだけでなく、色々なテクニカル指標を描画することができる便利なライブラリです。

 

TA-Libのインストールについて

まだ『TA-Lib』をインストールしていない方は、Google検索で『TA-Lib インストール』で調べれば、いくつかの方法が出てきます。

OSによってインストール方法が異なりますので、あなたの使っているPCに合った方法でインストールしてください。

 

ちなみにジェイはMacbook Proを使っているのでー

インストールの方法

$ brew install ta-lib

でインストールしました。

 

コード2:株価データの取得

ライブラリのインポートが終わったら、次は株価のデータを取得しましょう。

今回は、多くのプロ投資家(機関投資家)がパフォーマンスのベンチマークとして使っている『S&P500』です。

Yahoo!finance USのティッカーコードはー

S&P500のティッカーコード

^GSPC

です。

 

df = yfinance.download('^gspc',
                       start='2021-01-01',
                       end='2021-12-31',
                       interval='1d',
                       auto_adjust=True)

 

・解説

▷df = yfinance.download( )
yfinance.download( )』は、株価のデータを取得する時の定型文です。

変数『df』の中に、取得した株価のデータを入れます。

引数の意味は以下となります。

yfinance.downloadの引数

  • 最初(teickers):ティッカーを設定
  • start:最初のデータ取得日を設定
  • end:最後のデータ取得日を設定
  • interval:日足、週足の時間軸を設定
  • auto_adjust:”True”にして調整後の終値を取得

補足の説明。

最初の引数は『tickers』です。この引数は省略ができます。今回はそのスタイルにしました。

また、『auto_adjust』を ”True” にすると、調整後の終値を取得することができます。

 

・コードを実行

変数を実行して、株価のデータが取得できているかどうか?を確認しましょう。

S&P500の株価データ

 

ちゃんと、データフレームのかたちでS&P500の株価データを取得できていることが確認できました!

 

コード3:ボリンジャーバンドの設定

いよいよ、ボリンジャーバンドの設定をしていきます。

まずは、中心線となる移動平均線の期間を決めます。

今回はジェイがいつも使っている『21日間』とします。

span = 21

 

変数名『span』に、設定したい期間を入れるだけです。

もちろん、変数名は何でもOK。

 

次に、ボリンジャーバンドの上限と下限のラインを設定するコードを書きます。

df['Upper'],df['Middle'],df['Lower'] = ta.BBANDS(
                                                df['Close'],
                                                 timeperiod=span,
                                                 nbdevup=2,
                                                 nbdevdn=2,
                                                 matype=0)

 

・解説

▷df['Upper'],df['Middle'],df['Lower']

まずは、dfに新しいカラムーボリンジャーバンドの上限、中心線そして下限のカラムを設定します。

S&P500のデータフレーム『df』の後ろに[  ]をつけて、その中にカラム名を設定するだけです。

この書き方はPandasのルールですので、覚えておきましょう。

 

▷ta.BBANDS( )
ta.BBANDS』と書いて、引数で中心線、そして上限と下限をひとつひとつ設定していきます。

ta.BBANDSの引数

  • 最初の引数:株価の終値を設定
  • timeperiod:中心線(移動平均線)を設定
  • nbdevup:上限の標準偏差を設定
  • nbdevdn:下限の標準偏差を設定
  • matype:移動平均線のタイプ

ボリンジャーバンドの標準偏差(nbdevup / nbdevdn)については通常、『ある期間におけるデータのバラつきが2標準偏差内におさまる確率を95%』で考えることが多いため、その範囲を示す値『2』を設定します。

 

また、最後の『matype』では、移動平均線のタイプを設定できます。

ここはデフォルトの『単純移動平均線』で良いので、『0』とします。

 

コード4:チャートの描画

最後に、matplotlibを使ってチャートを描画します。

plt.rcParams['figure.figsize']=15,10

plt.plot(df.index, df['Close'], label='S&P500', color='black')

plt.fill_between(df.index, 
                 y1=df['Upper'], 
                 y2=df['Lower'], 
                 color='grey', 
                 alpha=0.3)

plt.plot(df.index, df['Middle'], color='red');

 

・解説

▷plt.rcParams['figure.figsize']
plt.rcParams』は、チャートの大枠を設定できるコードです。

その後に『[figure.figsize']』と書くことで、チャートの横と縦の比率を設定できます。

 

▷plt.plot( )
plt.plot』は、S&P500の株価チャートを描画するコードです。

引数で細かい設定をします。

plt.plotの引数

  • 最初の引数:x軸(時間軸)を設定
  • 2番目の引数:y軸(株価データ)を設定
  • label:チャートラベルの設定
  • color:ラインチャートの色を設定

 

plt.fill_between( ) ☆
ここが、ボリンジャーバンドをチャートで描画するコードとなります。

plt.fill_between』とすることで、バンド内に色を塗ることができます。

ポイントは、以下の引数です。

plt.fill_betweenの引数

  • 最初の引数:x軸(時間軸)を設定
  • y1:バンドの上限を設定
  • y2:バンドの下限を設定
  • color:バンド内の色を設定
  • alpha:バンド内の色の透明度を設定

・補足の説明

df['Upper']として、ボリンジャーバンドの上限のデータだけを抜き出します。

それを『y1』に入れるだけです。

 

df['Lower']として、ボリンジャーバンドの下限のデータだけを抜き出します。

それを『y 2』に入れるだけです。

 

たった上2つのことをするだけで、ボリンジャーバンドがチャート上に描画されます。

S&P500とボリンジャーバンドのチャート

S&P500 日足チャート(年初来)

 

最後の仕上げに、中心線の移動平均線(21日間)を描画しましょう。

▷plt.plot( )
また『plt.plot』と書いて、今度は中心線のデータを2番目の引数に入れるだけです。

plt.plotの引数

  • 最初の引数:x軸(時間軸)を設定
  • 2番目の引数:y軸(中心線)を設定 ☆
  • label:チャートラベルの設定
  • color:ラインチャートの色を設定

 

あとは、お好みに合わせてラベルなどを追記などをしてください。

以下のコードをご参考ください。

#チャートタイトル
plt.title('S&P500', fontsize = 30)

#y軸のタイトル
plt.ylabel('Price', fontsize = 20)

#x軸のタイトル
plt.xlabel('Date', fontsize = 20)

 

すべてのPythonコードを実行すると

ここまで書いてきたPythonのコードを実行するとー

・S&P500 ボリンジャーバンドのチャート

S&P500の株価チャートとボリンジャーバンドを簡単に描画することができました!

さらにPythonを学んでいけば、あなただけのオリジナルチャートを簡単に作ることだってできます!


効率よくPythonを学ぶ方法

Pythonって便利だな!

私もPythonを学んでみたい!

今回の記事を読んでそう思われた方は、以下のリンク先をご覧ください。

本気でPythonを学びたいなら

Pythonを学ぼう

 

Pythonを学ぶメリットがわかります。

そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。

この記事と出会ったのも何かの縁です。

ぜひチャレンジしてみてください!


Udemyおすすめの講座
・Pythonの基礎から応用まで一気に学ぶならこのコース おすすめ度
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

 

・データサイエンスを学ぶならこの2コース 2コースのおすすめ度
【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜

【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

 

・Python、ファイナンス、英語を一気に学ぶ ”欲張りコース” おすすめ度
Python for Finance: Investment Fundamentals & Data Analytics
※このコースには日本語の字幕がついています。
Python、ファイナンスそして英語の力を同時にレベルアップするコースとしては、Udemy最強のコースです。
ジェイもこのコースで学び、今も復習で使っているコースです。


まとめ

・TA-Libなら簡単にテクニカルチャートを描画できる

・Pythonを駆使すればオリジナルチャートを作ることもできる

・Pythonを効率的に学びたいならこちらから

最後に、今回のPythonコードをまとめます。

コピペして色々と遊んでみてください。

#ライブラリのインポート
import pandas as pd

import matplotlib.pyplot as plt
%matplotlib inline

import seaborn as sns
sns.set()

import yfinance

import talib as ta


#株価データの取得
df = yfinance.download('^gspc',
                       start='2021-01-01',
                       end='2021-12-31',
                       interval='1d',
                       auto_adjust=True)


#中心線(MA)の設定
span = 21


#ボリンジャーバンドの設定
df['Upper'],df['Middle'],df['Lower'] = ta.BBANDS(
                                            df['Close'],
                                                 timeperiod=span,
                                                 nbdevup=2,
                                                 nbdevdn=2,
                                                 matype=0)


#チャートの設定
plt.rcParams['figure.figsize']=15,10

#S&P500の株価チャートの描画
plt.plot(df.index, df['Close'], label='S&P500', color='black')

#ボリンジャーバンドの描画
plt.fill_between(df.index, 
                 y1=df['Upper'], 
                 y2=df['Lower'], 
                 color='grey', 
                 alpha=0.3)

#中心線(移動平均線)の描画
plt.plot(df.index, df['Middle'], color='red')

#タイトルやラベルの設定
plt.title('S&P500', fontsize = 30)
plt.ylabel('Price', fontsize = 20)
plt.xlabel('Date', fontsize = 20);

 

今回は以上です。

最後までお読みいただき、ありがとうございました!


注記事項

ジェイの米国株投資ブログ(以下当サイト)に掲載されている記事は、投資の助言を目的としたものではありません。当サイトに掲載されたコンテンツの正確性については、可能な限り注意を払っています。しかし、意図せず誤情報が紛れ込む可能性や情報そのものが古くなっている可能性があり、その正確性を完全に保証するものではありません。
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください

 

-Pythonコード集