Pythonコード集

【Pythonコード集】有望グロース株エヌシーノ(NCNO)の株価を移動平均線と出来高で分析してみよう!解説編

2021年9月17日にエヌシーノ(NCNO)に関する最新記事をアップしました。


 

目安:この記事は3分で読めます

 

さて、前回の記事ではジェイが将来有望と考えているグロース株『エヌシーノ(NCNO)』のテクニカル分析チャートをPythonで作ってみました。

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

前回の記事
【Pythonとテクニカルチャート】有望グロース株エヌシーノ(NCNO)の株価を移動平均線と出来高で分析してみよう!

続きを見る

 

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

今回のテーマ

Pythonのコード書いて爆速で移動平均線と出来高チャートを作ってみよう!解説編


▼Pythonを学ぶならテックアカデミー▼

▶現役エンジニアのパーソナルメンターからマンツーマンで学べる

▶データサイエンスコース

▲独学が苦手な人におすすめ▲


この記事の対象となる人

こんな人におすすめ

  • 米国株の投資に興味がある人
  • Pythonを使って分析をしたい人
  • Pythonを学びたいと思っている人

 

この記事でわかること

わかること

  • Pythonでテクニカル分析のチャートを作成する方法
  • 効率的にPythonを学ぶ方法

Pythonコードの解説

ぐだぐだするのは性に合わないので、早速コードの解説に入ります。

今回は4つのセクションに分けて、わかりやすく解説いたします。

コードの解説その1:ライブラリ

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

Pythonによるすべての分析は、ここから始まります。

コードと解説

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

import seaborn as sns
sns.set()

import yfinance

import talib as tl

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

 

▷import matplotlib.pyplot as plt
matplotlibは、データの可視化ライブラリ。pltで簡略。

 

▷import seaborn as sns
seabornは、matplotlibをカッコよくするためのライブラリ。snsで簡略。

sns.set()について

sns.set()は、チャートの色やスタイルを設定するコードです。
カッコ中に『style='darkgrid'』や『style='whitegrid'』と入れることで、チャートのスタイルを設定できます。
今回のように何も書かない場合は、バックグラウンドが紫っぽいチャートが出来上がります。

 

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

 

まぁ上から4つは、どれもPythonで株価の分析をする時に必要なライブラリです。

なので、コードを書いていくうちに指が覚えていきます。

 

新たなライブラリ『talib』が登場!

今回、新しく登場したライブラリがあります。それが一番最後にあるー

重要!

talib

というライブラリです。

talibは、Pythonでテクニカル分析のチャートを作成する際に必ず必要となるライブラリです。

talibのインストール方法

・Homebrew で 『ta-lib』 をインストール

 command
brew install ta-lib

 

・anacondaで『ta-lib』 をインストール

 command
conda install ta-lib

 

・pipまたはpip3で『 TA-Lib』 をインストール

 command
pip install TA-Lib
pip3 install TA-Lib

この記事を機会にインストールしておくことをおすすめします!

 

コードの解説その2:データの取得

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

コードと解説

start = '2021-01-01'
end='2021-12-31'

df = yfinance.download(tickers='ncno',
              start=start,
                       end=end,
                       interval='1d',
                       auto_adjust=True)

df

データの取得日は以下のように設定しました。ここはお好みの期間を設定してください。
▷start = '2021-01-01'
最初のデータ取得日

▷end='2021-12-31'
最後のデータ取得日

▷df = yfinance.download(ーーーーー)
『yfinance.download』が、価格データを取得するコードとなります。

カッコ中の『引数』で細かい設定ができます。

yf.downloadの引数について

tickers
ここにティッカーコードを入れます。
エヌシーノの場合は『NCNO』です。

・start / end
ここで最初と最後のデータ取得日を設定します。
今回は、あらかじめ上で設定した日付の変数(start / end)を=の後に入れるだけのスタイルにしました。

interval
ここでデータの時間軸を設定します。
今回は1日分のデータを取得するので『1d』とします。

・auto_adjust=True
ここを『True』に設定すると、調整済みの終値が表示されます。
基本的にここは『True』で設定します。

 

▷df
ちゃんとデータが取得できていれば、『df』と書くだけで、以下のようにデータフレーム形式の価格データが表示されます。

NCNOの株価データ

 

コードの解説その3:移動平均線の設定

テクニカル分析のチャートを作成する前に、2つの準備が必要です。

これらをしておかないと、移動平均線をチャート上に描画することができませんので、必ず前もってコードを書いておきましょう。

コードと解説

date = df.index
price = df['Close']

#移動平均線の設定
span01=20
span02=50
span03=75

df['sma_20days']=price.rolling(window=span01).mean()
df['sma_50days']=price.rolling(window=span02).mean()
df['sma_75days']=price.rolling(window=span03).mean()

