概要
前回 kabuステーションをWindowsのVM上に構築しました
今回は実際に API をコールしトークンを取得します
環境
- M2 Pro Mac mini
- macOS 26.4.1
- UTM 4.7.5
- Windows11 Home
- kabuステーション 5.40.0.0
- nginx 1.30.0
- Python 3.12.13
Windows 上に nginx を構築
Python スクリプトを Mac 上からコールするので kabuステーションが外部からアクセスできるように nginx を構築します
Windows 上で直接 Python スクリプトを実行してもいいですがいろいろとハマるので Mac 上から実行します
- nginx for windows のダウンロードとインストール https://nginx.org/en/download.html
- nginx.conf の修正
- nginx.exe の実行
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 28081;
server_name localhost;
proxy_http_version 1.1;
proxy_set_header Host localhost;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
location / {
proxy_pass http://127.0.0.1:18081/;
}
}
}
28081 ポートでアクセスできるようにします
本番の場合は 18080 に proxy します
とりあえずテストなのでバイナリを直接ダブルクリックで実行すれば OK です
起動できているかは localhost:28081/kabusapi にアクセスしてみましょう
停止する場合はタスクマネージャーを使って nginx.exe プロセスを停止します
トークン取得用スクリプト
Windows 上で直接作成しても OK ですし Mac 側で編集/作成して VM 側に共有しても OK です
requests が必要なのでインストールしておきましょう
-
vim fetch_token.py
import requests
# =========================
# 設定
# =========================
API_PASSWORD = "xxx" # kabuステーションで設定したAPIパスワード
BASE_URL = "http://192.168.65.9:28081/kabusapi" # 検証環境
# =========================
# トークン取得
# =========================
def get_token():
url = f"{BASE_URL}/token"
body = {"APIPassword": API_PASSWORD}
res = requests.post(url, json=body)
if res.status_code != 200:
print("ERROR:", res.status_code, res.text)
return None
data = res.json()
return data.get("Token")
if __name__ == "__main__":
token = get_token()
if token:
print("取得成功:")
print(token)
else:
print("トークン取得失敗")
-
uv run python fetch_token.py
これでトークンが表示されれば OK です
API_PASSWORD は前回 API を有効にした際に設定したパスワードを入力しましょう
最後に
kabu ステーション API を使って API をコールするための認証トークンを取得してみました
kabu ステーション API は Windows 上に構築しスクリプトは Mac や Linux 上からコールするようにしましょう
今回はとりあえずバイナリを直接実行していますが本格的に取引を行う場合は自動起動やプロセス監視/ログ監視が必要になると思います
次回は API を使ってポジションの一覧を取得する方法を紹介します