見出し画像

Python で 自動操作! 日本株の時価総額ランキング を取得し、TradingViewで自動でチャート表示

#2022 -03-31 Yahooのサイトの仕様変更分の修正を行いました。
#2021 -08-14 TradingViewの仕様変更に伴う、コードの修正を行いました。
#2020 -12-20 TradingViewの仕様変更に伴う、コードの修正を行いました。
#2020 -08-28 Chromeのバージョンアップに伴い、一部修正しました。
#2020 -04-30 Chromeのバージョンアップに伴い、一部修正しました。
#2019 -10-30 プログラムに一部問題があったようなので修正しました。
#2020 -01-18 プログラムに一部問題があったようなので修正しました。

今後TradingViewの仕様変更によっては、完全対応できない可能性もありますので、その場合はこの記事の公開自体を終了させていただく可能性もあることをご了承いただければと思います。

この記事を読むことで、TradingViewのチャートに自動で次々日本株のチャートを表示することができます。

実際に動いている動画は以下のようになります。

画像1

022-03-31時点でWindows10の環境でPythonとSeleniumを用いて動かしています。

左上の枠に自動で、証券コードが打ち込まれます。
千本ノックではありませんが、
明日の注目銘柄、自分の関している銘柄をいちいち左上のボックス内にコードを打つことなく監視することができます。

毎日、数十から数百銘柄監視する株式トレーダーにとって、銘柄コードを打つことなしに銘柄を順次関していけるのは非常に便利な機能なのではないでしょうか。


この記事でできること

この記事でできることは以下の通りです。

・Pythonによるスクレイピングを用いて、インターネット上にあるランキング順に並んでいる日本株の銘柄リストを取得します。
・取得した銘柄リストをテキストデータであるcsvファイルに出力します。
・出力したcsvファイルをPythonに読み込ませます。
・読み込ませたデータを用いて、TradingView上に株価チャートを表示させます。

自分の注目銘柄、監視銘柄をすでにcsvでお持ちの場合は、「出力したcsvファイルをPythonに読み込ませ」の部分からでいいと思います。

今回は「インターネット上にあるランキング順に並んでいる日本株の銘柄リスト」として、時価総額ランキングを用いますが、場合によっては他のサイトの他のランキング順に変更することもできると思います。例:値上がり率順、配当利回り順など。

PythonからTradingViewを操作しますので、本当に必要な情報だけを相手のサイトにご迷惑をかけしないで取得してください。常識的な用法・容量を守ってください。今回の設定では7秒間待つようにしてあります。

対象者

この記事の対象者は、こんな人です。

・日本株のチャートで投資・トレードすることに興味のある人。
・大量のチャートを短時間で確認する必要があると思っている人。
・Pythonの基礎知識があること もしくは基礎知識取得に興味のある人
・めんどくさい作業はしたくないが、方法は知りたい人。

スクレイピングを行い、他のサイトに必要以上の大量のアクセスを行うことになると困るので、ある程度の基礎知識のある方、基礎知識取得に興味のある人とさせていただきます。


この記事で使用するもの

以下の機能を使います。

・Windows10のPython環境で、Seleniumを使ったブラウザ自動操作
・TradingViewのウェブブラウザで日本株価チャートの表示

通常ウェブブラウザは人の手で操作しますが、Pythonの機能の一つであるSeleniumを使用すると自動操作が可能です。シンプルに動くようにプログラムも必要最低限の短いコードにして、動作するようにしています。今回の動作環境はWindows10で行っていますが、Macでもほぼ同等の操作ができると思います。


WindowsでSelenimunが動くように設定

PythonのインストールとSeleniumのインストール、WebDriverをインストールについては以下のサイトが詳しいので、そちらをご参照ください。


WebDriverに関しては今回の例では
C:\chromedriver_win32\chromedriver.exe
にインストールして、プログラムを書いています。


時価総額ランキングの取得


---2022-03-31:Yahooのサイトの変更により、動かなくなっておりましたので、この部分を修正します。ただ、履歴として残しておきます。

今回はヤフーファイナンスから時価総額のランキングを取得してみます。

Pythonプログラムは以下の通りです。

import pandas as pd
tables = pd.read_html('https://info.finance.yahoo.co.jp/ranking/?kd=4', flavor='bs4', header=0)
display(tables[0].head().append(tables[0].tail()))

pandasは、Pythonにおいて、データ解析を支援する機能を提供するライブラリです。たくさん機能があるのですが、その中のwebページの表(tableタグ)のスクレイピングが簡単に読み込めるread_html機能を使います。

実際に読み込んだ結果は以下の通りです。

画像2

今回は「コード」で出ている証券コードを後程利用することを想定しています。

----ここまでを以下のように修正します。

import pandas as pd
#tables = pd.read_html('https://info.finance.yahoo.co.jp/ranking/?kd=4', flavor='bs4', header=0)

tables = pd.read_html('https://www.nikkei.com/markets/ranking/page/?bd=caphigh', header=4)
display(tables[0].head().append(tables[0].tail()))

画像7


CSVファイルへの出力・読み込み

今回読み込んだデータをCSVファイルとして、出力し、再度CSVファイルの読み込む方法を示します。

Pythonでは、CSVファイルへの書き出しと、読み込みは非常に簡単にできます。すでに興味のあるコードリストをお持ちの場合は読み込みの手順を使うことでそのリストをPythonに読み込ませることができます。

Pythonプログラムは以下の通りです。

tables[0][:-1].to_csv("./code_list.csv")

df_csv = pd.read_csv('./code_list.csv', index_col=0)
display(df_csv.head().append(df_csv.tail()))

一行目が書き出し、最終行を除いたすべてを出力になります。
二行目が読み込み、
三行目が読み込んだデータの表示になります。

結果は以下の通りです。

画像3

上の例では、最終行にコメント行がありましたが、その部分を削ってcsvファイルに出力していますので、今回の読み込みデータではコメント行は入っていません。

#2022 -03-31:コード自体は変更ありませんが、出力結果が以下のように変わりませす。具体的には利用する「コード」となっていたものを「証券コード」として出力・利用するようにしています。

画像8


読み込んだデータを利用してTradingViewの自動操作

Seleniumを用いての自動操作にプログラムは以下の通りです。


#2022 -03-31 WindowsのChromeのバージョンアップ99で動作することを確認しています。
#2021 -08-14 WindowsのChromeのバージョンアップ92で動作することを確認しています。
#2020 -08-27 WindowsのChromeのバージョンアップ85に伴う変更がありました。
#2020 -04-30 WindowsのChromeのバージョンアップに伴う変更分を追記します。

ここから先は

4,833字 / 3画像

¥ 1,800

サポートしていただき大変ありがとうございます。 励みになります。