▷date = df.index
日付をインデックスとして設定します。
これをすることで、X軸に日付のデータを描画することができます。

 

▷price = df['Close']
今回使う値は『終値』のみです。
変数名['表示したいカラム名']とすることで、任意のデータのみをピックアップすることができます。

 

▷span01=20 / span02=50 / span03=75
ここで移動平均線の期間を設定します。
『=』の後の数字が期間となります。
今回は、20日、50日そして75日の期間を設定しました。

 

移動平均線の設定

▷df['sma_〇〇days']=price.rolling(window=span〇〇).mean()
このコードが、今回の記事で一番大事なところです!

 

重要!

移動平均線の変数名.rolling(window=設定した期間の変数名).mean()

 

と書くことで、期間の変数名に合わせて移動平均線が設定されます。

ポイントは、単純移動平均線を設定する『rolling』と『mean』です。
この2つを組み合わせることで、期間別の移動平均線を設定できます。

設定した移動平均線のコード情報を、期間ごとに作成した変数に入れます。
今回は3つの移動平均線を作成しますので、3つの期間別の変数を用意しました。

 

コードの解説 最後:チャートの描画

最後は、いよいよテクニカル分析チャートを描画します。

コードと解説

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

plt.subplot(2,1,1)
plt.plot(date,price,label='NCNO',color='black')

plt.plot(date,df['sma_20days'],label='20SMA',color='blue')
plt.plot(date,df['sma_50days'],label='50SMA',color='green')
plt.plot(date,df['sma_75days'],label='75SMA',color='red')
plt.legend()

plt.subplot(2,1,2)
plt.bar(date,df['Volume'],color='skyblue', edgecolor = 'black', label='Volume')
plt.legend()

▷plt.rcParams['figure.figsize']=15,10
rcParams['figure.figsize']は、チャートのサイズを設定するコードです。
今回は横15、縦10で設定しました。

 

▷plt.subplot(2,1,1)
subplotはー
・いくつチャートを表示するのか?
・どこにチャートを表示するのか?
を設定するコードです。

カッコの『2,1,1』とは、『2つの行、1つの列、1番目のインデックス』という意味です。
つまり、横に2列 / 縦に1列の形式でチャートを表示します。
1番目のインデックスは、『価格チャートは1番目に表示します』という意味です。

 

▷plt.plot(date,price,label='NCNO',color='black')
エヌシーノ(NCNO)
の価格チャートを表示するコードです。
カッコの中の『date』は、前準備の段階で設定したインデックスです。
表示したいデータは、これまた前準備で設定しておいた『price』です。
『label』を設定すれば、チャート上に設定した文字が表示されます。
『color』で、ラインチャートの色を黒(black)に設定しました。

 

▷plt.plot(date,df['sma_20days'],label='20SMA',color='blue')
▷plt.plot(date,df['sma_50days'],label='50SMA',color='green')
▷plt.plot(date,df['sma_75days'],label='75SMA',color='red')
3つの移動平均線をチャート上に描画するコードです。
ここでもlabelやcolorの引数を設定しています。

▷plt.legend()
『legend()』は、labelで設定した文字をチャート上に描画するコードです。

 

▷plt.subplot(2,1,2)
カッコの『2,1,2』とは、『2つの行、1つの列、2番目のインデックス』という意味です。
つまり、横に2列 / 縦に1列の形式でチャートを表示します。
2番目のインデックスは、『出来高(ボリューム)チャートは2番目に表示します』という意味です。

 

▷plt.bar(date,df['Volume'],color='skyblue', edgecolor = 'black', label='Volume')
ここも今回の記事のキーポイントです。

yf.downloadの引数について

・bar()
棒グラフを描画するコードです。

df['Volume']
Volumeのみを書くことで、Volumeのみのデータをチャートに描画することになります。

終値のみをピックアップする時もそうでしたがー

変数名['取得したいデータのカラム名']

という書き方は、必要なデータだけを表示したい(=余計なデータを表示したくない)ときによく使われる書き方です。

 

最後に、ここまで書いてきたコードを実行すると、以下のチャートが描画されます。

エヌシーノ(NCNO)のテクニカル分析チャート

NCNOのテクニカル分析チャート

 

次回の記事では、Pythonで別のテクニカル分析チャートを作ってみます。

乞うご期待!


▼ Udemyおすすめの講座 ▼
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

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


Pythonを学びたい方へ

今やPythonは、あらゆる分野で使われているプログラミング言語です。

Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。

『私もPythonを学んでみたい!』

という人は以下のリンク先をご覧ください。

▼ 本気でPythonを学びたいなら ▼

Pythonを学ぼう

 

なぜプログラミングを学ぶ必要があるのか?その理由がわかります。

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

この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!


注記事項

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

-Pythonコード集