【Python Program】指定した条件の銘柄をエクセルに書き出す

指定した条件の銘柄をエクセルに書き出す

「投資の森」個別株・全銘柄一覧(https://nikkeiyosoku.com/stock/all
から、下記の条件を満たす銘柄候補をエクセルに書き出すプログラムです。
・株価(終値):70 ~ 1500円
・資本金   :5億 ~ 100億円
・出来高   :1万 ~ 100万株
・決算発表日:本日の前後1ヵ月以内にない

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

import datetime
import openpyxl
import pandas as pd
from stock_history_minmax import l_value  #終値
from stock_history_minmax import dekidaka #出来高
from kingaku_chk import hakko_kabu        #発行株式数
from finance_chk import fin_chk           #資本金
from finance_chk import kessanki          #決算期
from finance_chk import kessan_happyo     #決算発表日
import warnings
warnings.simplefilter('ignore')
sp_min = 70 	 #min株価
sp_max = 1500 	 #max株価
fn_min = 500 	 #min資本金
fn_max = 10000 	 #max資本金
vl_min = 10000 	 #min出来高
vl_max = 1000000 #max出来高
d_today = datetime.date.today()
p_month = d_today - datetime.timedelta(days=30)
a_month = d_today + datetime.timedelta(days=30)

url = "https://nikkeiyosoku.com/stock/all/"
dfs = pd.read_html(url, match = '銘柄名称')
dfs[0].columns = ['コード', '銘柄名称', '業種', '市場']

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
ws.title = '全銘柄'
ws.cell(1, 1).value = 'コード'
ws.cell(1, 2).value = '銘柄名称'
ws.cell(1, 3).value = '業種'
ws.cell(1, 4).value = '市場'
ws.cell(1, 5).value = '決算期'
ws.cell(1, 6).value = '本決算発表日'
ws.cell(1, 7).value = '最終終値'
ws.cell(1, 8).value = '資本'
ws.cell(1, 9).value = '発行済株式数'
ws.cell(1, 10).value = '出来高'

last = dfs[0].iloc[-1,0]
r_num = 0
s_num = 0
while s_num < 4000:
    if dfs[0].iloc[s_num,3] == "東証外国" or dfs[0].iloc[s_num,3] == "東証リート":
        s_num = s_num + 1
        continue
    try:
        s_code = str(dfs[0].iloc[s_num,0])
        sihonk = fin_chk(s_code)
        if sihonk == 0:
            s_num = s_num + 1
            continue
        owarin = l_value(s_code)
        dekida = dekidaka(s_code)
        happyo = kessan_happyo(s_code)
        if owarin >= sp_min and owarin <= sp_max and sihonk >= fn_min and sihonk <= fn_max and dekida >= vl_min and dekida <= vl_max and (happyo < p_month or happyo > a_month):
            ws.cell(r_num + 2, 1).value = dfs[0].iloc[s_num,0]
            ws.cell(r_num + 2, 2).value = dfs[0].iloc[s_num,1]
            ws.cell(r_num + 2, 3).value = dfs[0].iloc[s_num,2]
            ws.cell(r_num + 2, 4).value = dfs[0].iloc[s_num,3]
            ws.cell(r_num + 2, 5).value = kessanki(s_code)
            ws.cell(r_num + 2, 6).value = happyo
            ws.cell(r_num + 2, 7).value = owarin
            ws.cell(r_num + 2, 8).value = sihonk
            ws.cell(r_num + 2, 9).value = int(hakko_kabu(s_code))
            ws.cell(r_num + 2, 10).value = dekida
            r_num = r_num + 1
            print(s_code + " " + dfs[0].iloc[s_num,1])
        s_num = s_num + 1
        if dfs[0].iloc[s_num,0] == last:
            break
    except:
        s_num = s_num + 1
        continue

fname = "C:/Users/user/Documents/銘柄候補/全銘柄.xlsx"
wb.save(fname)

上記のプログラムを実行すると以下のようなエクセルファイルが
フォルダ「C:\Users\user\Documents\銘柄候補」に「全銘柄.xlsx」というファイル名で保存されます。

【プログラムで用いた別ファイルの関数】
・終値と出来高をチェックするプログラム
【Python Program】終値と出来高をチェック
・発行済株式数をチェックするプログラム
【Python Program】発行済株式数をチェック
・資本金、決算期、決算発表日をチェックするプログラム
【Python Program】資本金、決算期、決算発表日をチェック

Posted by Ish