見出し画像

Pythonで株価データ自動ダウンロード!SBIパイパー2操作自動化の紹介


最初に

こんにちは!
今日は、私のプログラミングポートフォリオの中から、特に興味深いプロジェクトをご紹介します。

このプロジェクトは、Pythonを使用してSBIパイパー2というアプリを操作し、
株価一覧を自動でダウンロードするスクリプトです。

プロジェクトの概要:

このスクリプトは、株価情報を効率よく収集するために開発されました。
具体的には、SBIパイパー2という株取引アプリを自動で操作し、
各銘柄の株価データをダウンロードします。

これにより、株価分析やデータ収集の時間を大幅に削減できます。

事前準備



このプログラムはHYPER SBI 2にログインできる状態(SBI証券の口座を持っている)ことが前提です。
そのうえでPythonが使える環境であり、必要なライブラリはDL済みである、という前提で進ます


また銘柄コードを取得するため、下記のサイトで銘柄の一覧を取得しておいてください

※上記の「東証上場銘柄一覧(202●年●月末)」というExcelファイルです


そのうえでHYPER SBI 2を起動し、
TOP画面からメニューからチャート分析を選択して、
そこから時系列をえらびます。
時系列画面の期間指定を2000年代にして、全期間取得できるようにします

コードの解説

ライブラリのインポート:
まずは、スクリプトで使用するPythonライブラリをインポートします。これには自動化のための pyautogui、データ操作のための pandas などが含まれます。

import pyautogui
import time
from datetime import timedelta
from math import floor
from pathlib import Path
import glob
import numpy as np
import os
import pandas as pd
import talib as ta
from pandas_datareader import data as pdr
import datetime
import math
from math import isinf
import yfinance as yf
import warnings


Excelファイルからデータの読み込み:
次に、Excelファイルから株価をダウンロードするための、
銘柄コードのリストを読み込みます。

current_directory = os.getcwd()
relative_path = 東証上場銘柄一覧のファイルパスを記載してください
absolute_path = os.path.join(current_directory, relative_path)
List_Data = pd.read_excel(absolute_path)

銘柄コードごとの自動操作:
それぞれの銘柄コードに対して、
SBIパイパー2上で自動操作を行います。

start_index = 0

for index, CodeNo in enumerate(List_Data['コード'][start_index:]):
    actual_row_number = start_index + index
    CodeNo = str(CodeNo)
    print(str(actual_row_number) + " : " + str(CodeNo))

    # 自動操作のシーケンス
    pyautogui.moveTo(353, 80)
    pyautogui.click()
    time.sleep(2)
    pyautogui.hotkey('ctrl', 'a')
    time.sleep(2)
    pyautogui.write(CodeNo)
    time.sleep(2)
    for _ in range(2):
        pyautogui.press('enter')
    pyautogui.moveTo(1110, 150)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(1830, 150)
    pyautogui.click()
    time.sleep(1)
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.press('backspace')
    pyautogui.write(CodeNo)
    pyautogui.press('enter')
    time.sleep(5)

上記のコードですがstart_indexで指定した番号の銘柄コードを取得します。
このstart_indexで指定した数字の行を、東証上場銘柄一覧から読み込み、ループ処理を開始します。

以降は「時系列」の画面で座標 (353, 80))にカーソルを移動してクリックし、現在のフィールドのテキストを全選択してから銘柄コード(CodeNo)を入力します。

次にEnterキーを2回押します。これはおそらく、入力したデータを確定し、
CSVファイルをDLします。

DL画面でファイル名を入れるため、別のフィールドのテキストを全選択し、その後、Backspaceキーを押してテキストをクリアし、
銘柄コードを再度入力して、Enterキーで操作します。

DLが終わるまでtime.sleepで待機をします。

この一連の処理をFor文で繰り返します。
※上記の座標に関しては、お使いのPCの環境に合わせて設定してください。

まとめ


このプログラムで株価データを自動で取得をしてくれます。
かなり時間がかかるものではあるので、毎日はお勧めしませんが、
SBI証券のデータが一番株価のデータがしっかりしているので、
過去の株価を検証するためのデータとしては一番いいという考えです。

是非皆様のお役に立ってくださると幸いです。

この記事が気に入ったらサポートをしてみませんか?