Python

【コード解説】Pythonで株価チャートを描く【plotly編】

2021年6月27日

こんにちは。TATです。

今日のテーマは「Pythonで株価チャートを描く」です。

株価チャートを描くライブラリーとしてplotlyをご紹介します。

 

過去にもmpl_financeとmplfinanceをご紹介しました。

関連記事
【コード解説】Pythonで株価チャートを描く【mpl_finance編】

続きを見る

関連記事
【コード解説】Pythonで株価チャートを描く【mplfinance編】
【コード解説】Pythonで株価チャートを描く【mplfinance編】

続きを見る

 

plotlyはこれらとかなり違います。

一番の違いはインタラクティブなチャートが描けることです。

インタラクティブなチャートでは、カーソルを合わせると該当データが表示されたり、チャートの拡大や縮小などができます。

 

また、Pythonで株価データを扱う記事については記事が散在しているのでこちらにまとめました!

株価データの取得方法やテクニカル分析の計算方法についてはこちらからどうぞ。

関連記事
【まとめ】Pythonで株価データを扱う
【まとめ】Pythonで株価データを扱う

続きを見る

 

【コード解説】Pythonで株価チャートを描く【plotly編】

おさらい:株価を取得する

まずはおさらいとして、チャートを描くために必要な株価データを取得します。

例として、トヨタ自動車(7203)の日足データを取得します。

過去半年分のデータを取ってみましょう。

 

株価データを取得するために使ったコードはこちらです。

 

 

取得したデータがこちらです。

このデータを使って、plotlyでチャートを描いていきます。

 

コードの内容を詳しく知りたい方は、こちらの記事で解説しているので参考にしてください。

関連記事
【コード解説】Pythonで株価データを取得する!【3つの方法を解説】
関連記事
【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する
【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

 

plotlyでローソク足チャートを描く

まずは基本的なローソク足チャートを描いていきます。

 

Candlestick

ローソク足チャートを描くには、plotlyのCandlestickを使います。

まずはコードをどうぞ。

 

これで表示されるチャートがこちらです。

ローソク足チャートを使うためにはplotly.graph_objectsにあるCandlestickを使います。

Candlestickには、日時、始値、高値、安値、終値データを引き渡せばOKです。

シンプルですね。

 

インタラクティブにチャートを扱えます

こちらのチャートは、カーソルを合わせるとデータが表示されたり、チャートの拡大や縮小が可能です。

細かいところを拡大して確認できたりするのでとても便利です。

 

下にあるデータの範囲を選択できるバーは削除することができます。

チャートを直接いじくれるので、僕は基本的にここはなしに設定しています。

この場合はfig.update(layout_xaxis_rangeslider_visible=False)と追加すればOKです。

 

これで表示されるチャートがこちらです。

以降、このバーは非表示にします。

 

タイトルなどを追加する

次にタイトルなどの情報を追加します。

x軸とy軸の名前もつけてみましょう。

 

 

表示されるチャートがこちらです。

タイトルなどを設定するにはupdate_layoutを使います。

ここでタイトルやx軸やy軸の名前も指定できます。

タイトルでは、xとyを指定していますが、これは0〜1の範囲で指定します。

x=0.5というのは横軸でちょうど真ん中という意味です。y=0.9はチャートの縦軸でほぼ一番上を指します。(y=1だと文字がはみ出ます)

xaxis_titleやyaxis_titleは名前の通りですね。

これで必要な情報を書き込むことができました。

 

営業日のみを表示する

最後に営業日のみだけを表示するようにチャートをいじくってみます。

これまでのチャートはところどころ不自然な空白があります。

これは土日と祝日によるものです。

年末年始やゴールデンウィークを見ると隙間が目立ちます。

 

よって、より見やすいチャートにするために、株式市場が開いている営業日のみを表示するようにします。

plotlyには、指定した日付データを非表示にする機能があります。

非表示にしたい日付データをリスト形式で渡せばOKです。

 

先ほど取得したトヨタの株価データの日付をもとに、非表示にしたい日付をリストアップします。

これにはpandasのdate_rangeを使うと便利です。

