#author("2018-05-12T23:50:54+09:00","","")
#author("2018-05-17T20:23:34+09:00","","")
#navi(../)
* PowerShellでbitFlyerの板情報を取得・getboard [#a4d3c45c]
&color(red){当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。&br;当サイトの資料により直接的および間接的障害が生じても一切責任を負いません。&br;あらかじめご了承ください。};
----

PowerShellを使ってbitFlyerの[[板情報>https://lightning.bitflyer.jp/docs]]APIの使用例を以下に記します。

#contents
#htmlinsert(bitflyer_full.html)

* 関連記事 [#m70f2fe0]
-[[板情報(PowerShell)>API/bitFlyer/板情報の取得(PowerShell)]]
-[[マーケットの一覧(PowerShell)>API/bitFlyer/マーケットの一覧の取得(PowerShell)]]
-[[Ticker(PowerShell)>API/bitFlyer/Tickerの取得(PowerShell)]]



* 板情報APIの仕様など [#r2d7fa61]
HTTP Public APIなのでbitFlyerに取引口座を開設していなくても使用することができます。

板情報のAPI仕様(bitFlyer APIページから抜粋) ~

 リクエスト
 GET /v1/getboard
 GET /v1/board

 クエリパラメータ
 product_code: マーケットの一覧で取得できる product_code または alias のいずれかを指定してください。 省略した場合の値は BTC_JPY です。

 レスポンス
 {
   "mid_price": 33320,
   "bids": [
     {
       "price": 30000,
       "size": 0.1
     },
     {
       "price": 25570,
       "size": 3
     }
   ],
   "asks": [
     {
       "price": 36640,
       "size": 5
     },
     {
       "price": 36700,
       "size": 1.2
     }
   ]
 }

* ブラウザで板情報(getboard)を取得する [#f24e453e]
GETなのでブラウザで板情報を取得することができます。~
以下のようなURLになります。~
https://api.bitflyer.jp/v1/getboard

* ブラウザで板情報APIにアクセスした結果 [#a6320e71]
以下ブラウザから上記URLにアクセスしたときの出力です。

FirefoxではJSONが整形され表示されています。~
見やすいですね。~
(生データをクリックすると上記同様にJSON形式の返却された文字列が表示されます。)
#ref(01.png)
#ref(02.png)

* Invoke-RestMethodコマンドレットでbitFlyerの板情報を取得する [#k0ff5464]
+板情報を取得するURL(API)を設定します。
 PS C:\> $board_api = "https://api.bitflyer.jp/v1/getboard"
+Invoke-RestMethodコマンドレットを使用し、返却された情報を$board変数に代入します。
 $board = Invoke-RestMethod -UseBasicParsing -Uri $board_api
+取得した板情報を表示しています。
 PS C:\> $board
 
 mid_price bids
 --------- ----
  985268.0 {@{price=985140.0; size=0.061}, @{price=984792.0; size=0.01}, @{price=984787.0; size=0.01}, @{price=984777.0; siz...
+取得したmid_priceとasks, bidsの取得件数を表示してみます。
 PS C:\> $board.mid_price
 985268.0
 PS C:\> $board.asks.Count
 2118
 PS C:\> $board.bids.Count
 2869
+とても件数が多いので、asks, bidsの先頭から10件表示してみます。
PS C:\> $board.asks | % { "$($_.price) : $($_.size)" } | Select-Object -First 10
 985396.0 : 2.0171
 985400.0 : 0.056
 985499.0 : 0.0199
 985500.0 : 11.885
 985574.0 : 0.003
 985589.0 : 0.01
 985595.0 : 1.0
 985690.0 : 1.2
 985901.0 : 0.02
 985999.0 : 0.50000013
 
 PS C:\> $board.bids | % { "$($_.price) : $($_.size)" } | Select-Object -First 10
 985140.0 : 0.061
 984792.0 : 0.01
 984787.0 : 0.01
 984777.0 : 0.01
 984771.0 : 0.00253457
 984454.0 : 0.48
 984453.0 : 2.67272649
 984452.0 : 0.6034
 984451.0 : 0.039
 984382.0 : 0.01000004

*HTTPステータスなどを一緒に取得したい場合 † [#w53ef9c4]
上記では、Invoke-RestMethodにてJSONをPowerShellで扱いやすい状態に変換してくれます。
しかし、Webサーバから返却された値を変換せず、取得後JSONを別のコマンドレットで変換する操作手順を以下に記します。

+ 板情報を取得するURLを設定します。
 PS C:\> $board_api = "https://api.bitflyer.jp/v1/getboard"
+ Invoke-WebRequestコマンドレットでサーバからのレスポンスを$resに格納します。
 PS C:\> $res = Invoke-WebRequest -UseBasicParsing -Uri $board_api
+ 取得したレスポンスは以下の通りです。
 PS C:\> $res
 
 StatusCode        : 200
 StatusDescription : OK
 Content           : {"mid_price":984918.0,"bids":[{"price":984788.0,"size":0.039},{"price":984751.0,"size":0.01},{"price":9846
                     51.0,"size":0.23050078},{"price":984650.0,"size":0.50000013},{"price":984649.0,"size":1.411689...
 RawContent        : HTTP/1.1 200 OK
                     Transfer-Encoding: chunked
                     Connection: keep-alive
                     Pragma: no-cache
                     Request-Context: appId=cid-v1:e4fbc941-a2df-48ac-bbac-f2180e904002
                     X-Content-Type-Options: nosniff
                     X-XSS-Protec...
 Forms             :
 Headers           : {[Transfer-Encoding, chunked], [Connection, keep-alive], [Pragma, no-cache], [Request-Context, appId=cid-v
                     1:e4fbc941-a2df-48ac-bbac-f2180e904002]...}
 Images            : {}
 InputFields       : {}
 Links             : {}
 ParsedHtml        :
 RawContentLength  : 158809
+HTTPステイタスを取得しています。
 PS C:\> $res.StatusCode
 200
+Contentに取得した情報が格納されています。
 PS C:\> $json = ($res.Content | ConvertFrom-Json)
 PS C:\> $json
 
 mid_price bids
 --------- ----
  984918.0 {@{price=984788.0; size=0.039}, @{price=984751.0; size=0.01}, @{price=984651.0; size=0.23050078}, @{price=984650....
 
 
 PS C:\> $json.mid_price
 984918.0
 PS C:\> $json.asks[0]
 
    price       size
    -----       ----
 985049.0 0.68455953

以上、PowerShellを使って、bitFlyerの板情報を取得・getboardからの返却値を表示する方法でした。

#htmlinsert(bitflyer_full.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS