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)はオレンジ色のマークが付いているやつを見つけるということかと。
【申込】のオレンジ色のマークはLinkになっています。
//【申込】のオレンジ色のマークの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&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に動画を載せているのでよかったらご覧ください。
消していたらごめんなさい。
皆様のなにかの参考になれば幸いです。それでは失礼いたします。