Python

Pythonのmplfinanceで株価のローソク足チャートを描く方法【コード解説】

2021年5月27日

こんにちは。TATです。

今日のテーマは「Pythonのmplfinanceで株価のローソク足チャートを描く方法【コード解説】」です。

 

株価のローソク足チャートを描くためのライブラリとしてmplfinanceをご紹介します。

元々はmpl_financeというライブラリがありましたが、こちらはすでに廃止されて、今はmplfinanceの使用が推奨されています。

 

mplfinanceを使えば、短いコードで簡単にきれいなローソク足チャートを描くことができます。

テクニカル指標を追加したり、ラベルや表記方法のカスタマイズなど、細かい指定も可能です。

Pythonで株やFXの分析をするにはとてもおすすめのライブラリです。

 

本記事では、Pythonのmplfinanceを使って、株価のローソク足チャートを描く方法について解説して、さらにチャートのカスタマイズ方法テクニカル指標を追加する方法について解説していきます。

 

(おさらい)株価のローソク足データを取得する

まずは株価データの準備です。

 

今回は例としてトヨタ自動車(証券コード: 7203)を使っていきます。

株価データの取得方法については過去の記事で解説しているので詳細は割愛します。

 

次のコードでは、pandas_datareaderを使って、2021年のトヨタ自動車のローソク足データを取得しています。

 

 

これでデータの準備は完了です。

【日本株対応】Pythonで株価のローソク足データを取得する方法まとめ【CSV、ライブラリ、スクレイピング】

続きを見る

 

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

それでは、ここからPythonのmplfinanceを使って、ローソク足チャートを描いていきます。

 

(下準備) データの形式を合わせる

まずはローソク足チャートを描くための下準備です。

 

mplfinanceでチャートを描く際には、引数として渡すDataFrameを指定された形式に整えておく必要があります。

以下にまとめます。

ポイント

  • indexを日付データにする
  • 列は左から順番にOpen, High, Low, Closeとする
  • 出来高を追加する場合はCloseの右にVolumeを追加する

 

列名の順番がポイントで、カラム名はなんでもOKです。

ということでデータを少し整えます。

indexはこのままですでにOKなので、カラムの並び替えだけします。

 

 

これで下準備はOKです。

 

mplfinance.plotでローソク足チャートを描く

それではローソク足チャートを描いてみます。

 

mplfinance.plotを使えば、1行でローソク足チャートを描くことができます。

ローソク足チャートを描くためには、typeをcandleに指定する必要があります。

 

 

簡単ですね。

用意したdfを引き渡して、typeをcandleとすれば完成です。

 

営業日のみのデータが表示される

別記事で紹介しているmpl_financePlotlyを使ってローソク足チャートを描く際には、営業日のみを表示するために少し工夫が必要でした。

mplfinanceはこの心配は不要で、自動的に営業日のみ表示されるようになります。

 

ここに関しては、mplfinanceが最も使い勝手が良いと思います。

 

typeでローソク足チャート以外の表現が可能

typeを変更すれば、ローソク足チャート以外の方法でチャートを描くことができます。

 

選択できるのは次の5つです。

type

  • ohlc(4本値: default設定)
  • candle(ローソク足チャート)
  • line(折れ線グラフ)
  • renko(練行足チャート)
  • pnf(PnFチャート)

 

先ほどご紹介したローソク足チャート以外のタイプの結果も合わせて紹介しておきます。

typeを変更するだけでここまで変化させられるのはとても便利ですね。

 

styleでチャートの見た目を簡単に変更できる

さらに注目すべき点として、styleという引数があります。

これを指定するとチャートの見た目をガラリを変更することができます。

 

指定できるのは以下の通りです。実際はもっとあるかも。。。

style

  • classic
  • charles
  • mike
  • blueskies
  • starsandstripes
  • brasil
  • yahoo
  • binance

 

個人的に一番好きなbinanceで表示してみます。

 

 

だいぶ変わりますよね。色使いがとてもみやすくなりました。

 

その他のstyleについても一覧にまとめました。

typeは一律でcandleにしています。

 

このように、簡単に見た目を変更することができます。

お好みのスタイルがあればそれを使っちゃえばOKです。

コードもスッキリして楽ちんです。

 

