auカブコム証券ではRest apiを公開しており、且つ1日信用取引を無料化し、非常に使いやすくなっています。
個人的に楽天証券から乗り換えようかな?と思ってしまっています。
そんな気になるauカブコム証券ですが、今日はauカブコム証券で自動取引をするための入り口である、kabuステーションをPythonで起動するコードを公開いたします。
apiを使おうと思うと、まずはkabuステーションを起動させておかねばなりません。なのでこの証券会社でのapi自動取引では入り口というわけなのです。
筆者は楽天証券派では?と聞かれるかもしれませんが、その昔にapiでの取引を検討していたので、このコードを書いていました。
では、行きましょう。30秒で理解できるのでご安心ください。
import pyautogui #事前にpipでインストールしてください。
import subprocess
import time
kabu_station = None
# kabuステーションを起動します
def start_kabu():
global kabu_station #グローバルにすることで、下のstop_kabuの中でもkabu_stationを動くようにしています。
#kabu_stationのexeファイルはかなり奥底に眠っています。kabuS.exeを検索してパスを下に入れて下さい。
kabu_station_path = r"C:\Users\*************\KabuS.exe"
kabu_station = subprocess.Popen(kabu_station_path)#subprocessはググって調べてください。
time.sleep(10) #起動が完了するまで待つ。普通のwait関数は効きませんでした。
pyautogui.typewrite("********") #パスワード ログインIDは記録させておくため入力しない
time.sleep(1)
pyautogui.keyDown("Enter")
time.sleep(1)
# kabuステーションを停止します
def stop_kabu():
kabu_station.kill()
#上で定義したstart_kabu() stop_kabu()を動かします。
start_kabu()
time.sleep(10)
stop_kabu()
私のプログラミング能力は学生以下ですので、もっと良い方法があれば連絡いただければ幸いです。
特に、subprocessで起動した後、10秒待機としていますが、もっとエレガントに確実に待つ方法があると思うですが、知っている人がいれば是非ともコメントいただけると助かります。
後、プロであればpyautoguiは使わないのだろうなぁ、と思うのですが今回は力技でしのぎました。
このKabuステーションが起動できれば、後はTOKENを取得して、発注コードをAPIで送信するだけで発注ができます。それもPythonでできますので、是非ともチャレンジしてみてください。
<応用>
確か、kabuステーションは朝6時15分には一旦接続を切られます。再ログイン可能なのは朝6時30分から。
そのため、一旦つけてから付けっぱなしという訳にはいかないので、
上のコードをタスクスケジューラーを組み込み、朝に一旦ログインだけしておいて、夕方にはタスクスケジューラーで下の設定でkabuステーションを強制終了する手もあります。
その間に好きなpythonのカブコムAPIを使って好きなだけ運用するという手もあるのです。
↓はタスクスケジューラにおけるKabuステーション強制終了の設定です。参考にしてください。
まとめるとこんな感じ
①朝にKabuステーション起動・ログイン
②好きなだけAPIで取引。タスクスケジューラを使ってもよい。
③Kabuステーションの強制終了。
是非お試しを。
<オススメ書籍>
おそらくはシステムトレーダーは必ず目を通す書籍。
バリュー指標の優位性を45年分のデータで示しています。
絶対に読んでおいて欲しい書籍NO.1。これを読んでおくと、その後論文を読もうかという気持ちにさせてくれます。株の基本的な優位性の取り方が記載されています。