楽天のマーケットスピード II RSSで市況情報リストを作る

楽天証券のマーケットスピードII RSSは、エクセルのセルにRSSの関数を入力することで株価などの市況情報を表示させることができます。

どれだけの銘柄があって、株価や、PBRがどれくらいで、購入金額がいくらになるのか気になったので、pythonで、エクセルにRSSの関数を自動で入力させて、次のような全証券コードの株価などの市況情報リストを作ることにしました。

1. マーケットスピードのログイン、エクセルでのRSSに接続を行っておく。
2. プログラムを実行する
3. エクセルファイルの表示 
    下のように、証券コード1300から9999まで、順に500ステップずつ入って、存在するコードの場合は、銘柄や株価が入っていきます。
![途中経過.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/165daafa-5924-470a-f42a-3e398d8139e2.jpeg)

4. プログラムが終了するまで待つ。
5. 別のファイルとして、下のような存在する証券コード（かつPBRが0より大きい）銘柄リストが出来上がります。

![excel_result.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/6b4c6bed-88d9-b408-f1ba-91e6dc85bfa3.jpeg)


```Python
#プログラム実行前に次の1と2が必要です

#1. マーケットスピードIIのログイン
#2. エクセルを起動　空白のブックを開く。RSS接続する。

#3. このプログラムを実行する
#4. 開いているエクセル画面を出し、プログラムが終了するまで待つ
#5. 終了したら、作成し保存したリストを確認する

import win32com.client #RSSへ接続するためのエクセル用
from openpyxl import Workbook #エクセル保存用

try:
    xl = win32com.client.GetObject(Class="Excel.Application")   #今、開いている空白のブック
except:
    print("エクセルが開いていません。")
    exit()
xl.Visible=True    

wb=Workbook()   #保存用にエクセルブックを作成
ws=wb.active
ws['A1']="証券コード"
ws['B1']="銘柄"
ws['C1']="現在値"
ws['D1']="単位株数"
ws['E1']="購入可能金額"
ws['F1']="PER"
ws['G1']="PBR"
ws['H1']="ROE"
ws['I1']="出来高"

start_no=1300 #証券コード開始番号
step_no=500 #RSSでは1度に500銘柄まで取得可能
end_no=9999 #証券コード終了番号 

n=0
for j in range(start_no, end_no, step_no):
    xl.Range("A1:I500").ClearContents()
    for i in range(step_no):  #このループはRSS関数を入力して値を表示させる
        stock_no=j+i
        if stock_no<=end_no:        
            xl.Cells(i+1, 1).Formula = str(stock_no)    #株式コード
            xl.Cells(i+1, 2).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"銘柄名称\")" #銘柄
            xl.Cells(i+1, 3).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"現在値\")"   #現在値
            xl.Cells(i+1, 4).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"単位株数\")" #単位株数
            xl.Cells(i+1, 5).Formula = "=C"+str(i+1)+"*"+"D"+str(i+1)   #購入可能金額
            xl.Cells(i+1, 6).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"PER\")" #PER
            xl.Cells(i+1, 7).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"PBR\")"   #PBR
            xl.Cells(i+1, 8).Formula = "=G"+str(i+1)+"/"+"F"+str(i+1)+"*100"   #ROE (PBR/PER)            
            xl.Cells(i+1, 9).Formula = "=RssMarket("+ str(stock_no) + ", " + "\"出来高\")"  #出来高         

    for k in range(step_no):   # このループは、存在する証券コードで、PBRが0より大きいものを、市況リストとして保存用エクセルに入れていく
        stock_no=j+k
        if stock_no<=end_no:        
            stock_name=xl.Cells(k+1, 2).Value
            pbr=xl.Cells(k+1,7).Value
            if stock_name!="" and float(pbr)>0.0:
                n=n+1
                ws[f'A{n+1}']=xl.Cells(k+1,1).Value
                ws[f'B{n+1}']=xl.Cells(k+1,2).Value
                ws[f'C{n+1}']=xl.Cells(k+1,3).Value
                ws[f'D{n+1}']=xl.Cells(k+1,4).Value
                ws[f'E{n+1}']=xl.Cells(k+1,5).Value
                ws[f'F{n+1}']=xl.Cells(k+1,6).Value
                ws[f'G{n+1}']=xl.Cells(k+1,7).Value
                ws[f'H{n+1}']=xl.Cells(k+1,8).Value
                ws[f'I{n+1}']=xl.Cells(k+1,9).Value

#リストを保存 保存先やファイル名は適当に入力してください。
wb.save("C:\\Users\\○○○\\△△△.xlsx")