見出し画像

Pythonでやる、SBI証券のIPOブックビルディング申込を自動化

「IPOってのに申込をして当選するだけでなんだか簡単に儲かるらしい。」

IPO投資を始めたての頃ってそのように考える人が多いですよね。私も最初はそう思ってやっていました。

しかしやってみて気が付きました。
全然当たらない。それに何より毎回応募するのがしんどい、面倒臭い。どうせ当たらないし時間ばかり食うのでやめようかな。。。

そのようなIPO応募の面倒さから色々調べたところ「IPO自動化」という存在を知りました。これは便利そうだと思い自分でPythonを勉強し、スクリプトを書けるようになりました。

今回はそのSBI証券 IPO自動化のスクリプトを公開、解説しています。
毎回手動でIPOに応募している人にぜひ見て頂ければ役に立てると思います。

それでは以下がPythonでのスクリプトになります。

from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
from bs4 import BeautifulSoup 
import  chromedriver_binary
from time import sleep
import requests
import time
import re
import json



option = Options()      
option.add_argument('--headless')

driver = webdriver.Chrome()#(options=option)
url = 'https://www.sbisec.co.jp/ETGate'
driver.get(url)

# ログイン情報の記入
lg_id = ""
lg_pass = ""
torihiki_pass = ""


print(f'SBI証券IPO申込を開始します')

elem_username = driver.find_element(By.NAME ,'user_id').send_keys(lg_id)
time.sleep(1)
elem_password = driver.find_element(By.NAME ,'user_password').send_keys(lg_pass)
time.sleep(1)
elem_login_btn = driver.find_element(By.NAME ,'ACT_login').click()
time.sleep(1)

driver.get('https://site1.sbisec.co.jp/ETGate/?OutSide=on&_ControlID=WPLETsmR001Control&_DataStoreID=DSWPLETsmR001Control&sw_page=Offer&cat1=home&cat2=none&getFlg=on&sw_param1=21&sw_param2=')
# 申込ボタンを探索
for num in range(1,7):
    time.sleep(1)
    try:
        element = driver.find_element(By.XPATH ,'//img[@alt=\"申込\"]').click()
        meigaramei = driver.find_element(By.CSS_SELECTOR ,'body > table > tbody > tr > td > table:nth-child(1) > tbody > tr > td > table:nth-child(3) > tbody > tr:nth-child(1) > td > form > table:nth-child(7) > tbody > tr > td > div > font > b').text
        print(meigaramei)



        suryo_element = driver.find_element(By.CSS_SELECTOR ,'body > table > tbody > tr > td > table:nth-child(1) > tbody > tr > td > table:nth-child(3) > tbody > tr:nth-child(1) > td > form > table:nth-child(21) > tbody > tr > td > table > tbody > tr > td:nth-child(1) > table > tbody > tr:nth-child(3) > td')
        suryo = re.search(r'\d+株', suryo_element.text).group()[0:-1] # "(売買単位/100株)"から株数のみを取得
        driver.find_element(By.NAME ,'suryo').send_keys(100)
        driver.find_element(By.ID ,'strPriceRadio').click()
        driver.find_element(By.NAME ,'tr_pass').send_keys(torihiki_pass)
        driver.find_element(By.NAME ,'order_kakunin').click()
        driver.find_element(By.NAME ,'order_btn').click()

        # 新規上場株式ブックビルディング / 購入意思表示画面へ戻る を押下
        driver.find_element(By.CSS_SELECTOR ,'body > table > tbody > tr > td > table:nth-child(1) > tbody > tr > td > table:nth-child(3) > tbody > tr > td > table:nth-child(9) > tbody > tr > td > a').click()            
        discord.post(content= f'{user} SBI証券にて新しいIPOブックビルが完了しました。 {meigaramei} ')

    except:
        driver.quit()

print('IPO申込が完了しました')



# ログイン情報の記入
lg_id = ""
lg_pass = ""
torihiki_pass = ""

""部分にはログインID、ログインパスワード、取引パスワードをそれぞれ入力してください。

IPO申込スクリプトの流れです。
IPO申込についてですがIPO申込一覧のページにて「申込」ボタンを探索し、もし該当があれば申込を行う仕様です。2銘柄以上でも一度で申し込めるように探索を5回繰り返します。

  1. IPO申込銘柄一覧より「申込」ボタンを探索

  2. 「申込」ボタンがあれば注文

  3. もしなければ「申込可能銘柄なし」を出力

また注文は下記条件にて行われます

  • 注文数量 100株

  • ストライクプライスでの申込



おわりに


それではこのスクリプトを使って今までの手動からぜひ自動申込をしてみてください。時間と手間が大幅に減って他のことに時間が回せることを実感できると思います。この度はご購入有難うございました。

他にもPythonの記事を書いています。

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