data_rangeで対象期間の日付リストを取得して、それらが株価データの日付リストに含まれているかをチェックします。

含まれていないものをリストアップすれば、非表示にしたい日付リストが出来上がります。

コードとしては3行で完了します。

 

 

d_breaksが非表示にしたい日付リストになります。

 

d_breaksを非表示にしてチャートを描くコードがこちらです。

 

完成したチャートがこちらです。

これで営業日のみを表示することができ、不自然な空白はなくなりました。

以上が、基本的なローソク足の描き方になります。

 

複数のチャートを組み合わせる

次に複数のグラフを組み合わせてみます

出来高や移動平均線などを追加していきます。

plotlyでもこのようなチャートを描くことはもちろん可能です。

各テクニカル分析の計算のためのコードはこちらの記事で解説しています。

関連記事
【コード解説】Pythonで株式投資に必要なテクニカル分析を計算する

 

make_subplots

複数のチャートを描くには、make_subplotsを使います。

これを使うと、複数のチャートを描いたり、同じチャートの中に複数のグラフを描くことができるようになります。

matplotlibのsubplotsとほぼ同じような使い方です。

基本的な使い方としては、subplotsでfigを定義して、fig.add_traceで各チャートを追加していく流れになります。

 

出来高を追加する

まずは出来高を追加してみます。

いきなりコードからどうぞ。なるべく多くコメントつけました。

 

make_subplotsで、rows(行)とcols(列)を指定し、shared_xaxes=Trueとしてx軸を共有するように設定します。

vertical_spacingはチャート間の隙間の大きさで0〜1で指定します。

この設定は好みですが、僕はだいたい0.05にすることが多いです。適宜調整してみてください。

 

row_widthではrow(行)の高さを指定します。x_titleはその名の通り、x軸名です。

y軸名は2つあるので、fig.update_yaxesを使ってそれぞれ指定します。

add_traceでrowとcolを指定することで、任意の場所にチャートを描くことができます。

 

このコードで描かれるチャートがこちらです。

出来高も表示できていることがわかります。

 

移動平均線を追加する

次に移動平均線を追加します。

テクニカル分析の計算方法についてはこちらの記事で解説しているので、詳細は割愛します。

関連記事
【コード解説】Pythonで株式投資に必要なテクニカル分析を計算する

続きを見る

 

ここでは、先ほどの出来高付きのチャートに、5日と25日移動平均線を追加してみましょう。

 

移動平均線は1行で計算完了です。

チャートで追加されたのはSMAの部分だけですね。

完成したチャートがこちらです。

 

移動平均線も追加されました。

ここまできたらYahooファイナンスや株探とかで見るようなチャートと同じレベルのものになってきます。

 

応用編:複数のテクニカル分析を組み合わせる

最後に複数のテクニカル分析を組み合わせて表示してみましょう。

ここまで使用した出来高と移動平均線に加えて、こちらの記事で紹介しているMACDRSIも追加してみます。

関連記事
【コード解説】Pythonで株式投資に必要なテクニカル分析を計算する

続きを見る

 

コードの詳細についてはこちら↑の記事でも書いているので割愛します。

計算に使ったコードだけのせておきます。

計算結果はこんな感じです。

 

これを使ってチャートを描いていきます。

今回はローソク足、出来高、MACD、RSIの4チャートを描くので、rowsは4になります。

あとはこれまでと同様にadd_traceでチャートを追加しておけばOKです。

rows=4となり、MACDとRSIのチャートを追加して、y軸名を定義すればOKです。

慣れると結構シンプルで使いやすいです。

完成したチャートがこちらです。

 

いい感じに全てのテクニカル分析が盛り込まれていることがわかります。

plotlyは特に設定しなくてもきれいなグラフが描けるのでとても便利です。

 

データの可視化にはPythonが最適です。

以上で、plotlyを使った株価チャートの解説はおしまいです。

 

Pythonを使うと、データの可視化などの複雑な処理も短いコードで実装することができます。

ここで紹介したplotlyを使うとインタラクティブで美しいグラフも簡単に描くことができます。

