SBI証券のIPO申し込みを自動化~IPOチャレンジポイントを貯めるために~

はじめに

どーも!ボンネット開け男です!

今日は投資関連の話です
私は三度の飯より負けない勝負が好きです。投資で負けない勝負の筆頭はIPO(新規公開株)を申し込むことです。IPOは初値で売れば9割方利益が出ます。

IPOは株を普段買わない人にはなかなか馴染みがない言葉ですが、最近では「メルカリ」「LINE」「日本郵政」など有名な銘柄のIPOはニュースでも取り上げられていますので、一度は耳にしたことがあるのではないでしょうか。
ただ、IPOする株はなかなか一般人には買えません。というのも、ほとんどの証券会社でIPOの株は抽選販売だからです。(大金持ちを除く)
抽選販売というと「はぁ、宝くじみたいなもんだろ」と思ってしまうそこのあなた!そんなことはありません。というのも、そんなに無謀な確率の抽選ではないからです。地道に申し込めば、年に1、2回当たります。
とにかく、地道に申し込むことが何より大事です。
とは言っても、IPO申し込みって年に100回ぐらいあるうえに、不定期で忘れてしまいがちなんですよね。。。。。当たるかもしれないのに、申し込み忘れてしまっては意味がない。ということで、今日はIPO申し込みを自動化する方法を説明します。皆さんのお役にたてば幸いです。

SBI証券のIPO申し込みを自動化!

SBI証券にした理由

SBI証券で自動化した理由は、外れてもIPOチャレンジポイントが貯まるからです。この記事ではIPOチャレンジポイントの説明は割愛しますが、SBI証券はIPOに外れてもいいことがあるんです。そのため、今回はSBI証券を選択しました。
SBI証券はお金があればあるほど抽選に有利なので、あまり証券口座にお金を入れられない人にとっては当たりづらいんですが、IPOチャレンジポイントも貯まるということで、今回最初に選択しました。次回以降では、SMBC日興証券、カブドットコム証券、マネックス証券あたりを自動化したいと思っています。

IPO申し込み自動化手順

準備物

1.PC(windows)
2.Google Chrome
3.python実行環境(フリーソフト)
4.selenium(フリーソフト)
5.Google ChromeのWebDriver
6.pythonのプログラム
になります。
一つずつ用意の仕方を説明します。

1.PC(windows)

私はwindows7のPCを使いました。windows8.1以上は動作未確認ですが、OS依存のところはないので、動くとは思います。なんでもいいのでWindowsのPCを用意しましょう。

2.Google Chrome

以下からダウンロードしてください。普段使っている方は、そのままで飛ばしてOKです
Google.co.jp – Google Chrome を入手‎
[CHROMEをダウンロード]-[同意してインストール]を押してインストールしてください。

3.python実行環境(フリーソフト)

インストーラーの入手

pythonの公式ページからダウンロードします。公式ページは以下です
python公式ページ‎
真ん中左から2番目の[Downloads]にカーソルを合わせ「Python 3.7.1」をクリックすると、インストーラがダウンロードできます。

インストール

ダウンロードしたインストーラーをダブルクリックすると、インストーラーが起動します。
ここで注意ですが、「Add Python 3.7 to PATH」にチェックを入れて進めましょう。これをしないと後でパスを設定する必要があり面倒です。(環境変数に詳しい方は後で設定でもOK)
あとは、次へを連打するだけでインストールは終わりです

動作の確認

コマンドプロンプトを開いて[python -V]と実行してください。バージョンが返ってくれば無事インストールできています。

4.selenium(フリーソフト)

次にSeleniumのインストールです。pythonが入っていれば、コマンドでインストールすることができます。
コマンドプロンプトで[pip install selenium]と入力します。私の環境はすでにseleniumが入っているので、already satisfaidと出てしまいますが、通常はSuccessfully installedと出ます。

5.Google ChromeのWebDriver

これは、seleniumがGoogle Chromeを操作するために必要になるドライバーです。
以下からダウンロードしてください
ChromeDriverダウンロードのページ‎
最新版はChromeDriver 2.43になります。

Google Chromeとバージョンを合わせる必要がありますが、両方同じ時期に最新版をインストールすれば大丈夫でしょう。(保証はしませんが)

ドライバはOSごとに異なりますが、今回はchromedriver_win32.zipをダウンロードしてください

ダウンロードしたファイルはZIPになっているので展開します。展開するとexe形式になっていますので、これをわかりやすい場所に置いてください。私の場合は、C:\driver\に置いています。

6.pythonのプログラム

プログラムの中身

本当はプログラムの書き方や意味も書きたいのですが、それは別で記事を書きます。
今回は使用するプログラムを記載してしまいます。
以下をメモ帳にコピペして、ipo_register.pyという名前で保存してください。