色は独自に指定することも可能

styleを指定すると簡単に見た目を変更することができますが、こだわりとかがあって細かくカスタマイズしたい場合には、直接色の指定をすることも可能です。

次の例では、ローソク足の色を細かく指定しています。

 

 

mpf.make_marketcolorsで色を細かく指定することができます。

mpf.make_mpf_styleで指定した設定を読み込ませ、plotでstyleに指定すればOKです。

 

このように、好みのスタイルが見つからない場合は、マニュアルで自由に設定することもできます。

 

日付やラベルのフォーマットを変更する

最後に日付やラベルのフォーマットを変更する方法についてもご紹介しておきます。

日付のフォーマットを2022/01/01のような形式にして、株価の値をカンマ区切りにしてみます。

 

 

日付のフォーマットは、plotのdatetime_formatで指定することができます。

数値データをカンマ区切りにするためには、plotにreturnfig=Trueとしてfigとaxを受け取ります。

 

axはリスト形式になっているので、最初の値を指定してmatplotlib.ticker.FuncFormatterでカンマ区切りに指定することができます。

これでだいぶ見やすくなります。

 

以上で、mplfinanceの基本的な使い方の解説はおしまいです。

 

mplfinanceのローソク足チャートにテクニカル指標を加える

ここからは少し応用編です。

先ほどのローソク足チャートにいろいろなテクニカル指標を加えてみましょう。

 

出来高を追加する

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

 

これは非常に簡単で、volume=Trueを追加するだけOKです。

ただし、Close列の右隣に出来高のカラムを用意しておく必要があります。

 

 

簡単ですね。

 

移動平均線を追加する

次にテクニカル分析の基本となる移動平均線を追加してみます。

 

データの準備すら不要

mplfinanceでは移動平均線を計算する機能が備わっているため、データの準備すら必要ありません。

 

plot()の中にmavという引数を指定すればOKです。

例えば、次のコードでは20日と50日移動平均線を加えています。

 

 

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

 

用意した移動平均線を表示させることも可能

また、自分で用意した移動平均線を表示させることももちろん可能です。

 

次のコードでは、移動平均線を計算して、その結果をローソク足チャートに追加しています。

線の太さや色も指定してみました。

 

 

ここではrolling()を使って移動平均線を計算して、addplotで追加しています。

add_plotの中には、リスト形式で表示したいデータを指定することができます。

 

panelで表示したいチャートを指定します。

上から0, 1, 2...と番号が振られているので、上記のチャートの場合だと、ローソク足チャートがpanel=0、出来高のチャートがpanel=1となります。

 

関連記事
【コード解説】Pythonで株価データから主要なテクニカル分析を計算して可視化する【移動平均線、MACD、RSI】

続きを見る

 

複数のテクニカル指標を組み合わせる

最後に少しレベルアップします。

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

 

ここでは、これまでの移動平均線や出来高に加えて、RSIMACDも追加してみます。

 

MACDとRSIを計算する

まずはMACDRSIを計算します。

ここではそれぞれを計算するための関数を定義してみました。

 

 

これでMACDとRSIの計算ができました。

関連記事
【コード解説】Pythonで株価データから主要なテクニカル分析を計算して可視化する【移動平均線、MACD、RSI】

続きを見る

 

addplotでテクニカル指標をまとめて表示する

それでは計算したRSIとMACDも合わせて表示してみます。

移動平均線を追加した時と同様に、addplotを利用すればOKです。

ついでにフォーマットとかもいい感じに整えてみます。

 

 

きれいなチャートができました。

 

少しコードの中身を解説すると、今回plot()の中でtight_layout, volume_panelという2つのパラメータを追加しました。

tight_layout余白を小さくするオプションです。

volume_panel出来高を表示するチャートを指定することができます。

1にするとローソク足チャートの下にきます。

 

add_plotには、MACDとRSIをそれぞれpanel=2とpanel=3に追加しました。

さらにlegendでpanel=1にSMA20とSMA50を表示しています。

 

少し厄介なのが、axのindexと思います。0, 2, 4, 6で指定しています。

これは各Panelの左軸(主軸)と右軸(2軸)で別々に指定できるためです。

