auカブコム証券では専用のツール(kabuステーション)を通してAPIで株取引を行うことができ、公式サイトでExcelマクロやJavaScriptのサンプルコードが公開されている。
本稿ではGPT-4の補助の元、PowerShellでトークン取得までを作成した。
事前準備
kabuステーションAPIを使用するには、事前にkabuステーションをインストールし、各種設定を済ませて起動しておく必要がある。詳細については公式サイトを参照してほしい。
auカブコム証券のプランについて
APIの利用にはProfessionalプラン (旧Fintechプラン) 以上の適用が必要だが、2024年6月よりプランの条件が緩和されている。
以前は信用取引口座か先物オプションプラン取引口座の開設に加え、「前月で当社全取引における約定が1回以上」が必要だったが、これが「前々々月~前営業日で当社全取引における約定が1回以上」に変更された。
単純に期間が伸びた上、月の途中でも取引を行えば翌営業日からは利用できるようになる。筆者は月末近くまで取引しなかった場合はAPI適用のために適当に株を買って即売ったりしていたが、緩和後の条件であれば自然に条件を満たせそうである。
コード
function Get-KabuAPIToken {
param (
[string]$ApiPassword
)
# kabuステーションAPIの設定
#$baseUrl = "http://localhost:18080/kabusapi" #本番用
$baseUrl = "http://localhost:18081/kabusapi" #検証用
$tokenEndpoint = "$baseUrl/token"
# トークン取得のリクエストボディ
$body = @{ "APIPassword" = $ApiPassword }
# HTTPリクエストオプションの設定
$headers = @{ "Content-Type" = "application/json"; "Accept" = "application/json" }
# トークン取得リクエストを送信
Write-Host "トークン取得リクエストを送信中..."
try {
$response = Invoke-RestMethod -Uri $tokenEndpoint -Method POST -Headers $headers -Body ($body | ConvertTo-Json -Depth 1)
} catch {
Write-Host "トークン取得中にエラーが発生しました: $($_.Exception.Message)"
return $null
}
# トークン取得成功時の処理
if ($response.ResultCode -eq 0) {
$apikey = $response.Token
Write-Host "トークン取得成功"
return $apikey
} else {
Write-Host "トークン取得に失敗しました: 結果コード $($response.ResultCode)"
return $null
}
}
# 関数を使用してトークンを取得
$appPassword = "ここにAPIパスワードを設定"
$apiToken = Get-KabuAPIToken -ApiPassword $appPassword
if ($apiToken) {
Write-Host "取得したトークン: $apiToken"
} else {
Write-Host "トークンの取得に失敗しました。"
}
取り回ししやすいように関数で定義している。
ここで取得したトークンを使い各種リクエストを行うのだが、本稿ではここまで。
参考