import sys
args = sys.argv
user_name = args[1]
login_pass = args[2]
torihiki_pass = args[3]
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome(“c:/driver/chromedriver.exe”)
driver.get(“https://www.sbisec.co.jp/ETGate”)
# login
driver.find_element_by_name(“user_id”).send_keys(user_name)
driver.find_element_by_name(“user_password”).send_keys(login_pass)
driver.find_element_by_name(“ACT_login”).click()
# TOPpage
driver.find_element_by_xpath(“//img[@src=’https://a248.e.akamai.net/f/248/29350/7d/pict.sbisec.co.jp/sbisec/images/base02/g_head02_logo.gif’]”).click()
# IPO
driver.find_element_by_xpath(“//img[@src=’https://a248.e.akamai.net/f/248/29350/7d/pict.sbisec.co.jp/sbisec/images/base02/heading_ipopo_01.gif’]”).click()
# register
driver.find_element_by_xpath(“//img[@src=’//a248.e.akamai.net/f/248/29350/7d/pict.sbisec.co.jp/v3/images/common/trading/b_ipo_moshikomi.gif’]”).click()
# IPO_register
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()
# exit
sleep(3)
driver.quit()
プログラムの実行

保存したファイル(ipo_register.py)のカレントディレクトリで以下のように実行します
>python ipo_register.py [ユーザーID] [ログインパスワード] [取引パスワード]
例 ユーザーIDがAAA、ログインパスワードがBBB、取引パスワードがCCCの場合

自動でブラウザが立ちあがって実行が始まるので、じっと見ていましょう
これで終わりです。
IDやパスワードも書いておきたい人は、プログラムの中のargs[1]などのところを編集ください

今後の課題

このプログラムは結構課題があります。
・エラー処理がない
・1銘柄しか申し込めない(複数銘柄の場合、複数回実行)
・100株しか申し込めない
・ストライクプライスしか申し込めない
など。そのほかに課題があれば、是非コメントに書いてください。今後反映します。

まとめ

役に立ちましたでしょうか?
役に立った場合、コメントに何か書いてもらえるとありがたいです。やる気が出ます。
あと、プログラムのところがスマホだと見えづらいの誰か教えて~
次回はBIOSでPC自動立ち上げと、タスクスケジューラーで自動実行、自動シャットダウンを書きます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. IPO初心者 より:

    IPO初心者です。

    申し込みの手間が削減されて、大変参考になりました。
    ありがとうございました。

    SMBC日興証券、マネックス証券、大和証券、みずほ証券、等もそうですが、前受金不要の証券会社(野村証券、岡三オンライン証券、松井証券、等)もあり、そちらも自動化したいと考えており、できれば自分でもコードを書いてみたいと思っております。

    各証券会社のWEBページからどのように情報をとって、コードを書かれているのか、ご教授いただければ幸いです。

    次回の記事もお待ちしております。

    • papa117 より:

      コメントありがとうございます!!
      まさかこの記事を参考になったと言ってくださる方がいるとは!!
      テンション爆上がりです!!!!!!!!!!!!

      基本的には
      ①Webページで右クリックをして「ページのソースを表示」をクリック
      ②その中で自分が入力したい項目のIDを探す
       例)driver.find_element_by_name(“user_id”).send_keys(user_name)のuser_idの部分
      ③そこに入力したい引数を入れる
       例)driver.find_element_by_name(“user_id”).send_keys(user_name)のuser_nameの部分
      ④①~③を繰り返す
      という具合です
      まずは、SBIのサイトで「ページのソースを表示」して、私のソースと比較するといいかと思います

      と、簡単に書いてみましたが、いかがでしょうか?もし分からないことがあれば、お気軽におっしゃってくださいね!
      最近はSBIの主幹事が少なく、SMBCと大和だらけなので、そこから手をつけようかと思います!
      次回記事をお楽しみに!

  2. IPO初心者 より:

    ご返信いただきありがとうございます!
    ご説明いただいた方法で、マネックス証券のログインページを確認してみたところ、なんとかできそうです。
    ありがとうございます。
    ソースを書いてみて上手く動作確認できましたらまたご連絡いたします。

    私のプログラム言語能力もほぼ初心者で、Pythonは未経験、C++は勉強中なのですが、
    この自動化は、Pythonを使わずにC++で実行することも可能なのでしょうか。

    • papa117 より:

      返信が遅くなりすみません!
      seleniumのC++プラグインもあるようなので、できないことはないと思います
      参考URL https://teratail.com/questions/75719

      ただ、プログラミング言語には向き不向きがあります
      用途にあったものを使った方が、ネットから情報を拾いやすいです。
      また、私の職場の周りでブラウザ関連のテストを自動化している何名か有識者に聞きましたが、pythonかRubyでやっているケースがほとんどでした。
      C++はコンパイルする必要があるので、こういうちょっとしたものはスクリプト言語(つまりpythonやRuby)で動かすのが一般的かと思います。

  3. python初心者 より:

    はじめまして。IPO自動応募化できないか探していたらここに行き着きました。詳細にいろいろ書かれており、非常に参考になります。
    ただ、私自身全くのpython初心者で、以下の部分で、以下のエラーメッセージで止まってIPO自動応募ができません。
    ①保存したファイル(ipo_register.py)のカレントディレクトリで以下のように実行します
    →メッセージ
    ‘ipo_register.py’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    あれこれこころ見たのですが、何が間違っているかわからず、苦戦しております。
    何が間違っているかわかりますでしょうか

    • papa117 より:

      コメントありがとうございます!

      まず初歩的なところで恐縮なんですが、pythonにパスは通ってますでしょうか?
      コマンドプロンプトで「python」と打ってみてください