#author("2018-07-13T09:17:05+09:00","","")
#author("2018-07-13T09:21:28+09:00","","")
#navi(../)
* BitfinexのOrderbook APIをPowerShellで取得する(API v1) [#iad13fca]
PowerShellでBitfinexの板情報(注文一覧)を取得する操作例を以下に記します。~

#contents
#htmlinsert(cc-top.html)

* 参考資料 [#uf0624fe]
BitfinexのOrderbook APIドキュメントURL~
Orderbook API仕様は、以下のURLで確認してください。~
https://bitfinex.readme.io/v1/reference#rest-public-orderbook

* 関連記事 [#l03a6798]
-[[Bitfinexの通貨シンボル一覧の取得(API v1)(PowerShell)>API/Bitfinex/通貨ペアのシンボル一覧の取得(API v1)(PowerShell)]]
-[[BitfinexのTickerの取得(API v1)(PowerShell)>API/Bitfinex/Tickerの取得(API v1)(PowerShell)]]
-[[Bitfinexで指定した通貨ペアの取引量を取得する(API v1)(PowerShell)>API/Bitfinex/指定した通貨ペアの取引量を取得する(API v1)(PowerShell)]]
-[[Bitfinexのファンディング情報を取得する(API v1)(PowerShell)>API/Bitfinex/ファンディング情報を取得する(API v1)(PowerShell)]]
-[[Bitfinexの情報(注文一覧)を取得する(API v1)(PowerShell)>API/Bitfinex/情報情報(注文一覧)を取得する(API v1)(PowerShell)]]
-[[Bitfinexの板情報(注文一覧)を取得する(API v1)(PowerShell)>API/Bitfinex/板情報(注文一覧)を取得する(API v1)(PowerShell)]]

* ブラウザでアクセスしてみる [#x6f332db]
以下、URLで板情報(注文一覧)を取得できます。~
-BTC/USD~
https://api.bitfinex.com/v1/book/btcusd~
Firefoxでアクセスした時のスクリーンショットです。~
|''JSON''|
|&ref(01.png);|
|''生データ''|
|&ref(02.png);|



''通貨シンボル一覧(通貨ペア一覧)''については、以下のリンク記事を参考にしてください。
-[[Bitfinexの通貨シンボル一覧の取得(API v1)(PowerShell)>API/Bitfinex/通貨ペアのシンボル一覧の取得(API v1)(PowerShell)]]


* PowerShellによるOrderbook API呼び出しの操作例 [#m9e86ba4]
PowerShellの''Invoke-RestMethod''コマンドレットと、~
''Invoke-WebRequest''+''ConvertFrom-Json''コマンドレットを使って、\~
Bitfinexの板情報(注文一覧)を取得してみます。

** ''Invoke-RestMethod''コマンドレットでOrderbookを取得してみる [#u4af09e3]
''Invoke-RestMethod''コマンドレットを使用して、Bitfinexの板情報(注文一覧)を取得する操作例になります。~

以下の操作例は、''ETH/BTC''の通貨ペアを取得しています。~
''通貨シンボル一覧(通貨ペア一覧)''については、以下のリンク記事を参考にしてください。
-[[Bitfinexの通貨シンボル一覧の取得(API v1)(PowerShell)>API/Bitfinex/通貨ペアのシンボル一覧の取得(API v1)(PowerShell)]]
+Orderbook APIを呼び出し板情報(注文一覧)を取得する
 PS C:\> $v1_orderbook_api = "https://api.bitfinex.com/v1/book/"
 PS C:\> $symbol = "ethbtc"
 PS C:\> $orderbook = Invoke-RestMethod -UseBasicParsing ($v1_orderbook_api + $symbol)
 PS C:\> $orderbook
 
 bids
 ----
 {@{price=0.068902; amount=29.67674981; timestamp=1531439501.0}, @{price=0.068901; amount=0.8700781; timestamp=153143...
+asksの情報数を確認
 PS C:\> $orderbook.bids.Count
 25
+asksの情報数を確認
 PS C:\> $orderbook.asks.Count
 25
+bidsの1番目を表示する
 PS C:\> $orderbook.bids[0]
 price    amount      timestamp
 -----    ------      ---------
 0.068902 29.67674981 1531439501.0
+asksの1番目を表示する
 PS C:\> $orderbook.asks[0]
 
 price    amount     timestamp
 -----    ------     ---------
 0.068903 0.00000632 1531439501.0

Orderbook APIのパラメータを指定して実行した例を以下に記します。~
指定できるパラメータは以下のようになっています。(bitfinexのAPIページより抜粋)
|''Key''|''Required''|''Type''|''Default''|''Description''|
|limit_bids|false|[int]|50|Limit the number of bids returned. May be 0 in which case the array of bids is empty|
|limit_asks|false|[int]|50|Limit the number of asks returned. May be 0 in which case the array of asks is empty|
|group|false|[0/1]|1|If 1, orders are grouped by price in the orderbook. If 0, orders are not grouped and sorted individually|

以下の操作例は、''XRP/USD''の通貨ペアを取得しています。~
+limit_bids, limit_asksに2を指定して実行してみます。
 PS C:\> $v1_orderbook_api = "https://api.bitfinex.com/v1/book/"
 PS C:\> $symbol = "xrpusd"
 PS C:\> $limit_bids = 2
 PS C:\> $limit_asks = 2
 PS C:\> $orderbook = Invoke-RestMethod -UseBasicParsing ($v1_orderbook_api + $symbol + "?limit_bids=${limit_bids}&limit_asks=${limit_asks}")
 PS C:\> $orderbook
 
 bids                                                                                                              asks
 ----                                                                                                              ----
 {@{price=0.43691; amount=31830.683; timestamp=1531440140.0}, @{price=0.43678; amount=22; timestamp=1531440140.0}} {@{price=0.43698; amount=10199.9999592; ti...
+bids, asksの取得件数と取得内容を表示しています。
 
 PS C:\> $orderbook.bids.Count
 2
 PS C:\> $orderbook.asks.Count
 2
 PS C:\> $orderbook.bids
 
 price   amount    timestamp
 -----   ------    ---------
 0.43691 31830.683 1531440140.0
 0.43678 22        1531440140.0
 
 PS C:\> $orderbook.asks
 
 price   amount        timestamp
 -----   ------        ---------
 0.43698 10199.9999592 1531440140.0
 0.43727 3540.06244959 1531440140.0
+groupを指定してみます。
+group=1を指定した操作例です。
 PS C:\> $group = 1
 PS C:\> $orderbook = Invoke-RestMethod -UseBasicParsing ($v1_orderbook_api + $symbol + "?group=${group}")
 PS C:\> $orderbook.bids | Select-Object -First 10
 
 price   amount        timestamp
 -----   ------        ---------
 0.43722 5000          1531440480.0
 0.43706 2367.60426413 1531440480.0
 0.43694 826.2         1531440480.0
 0.43693 142.28        1531440480.0
 0.43689 22            1531440480.0
 0.43668 5199.87000324 1531440480.0
 0.43667 4269.75738489 1531440480.0
 0.43666 484           1531440480.0
 0.43663 4937.93       1531440480.0
 0.4366  1200          1531440480.0
+group=0を指定した操作例です。
 PS C:\> $group = 0
 PS C:\> $orderbook = Invoke-RestMethod -UseBasicParsing ($v1_orderbook_api + $symbol + "?group=${group}")
 PS C:\> $orderbook.bids | Select-Object -First 10
 
 price   amount        timestamp
 -----   ------        ---------
 0.43722 5000          1531440491.0
 0.43693 826.2         1531440491.0
 0.43693 650           1531440491.0
 0.4369  5199.87000324 1531440491.0
 0.43689 22            1531440491.0
 0.43685 142.28        1531440491.0
 0.43685 2303.17109746 1531440491.0
 0.43676 45674         1531440491.0
 0.43674 52858         1531440491.0
 0.43668 4269.78165981 1531440491.0

** ''Invoke-WebRequest''+''ConvertFrom-Json''コマンドレットで板情報(注文一覧)を取得する [#e335548c]
''Invoke-WebRequest''使うことにより、HTTPステータスや、Content-Typeなどを取得することができます。~
取得したContent部分を''ConvertFrom-Json''コマンドレットを使うことにより、Invoke-RestMethodと同様に、~
JSON形式でアクセスすることができます。
+ Invoke-WebRequestでOrderbook APIをアクセス
 PS C:\> $btcusd_book_url = "https://api.bitfinex.com/v1/book/btcusd"
 PS C:\> $response = Invoke-WebRequest -UseBasicParsing $btcusd_book_url
+ 取得したレスポンスを表示します。
 PS C:\> $response
 
 StatusCode        : 200
 StatusDescription : OK
 Content           : {"bids":[{"price":"6229.3","amount":"19.62830209","timestamp":"1531440653.0"},{"price":"6229.2","amount":"0.23","timestamp":"1531440653.0"}
                     ,{"price":"6229","amount":"4.56","timestamp":"1531440653.0"},...
 RawContent        : HTTP/1.1 200 OK
                     Transfer-Encoding: chunked
                     Connection: keep-alive
                     Vary: Accept-Encoding
                     X-Frame-Options: SAMEORIGIN,SAMEORIGIN
                     X-XSS-Protection: 1; mode=block
                     X-Content-Type-Options: nosniff
                     X-...
 Forms             :
 Headers           : {[Transfer-Encoding, chunked], [Connection, keep-alive], [Vary, Accept-Encoding], [X-Frame-Options, SAMEORIGIN,SAMEORIGIN]...}
 Images            : {}
 InputFields       : {}
 Links             : {}
 ParsedHtml        :
 RawContentLength  : 3186
+ステータスコード、HTTP Header, Content-Typeなどの値にアクセスしてみます。
 PS C:\> $response.StatusCode
 200
 
 PS C:\> $response.Headers
 
 Key                       Value
 ---                       -----
 Transfer-Encoding         chunked
 Connection                keep-alive
 Vary                      Accept-Encoding
 X-Frame-Options           SAMEORIGIN,SAMEORIGIN
 X-XSS-Protection          1; mode=block
 X-Content-Type-Options    nosniff
 X-Request-Id              6aa3d30a-da97-4d40-8181-bf11e5240bb7
 X-Runtime                 0.010887
 Strict-Transport-Security max-age=31536000
 Expect-CT                 max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
 CF-RAY                    4397877f4feb9427-NRT
 Cache-Control             max-age=0, private, must-revalidate
 Content-Type              application/json; charset=utf-8
 Date                      Fri, 13 Jul 2018 00:10:55 GMT
 ETag                      W/"b788bc4945a619cf64929682034736c7"
 Set-Cookie                __cfduid=d13699a975ffee3990b7e45dcc2005b7c1531440655; expires=Sat, 13-Jul-19 00:10:55 GMT; path=/; domain=.bitfinex.com; HttpOnly
 Server                    cloudflare
 
 PS C:\> $response.Headers.'Content-Type'
 application/json; charset=utf-8
+ ConvertFrom-Jsonコマンドレットを使うことにより、JSON形式に変換することができます。
 PS C:\> $json = ConvertFrom-Json $response.Content
 PS C:\> $json
 
 bids
 ----
 {@{price=6229.3; amount=19.62830209; timestamp=1531440653.0}, @{price=6229.2; amount=0.23; timestamp=1531440653.0}, @{price=6229; amount=4.56; timestamp=153...

* Webの応答を読み取っています。(Waiting for response)を非表示にする方法 [#e691a36e]
上記のコマンドレットを実行すると、APIサーバとのやり取りのプログレスメッセージが表示されます。~

#ref(51.png)

これを非表示にしたい場合は、以下のようにしてください。

非表示にするには、$ProgressPreferenceにSilentlyContinueを設定します。~
変更前は以下のように Continue が設定されています。

 PS C:\> $ProgressPreference
 Continue

非表示にするには、以下のように変更します。

 PS C:\> $ProgressPreference = "SilentlyContinue"

以上、PowerShellを使って、BitfinexのOrderbook APIを呼び出す方法でした。

#htmlinsert(cc-btm.html)

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