Pythonは、データ分析やデータの可視化などを得意とするプログラミング言語で、さらにAI関連のライブラリーが豊富なので、昨今のAIブームで需要が爆発しています。

おすすめ
【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
おすすめ
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】

 

また、Pythonは、僕自身も独学で習得できたくらい初心者でも学びやすい言語です。

僕の場合は社会人になってから独学でPythonを習得して転職にも成功しました。Pythonをきっかけに人生が大きく変わりました。

おすすめ
【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。
【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。

続きを見る

 

僕自身の独学の経験をベースに、Python独学ロードマップをまとめたので、もしご興味があればご覧ください。

おすすめ
【決定版】Python独学ロードマップ【完全初心者からでもOKです】
【決定版】Python独学ロードマップ【完全初心者からでもOKです】

続きを見る

 

僕自身はUdemyでPythonを独学しました。

おすすめ
プログラミングの独学にUdemyをおすすめする理由!【僕はUdemyでPythonを独学しました!】
おすすめ
【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】

 

まとめ

いかがでしたでしょうか。

今回はplotlyを使った株価チャートの描き方について解説しました。

過去のご紹介したmpl_financeやmplfinanceと比べて、インタラクティブで美しいチャートが簡単に描けることが一番の特徴です。

plotlyを使えば、簡単にきれいでかっこいいグラフを描けるので、仕事などでも役立ちます。

僕も最近、仕事でグラフを描くときにはplotlyで書いていることが多くなってきました。(Excel苦手なので。。。)

 

チャートを描くためには、株価データの取得やテクニカル分析の計算が必要になります。

Pythonで株価データを扱う記事については記事が散在しているのでこちらにまとめています。

株価データの取得方法やテクニカル分析の計算方法やその他の可視化方法についてはこちらからどうぞ。

関連記事
【まとめ】Pythonで株価データを扱う
【まとめ】Pythonで株価データを扱う

続きを見る

 

ここまで読んでくださってありがとうございました。

おすすめ
【決定版】Python独学ロードマップ【完全初心者からでもOKです】
【決定版】Python独学ロードマップ【完全初心者からでもOKです】

続きを見る

おすすめ
プログラミングの独学にUdemyをおすすめする理由!【僕はUdemyでPythonを独学しました!】
おすすめ
【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】

データ販売を始めました


オニールとミネルヴィニの投資手法を日本株に適用するために必要なデータの販売を始めました。

あらゆるデータを集約して、誰でも簡単にスクリーニングできるようにCSV形式でデータを提供します。

オニールとミネルヴィニの投資手法を日本株に適用するために必要なデータを販売します!

続きを見る




Pythonの独学ならUdemyがオススメ!


Udemyなら、セール中だと90%オフとかで買えるのでコスパ最強です。

僕はUdemyでPython独学に成功しました。

関連
【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】

続きを見る



関連
プログラミングの独学にUdemyをおすすめする理由!【僕はUdemyでPythonを独学しました!】

続きを見る



Udemyを詳しく見る!



プログラミングスクールもオススメ!



プログラミングスクールもオススメの選択肢です。

初心者をしっかりサポートしてくれるシステムが整っているので、挫折する可能性が一気に下がります。

効率よく最速で学ぶならプログラミングスクールが最適です。

関連
【まとめ】Pythonが学べるおすすめプログラミングスクール

続きを見る



関連
プログラミング学習は独学とプログラミングスクールどちらにすべきか?【結論、全部試すべし!】

続きを見る



関連
高額なプログラミングスクールを利用する価値はあるのか?【結論、人それぞれですw】

続きを見る




TechAcademy (テックアカデミー)


オンラインに特化したプログラミングスクールで、プログラミングの他に動画編集などの豊富なコースが用意されています。







TechAcademyを詳しく見る!



TECH::CAMP (テックキャンプ)


いつでも講師に質問できるチャットシステムが最強です!







TECH::CAMPを詳しく見る!



 

CodeCamp (コードキャンプ)


講師とのマンツーマンレッスンで挫折しない!







CodeCampを詳しく見る!


-Python
-, , , ,

© 2021 気ままなブログ