以下の記事の続き。
前提としてトークン取得が必要なので、そこまでの流れはそちらを参照してほしい。
コード
function Get-KabuAPIToken {
param (
[string]$BaseUrl,
[string]$ApiPassword
)
# kabuステーションAPIの設定
$tokenEndpoint = "$BaseUrl/token"
# トークン取得のリクエストボディ
$body = @{ "APIPassword" = $ApiPassword }
# HTTPリクエストオプションの設定
$headers = @{ "Content-Type" = "application/json"; "Accept" = "application/json" }
# トークン取得リクエストを送信
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
return $apikey
} else {
Write-Host "トークン取得に失敗しました: 結果コード $($response.ResultCode)"
return $null
}
}
function Get-SymbolPrice {
param (
[string]$BaseUrl,
[string]$ApiToken,
[string]$Symbol,
[string]$Exchange
)
# kabuステーションAPIの設定
$tokenEndpoint = "$BaseUrl/board"
# ヘッダーにトークンを設定
$headers = @{ "X-API-KEY" = $ApiToken; "Content-Type" = "application/json" }
# リクエストURLの作成
$uri = "$tokenEndpoint/$symbol@$exchange"
# 日経平均情報の取得リクエスト
$response = Invoke-RestMethod -Uri $uri -Method GET -Headers $headers
# レスポンスの返却
if ($response) {
return $response
} else {
Write-Host "取得に失敗しました。"
return $null
}
}
# 関数を使用してトークンを取得
$baseUrl = "http://localhost:18080/kabusapi"
$appPassword = "パスワード"
$apiToken = Get-KabuAPIToken -BaseUrl $baseUrl -ApiPassword $appPassword
# 日経平均の銘柄コードと市場コード
$symbol = "101" # 日経平均の銘柄コード
$exchange = "1" # 東証の市場コード
$symboltPrice = Get-SymbolPrice -BaseUrl $baseUrl -ApiToken $apiToken -Symbol $symbol -Exchange $exchange
Write-Host "現在値: $($symboltPrice.currentPrice)"
ベースURLは("http://localhost:18080/kabusapi"
)は共通なので、トークン取得の関数(Get-KabuAPIToken)についてもを引数で受け取るように変更している。
日経平均の関数(Get-SymbolCurrentPrice)ではベースURL、APIトークン、銘柄コード、市場コードを渡し、APIからレスポンスが返却される。
レスポンスはJson形式で、例えばcurrentPrice
からは現在価格が取得できる。その他の詳細は公式のリファレンスを参照してほしい。
参考