見出し画像

SBIのIPO注文をダブルクリック1回で終わらせたいんじゃ!

SBI証券にはIPOチャレンジポイントという制度があります。
IPOの当選は期待しておりません。
このポイントを貰うために申込だけはやっている状態です。

子供2人の未成年口座も開設してますので、各銘柄3人分の申し込みをしています。
12月はどうやらIPO銘柄が多いようでたくさん申し込みすることになりそうです。
しかし、この手動の作業がめんどヶ丘のどすこい之助に感じたのでこの度bot化しました。ワシはダブルクリック1回で注文を終わらせたいんじゃ!

ということで、seleniumによる自動化に着手しました。
自動化ルートは検討した結果、以下となりました。

・SBI証券にログイン(1)

・新規上場株式ブックビルディング / 購入意思表示 の一覧画面に遷移(2)

・ブックビル申込できる銘柄を探索(3)

・各銘柄の申込画面で申し込み(4)   ※繰り返し

・ログアウト
(5)

(1)は 適当に作ればできると思います。
(2)は 最初少し迷いましたが、下記URLを直接叩けば遷移するようです。

// 新規上場株式ブックビルディング 購入意思表示 一覧画面のURL
https://m.sbisec.co.jp/oeliw011?type=21

(3)はオレンジ色のマークが付いているやつを見つけるということかと。

画像1

【申込】のオレンジ色のマークはLinkになっています。

画像2

//【申込】のオレンジ色のマークのLink先URL
https://m.sbisec.co.jp/oeapw011?type=21&p_cd=7944

実際のソース内は【/oeapw011?type=21&p_cd=7944】みたいですが、よくわからんけど要素内に「oeapw」ってのがあったら、申込できるってことなんかな、知らんけど。

ということで、要素内に【oeapw】ってのがあったら、それはブックビル申込できる銘柄 とみなすこととします。そして、(3)の処理内で(4)でリクエストする申込画面URLを生成します。Javaで書くとこんな感じになりました。

String res = driver.getPageSource();
String[] array = res.split("oeapw");
List<String> linkurlList = new LinkedList<String>();
int index = 0;
String urlPrefix = "https://m.sbisec.co.jp/oeapw";
for (String s : array) {
	if (index == 0) {index++;continue;}
	// ex.【011?type=21&amp;p_cd=4165】-> 【011?type=21&p_cd=4165】
	s = s.substring(0, 25);
	s = s.replace("amp;", "");
	// ex. 【011?type=21&p_cd=4165】->【https://m.sbisec.co.jp/oeapw011?type=21&p_cd=4165】
	// これがIPO申込画面のURL一覧となる
	linkurlList.add(urlPrefix + s);
}

(4)は(3)で作成したURL一覧をつかって繰り返し処理でリクエスト+申込処理を実行しましょう。Javaで書くとこんな感じになりました。

for (String link : linkurlList) {
	// IPO申込画面を開く
	driver.get(link);
	//数量
	driver.findElement(By.name("suryo")).click();
	driver.findElement(By.name("suryo")).sendKeys("100");
	//ストライクプラス
	driver.findElement(By.id("strPriceRadio")).click();
	//取引パスワード
	driver.findElement(By.name("tr_pass")).click();
	driver.findElement(By.name("tr_pass")).sendKeys(order_pw);
	//申込確認
	driver.findElement(By.name("order_kakunin")).click();
    //申込実行
    driver.findElement(By.name("order_btn")).click();
    //一覧画面へ
	driver.get("https://m.sbisec.co.jp/oeliw011?type=21");
}

(5)で忘れずログアウトしましょう。

driver.findElement(By.cssSelector("#logoutM img")).click();
​driver.close();

以上で(1)ー(5)の処理ができるようになりました。

Twitterに動画を載せているのでよかったらご覧ください。
消していたらごめんなさい。


皆様のなにかの参考になれば幸いです。それでは失礼いたします。