Excel Python プログラム

楽天証券で株価・企業情報をPythonでデータ取得する方法

2024/06/30

pythonで株の自動売買をしたい・pythonで株価や企業情報を取得して分析したい場合があるかと思います。

Pythonで株の自動売買や株価・企業情報を取得したい場合、通常apiやSeleniumを使用して取得することになります。
APIであればそこまで問題ないのですが、Seleniumは相手方のサーバーにも負荷をかけるため、個人的にはオススメをしておりません。
また、それなりの学習コストと知識が必要になります。Seleniumでの取得も構わないのですが、もっと楽に株価や企業情報を取得したいですよね。

楽天証券口座を開いている方Windowsを使用している方は、今回ご紹介の方法でデータを取得することができます。

対象者

今回はかなり対象者が限られてきます。以下の条件を満たしている方のみご紹介する方法が可能です。

OS Windows8.1、10
Excel Office 2013、Office 2016、Office 2019
証券口座 楽天証券

データ取得方法

Pythonでのデータ取得方法と書いていますが、Market speedからExcelでデータを取得、その後PythonでExcelデータを読み込むという作業をしております。

PCでMarket speedのアプリケーションにログインして起動している状態じゃないとデータが取得できなかったりするため、完全自動化というわけではないです。
ただ、楽にデータ取得ができるためオススメ。

準備

以下の手順で準備をしていきます。

  1. Market SpeedⅡのダウンロード
  2. Market SpeedⅡ RSSのダウンロード
  3. Market SpeedⅡ RSSをExcelアドインに登録
  4. Excelの設定
  5. PythonでExcelデータの読み込み

楽天証券側の設定

まず初めに楽天側の設定をご紹介して、その後Exceの設定やPythonのプログラムを紹介していきます。
初めにデスクトップにMarket SpeedⅡのダウンロードしていきます。

公式サイト:Market SpeedⅡ

その後、Market SpeedⅡ RSSよりExcelにアドインを登録するための準備をしていきます。

公式サイト:Market SpeedⅡ RSS

ダウンロード完了後、RSS利用同意書を承認してExcelに登録をしていきます。

addinが追加されると以下のようにExcel上でマーケットスピードⅡが追加されます。

Excelの設定

では、まず初めにMarket speedから株価の情報をExcelで取得するための設定をしていきます。
必ずMarket speedのアプリケーションにログインして起動している状態で進めるようにしてください。

今回はMarket speedからチャートの情報を取得する方法で説明していきます。Excelを開き、チャートを選択。

銘柄コードの参照先を「A1」に設定して、表示開始セルを「A3」に設定します。
今回取得項目は全てを取得しようかと思います。

「登録」をクリックすると以下のようになります。

「A1」に株式コードを入力します。今回ソフトバンクの株式コード[9434]を入力します。
するとソフトバンクの株価の情報が取得できます。

以上で設定は完了しましたので、設定ファイルをsample.xlsxで保存。

PythonでExcel読み込み

Excelの設定が出来たらPythonでExcelを読み込むプログラミングをしていきます。
Excelを読み込むためにwin32comを使用いたしますので、インストールしていない人は下記を確認してください。

Pythonを使用してExcelのファイルを開いたり保存する方法

PythonでExcelを読み込むためのコードは下記です。詳細については後で説明をしていきます。


import win32com.client
import time

#株式コードをListに登録(トヨタ[7203] ソフトバンク[9434])
kabu_code_list = [7203, 9434]

#作成したExcelファイルのpath
excel_file_path = r"C:\Users\user\Desktop\sample.xlsx"

#Excelでの操作

#Excelオブジェクト生成
excel = win32com.client.Dispatch('Excel.Application')
#MarketSpeed2_RSS addin
addin_path = r"C:\Users\user\AppData\Local\MarketSpeed2\Bin\rss\MarketSpeed2_RSS_64bit.xll"
excel.RegisterXLL(addin_path)

#Excelの処理を表示をさせる
excel.Visible = True

#Excelファイルを開く
wb = excel.workbooks.Open(Filename=excel_file_path)

#特定のシートを読み込む
excelSheet = wb.worksheets('Sheet1')
for code in kabu_code_list:
    
    #LoopでA1セルに株式コードを入力
    excelSheet.Range("A1").value = code
    time.sleep(2)

    #特定セルの指定
    excelCell = excelSheet.Range("D4:J104")

    #セルの値取得
    print(excelCell.value) 
    
    # >>> (('日付', '時刻', '始値', '高値', '安値', '終値', '出来高'), 
    #      ('2021/03/12', '', 8070.0, 8145.0, 8018.0, 8145.0, 6505000.0), ...

#Excelファイルを保存
wb.Save()

#Excelを閉じる

Pythonコード解説

いくつかコードに関して解説していきます。

Excelのアドインは登録しているのですが、win32comでExcelを起動するとアドインの登録が外れてしまいます。
そのため、自身のアドインが保存されているPathを随時追加しております。


#MarketSpeed2_RSS addin
addin_path = r"C:\Users\user\AppData\Local\MarketSpeed2\Bin\rss\MarketSpeed2_RSS_64bit.xll"
excel.RegisterXLL(addin_path)

Excelの処理を表示させる理由なのですが、ExcelでMarket speedのデータを取得する際にExcel表示がされていないとデータ更新がされないことが影響しています。


#Excelの処理を表示をさせる
excel.Visible = True

リストに格納されている株式コードをLoopで取得して、Excelシートの「A1」に入力。
「A1」に入力すると、Excel上で該当の企業の株価が更新されますので、Pythonでデータ取得するというプログラムとなっています。


#特定のシートを読み込む
excelSheet = wb.worksheets('Sheet1')
for code in kabu_code_list:
    
    #LoopでA1セルに株式コードを入力
    excelSheet.Range("A1").value = code
    time.sleep(2)

    #特定セルの指定
    excelCell = excelSheet.Range("D4:J104")

    #セルの値取得
    print(excelCell.value) 
    
    # >>> (('日付', '時刻', '始値', '高値', '安値', '終値', '出来高'), 
    #      ('2021/03/12', '', 8070.0, 8145.0, 8018.0, 8145.0, 6505000.0), ...

まとめ

今回は簡単にPythonで株価のデータを取得する方法をまとめました。
通常株価のデータを取得する場合は、APIやSeleniumなどWebの知識が必要になったり、APIについて考えたりする必要があります。

ただ、今回の方法はある程度Excelが使えて、簡単なPythonの使い方を知っていれば簡単に株価や企業の情報を取得できるようになります。

Excelをかませて株式の売買も可能になりますので、次回Pythonでその辺の自動化できないか考えてみようかと思います。

-Excel, Python, プログラム