【Python Program】候補銘柄をエクセルに書き出す

条件を満足する銘柄をエクセルに書き出す

全銘柄から
<条件1>売買代金:10億円以上
<条件2>ボラティリティ:15%以上,100%以下
の銘柄をエクセルに書き出すためのプログラムです。

ファイルを保存するフォルダーを用意します。
例)C:\Users\user\Documents\銘柄候補

import openpyxl
import pandas as pd
from kingaku_chk import baibai
from volatil_chk import Volatil 
from volatil_chk import l_value 
import warnings
warnings.simplefilter('ignore')
url = "https://nikkeiyosoku.com/stock/all/"
dfs = pd.read_html(url, match = '銘柄名称')
dfs[0].columns = ['コード', '銘柄名称', '業種', '市場']
fname = "[フォルダー名]/全銘柄.xlsx" #[フォルダー名]:用意したフォルダー名
dfs[0].to_excel(fname, index=False)
wb = openpyxl.load_workbook(fname)
ws = wb["Sheet1"]
wbn = openpyxl.Workbook()
wsn = wbn.worksheets[0]
wsn.title = '候補銘柄'
wsn.cell(1, 1).value = 'コード'
wsn.cell(1, 2).value = '銘柄名称'
wsn.cell(1, 3).value = '業種'
wsn.cell(1, 4).value = '市場'
wsn.cell(1, 5).value = "終値"
wsn.cell(1, 6).value = "売買代金"
wsn.cell(1, 7).value = "ボラティリティ"
r_num = 2
for row in ws.iter_rows(min_row=2):
    if row[0].value is None:
        break
    kingak = baibai(str(row[0].value))
    if kingak[0] == "-":
        continue
    if int(kingak) < 1000000: #10億以下
        continue
    Vol_n = Volatil(str(row[0].value))
    if Vol_n > 1.15 and Vol_n < 2.0:
        wsn.cell(r_num, 1).value = row[0].value 
        wsn.cell(r_num, 2).value = row[1].value 
        wsn.cell(r_num, 3).value = row[2].value 
        wsn.cell(r_num, 4).value = row[3].value 
        wsn.cell(r_num, 5).value = l_value(str(row[0].value))
        wsn.cell(r_num, 6).value = int(kingak)
        wsn.cell(r_num, 7).value = Vol_n
        r_num = r_num + 1
        print(row[0].value, row[1].value, kingak, Vol_n)
sname = "[フォルダー名]/候補銘柄.xlsx" #[フォルダー名]:用意したフォルダー名
wbn.save(sname)

上記のプログラムを実行すると以下のようなエクセルファイルが保存されます。
候補銘柄

Posted by Ish