PythonでSBI証券に自動ログインして株価チェックする(Mechanize編)

投資の成功のコツは
 

「マイルール」を愚直に守ること

 

誰が言い始めたが調べても分からないが、一般常識になっている格言だ。

 
 


 
 

そんな、私自身には、次の格言も送っておく。

 

株のマイルールは作って満足、守って完成

 
 

はい。今まで、作って満足してました・・・。

 
 

でも、システムトレードはルールを作り、ルールを守るための施策だったはず。

Protraを使ったバックテスト環境の構築
Pythonや人工知能の学習を兼ねてというのは目的ではないことを再認識しました。目的投資で利益を得たい問題心理的に弱くて損切りや確定売りができない確固たる手法がないので自信がないサラリーマンなので平日投資は出来ない課題再...

【目的】 投資で安定的に長期的な利益を得ること
【問題】 ルールがなく心理的に弱く投資で勝てない。継続的にコツコツが苦手
【課題】 再現性があり、精神的に負担のない投資手法確立
【施策】 完全自動な環境を構築し、バックテストによる手法の妥当性確認後に実践を行う

 
 

 

8月には実践投入という計画だったので、一ヶ月程度遅延しているが準備をしていく。

因みに、過去2回、自動化に挑戦しています・・・。

Pythonによるシステムトレード(sbi証券ログイン)
10年前にシステムトレードをVBSで検討したが、結局何もせずに終わった。Deep Learningを使っても株の勝率60%程度だと色々なブログで書かれており、自動売買は夢なのかな・・・。pythonの学習とDee...
NOVAでお金を失って株の自動売買を検討
2007年11月09日(金) NOVAにまた授業料支払いか・・・世の中には二種類の人間がいるんだ。一人は前例を基にいい仕事をする。一人は前例を壊すことを仕事にしている。前者が文系で、後者が理系だ。...

でも、そもそも「ストラテジー」無いのに自動化をしたため、何も発展がなかった。

 
 

今回は今まで作ったストラテジーを動作させる事を目標に、少しずつ自動化の環境を整えよう。

まずは、ゴールデンウィークに作っていたライブラリを今更公開しておく。

まず、どのライブラリを使うべきか?

近々、証券会社がREST APIを公開される可能性があるが、独自で作るなら有名なライブラリには次のものがある。

ライブラリ名 実行速度 コード量
requests 早い 多い
Mechanize 普通 少ない
Selenium やや遅い 少ない

 

SBI証券では、聞くところによると1.5秒以内の高速処理が出来ない制約がついているらしい。

であればコード量との費用対効果より「Mechanize」を使用する。
 

Seleniumは、一銘柄の購入まで22秒かかったと書かれている記事も存在したし、有名すぎて今更感

SBIcommライブラリを使ってみる&修正方法

このライブラリはSBI証券を経由して、株の売買を行う。

GitHub上に存在するのを発見した。

GitHub - neka-nat/SBIcomm: Communicate with the SBI securities
Communicate with the SBI securities. Contribute to neka-nat/SBIcomm development by creating an account on GitHub.

 
 

必要なライブラリは次の通り。

コードをPython3化して動作するようにする

Python3対応と、幾つかのライブラリの挙動が違うため、その部分の修正を行う。

修正したコードはGitHubに置いた。

https://github.com/nehori/SBIcomm/blob/master/SBIcomm/SBIcomm.py

差分は次のとおり。

そんなに難しいことはしていない。

ライブラリに対する修正は最低限としておく。

売買部分のソースコード

ここから本題。

SBIcommの修正は最低限にして、SBIcommを継承することで追加のライブラリ機能を実現することにする。

今回は、ライブラリ拡張方法を理解するため、

  • ログインして最新の現在値を返す

という部分を実装する。

最終的には Protra等で「翌日買うべき銘柄」を抽出した後に購入判定を行うため、銘柄リストの読み込みも用意した。

ファイルのフォーマットは次のとおりです。

(銘柄番号),(購入価格),(購入数)

例)

実行結果

結果表示は至ってシンプルだ。

日付と時間、そして株価が返ってくる。

リアルタイムな株価が取得できていれば成功だ。

まとめ

ログインして発注まで行うことができた。

SBI証券では、日取りの信用取引による売買の方が手数料が安いので、少しずつ拡張していくことにする。

 
 

少し飽きてるので、飽きないように継続実装しなきゃなぁ・・・・。

Selenium編も執筆した。

PythonでSBI証券に自動ログインして株価チェックする(selenium編)
春は曙 夏は夜 秋は夕暮れ 冬はつとめて・・・・。春は野草夏はガサガサ秋は釣り冬は森・・・・・・・・と自然と戯れて現実逃避し過ぎた・...
タイトルとURLをコピーしました