0がpanel=1の左軸, 1がpanel=0の右軸, 2がpanel=1の左軸・・・の順番に指定することができます。

 

ここまでくればチャート分析にも本格的に使えるのではないでしょうか。

mpl_financePlotlyで紹介したコードに比べると、mplfinanceは圧倒的に短いコードできれいなローソク足チャートを描くことができます。

 

データの分析・可視化にはPythonが最適!

本記事で紹介したコードは、全てPythonを使って書いています。

 

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

【いますぐ始められます】データ分析をするならPythonが最適です。

 

また、Python比較的学びやすい言語でもあります。

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

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

 

Python学習方法についてはいろいろな方法があります。

僕はUdemyを選びましたが、書籍プログラミングスクールも選択肢になります。

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

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

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

 

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

 

まとめ

本記事では、「Pythonのmplfinanceで株価のローソク足チャートを描く方法」というテーマで解説してきました。

 

mplfinanceを使えば、短いコードで簡単にきれいなローソク足チャートを描くことができます。

テクニカル指標や表示方法のカスタマイズなどにも対応しており、自由にチャートを作成することが可能です。

 

また、mpl_financePlotlyでは少し厄介だった営業日だけを表示する方法についても、mplfinanceでは特に追加のコードを必要することなく自動的に営業日のみの表示となります。

手軽さで言えば、mplfinanceがローソク足チャートを描けるライブラリの中で最も扱いやすいと思います。

 

株やFXのテクニカル分析でも活用できるレベルのチャートを作成することも可能です。

是非とも本記事で紹介しているコードも利用しつつ、活用してみてください。

 

また、ローソク足チャートが描けるライブラリとしてはPlotlyもおすすめです。

こちらはmplfinanceに比べるとコード量は少し長くなってしまうのですが、インタラクティブなチャートを描くことができます。

チャートを表示後に拡大・縮小したり、ホバーすると該当データが表示されたりして、特に分析には便利です。

もしご興味があれば合わせて読んでみてください。

PythonのPlotlyでインタラクティブな株価のローソク足チャートを描く【コード解説】

続きを見る

 

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

 

Pythonおすすめ学習法

Udemy

Udemyの特徴

  • 高品質の動画教材がリーズナブルに購入できる
  • セール中なら定価の90%オフなどの価格破壊が起こる
  • 講師に直接掲示板から質問ができ、疑問を解消しながらスムーズに学習できる
  • 動画はダウンロード可能で、隙間時間に効率的に学習できる
  •  30日間の返金保証、一度購入すれば視聴期限なく受講可能

\30日返金保証/

Udemy 公式サイトへ

セール中なら90%オフとかで購入可能です!

キカガク

キカガクの特徴

  • Pythonだけでなく、数学の基礎から、環境構築、AIアプリケーション開発まで一気通貫で学べる
  • 自走できるAI・DX人材を育成
  • オンデマンドの講義 + プロの講師に質問し放題、定期的なメンタリング付き
  • 今後増える動画コンテンツを含め、全ての動画コンテンツが一生見放題
  • 専門実践教育訓練給付金制度を利用すると最大で受講料の70%が還元される

\Pythonだけでなく、機械学習やAIの基礎から学べる/

キカガクを詳しく見る

企業の研修材料にも採用される実績と信頼のあるスクールです!

データミックス

データミックスの特徴

  • データサイエンティストが開発・監修した体系的かつ実践的に学べるカリキュラム
  • 「スキル」のみでなく、データサイエンスの本質である「理論」や「思考」が学べる
  • エンジニアに限らず、多様なキャリアを形成・構築できる
  • オンラインチャットツールによる質問対応やコミュニティなどの充実したフォロー体制
  • 専門実践教育訓練給付金の対象講座で授業料の最大70%還付

\データサイエンスとビジネスが学べる/

データミックス(datamix)を詳しく見る!

エンジニア転職だけでなく起業やフリーランスなど多様なキャリア形成・構築に繋がる

「Python」×「株式投資」

Pythonで株式データを扱う記事はこちらでまとめています。

収集・管理しているデータの販売もしています。

Pythonで株価データを扱う方法まとめ【データの取得・分析・可視化等、なんでもできます】

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


-Python
-, , , , ,

© 2022 気ままなブログ