0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シェルスクリプト&PowerShellAdvent Calendar 2024

Day 23

【PowerShell】kabuステーションAPIから指定した市場・銘柄の現在価格を取得する【kabuステーション】

Posted at

以下の記事の続き。
前提としてトークン取得が必要なので、そこまでの流れはそちらを参照してほしい。

コード

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からは現在価格が取得できる。その他の詳細は公式のリファレンスを参照してほしい。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?