#author("2018-06-07T00:24:53+09:00","","")
#author("2018-07-05T09:58:05+09:00","","")
#navi(../)
* PowerShellでCoinExchange.ioのgetmarketsummary APIにアクセスしてみる [#p2696160]

GetMarketSummar''ies''(getmarketsummar''ies'') APIでは、すべての通貨ペアのサマリ情報が表示されました。~
今回は通貨ペアを特定するMarketIDを指定して、指定した通貨ペアのマーケットサマリ情報が取得できるgetmarketsummary APIについて記します。~

GetMarketSummar''ies''(getmarketsummar''ies'') APIについては、以下の記事を参考にしてください。
-[[マーケットサマリ情報取得・getmarketsummaries(PowerShell)>API/CoinExchange.io/マーケットサマリ情報取得・getmarketsummaries(PowerShell)]]

#contents
----
&htmlinsert(coinexchange.io.html);へのリンク~
#htmlinsert(coinexchange.io.logo.html)
----

* 関連記事 [#x1a8caaa]
* 追記 [#zb78b109]
-2018/7/5~
''「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=CR の後には LF を指定しなければなりません。」''~
が出力されるようであれば、以下リンク記事を参考にしてください。~
-[[Section=ResponseHeader Detail=CR の後には LF...の対処方法>http://win.just4fun.biz/?PowerShell/%E4%BE%8B%E5%A4%96...Section%3DResponseHeader%20Detail%3DCR%20%E3%81%AE%E5%BE%8C%E3%81%AB%E3%81%AF%20LF...%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95]]


* 関連資料・記事 [#ied9425c]
-[[CoinExchange.io API v1 Reference>http://coinexchangeio.github.io/slate/]]
-[[マーケット一覧情報取得・getmarkets(PowerShell)>API/CoinExchange.io/マーケット一覧情報取得・getmarkets(PowerShell)]]
-[[マーケットサマリ情報取得・getmarketsummaries(PowerShell)>API/CoinExchange.io/マーケットサマリ情報取得・getmarketsummaries(PowerShell)]]
-[[指定した通貨ペアのマーケットサマリ情報を取得・getmarketsummary(PowerShell)>API/CoinExchange.io/指定した通貨ペアのマーケットサマリ情報を取得・getmarketsummary(PowerShell)]]
-[[MarketID一覧情報を取得する>API/CoinExchange.io/MarketID一覧を取得する・getmarkets(PowerShell)]]
-[[仮想通貨一覧を取得・getcurrencies>API/CoinExchange.io/仮想通貨一覧を取得・getcurrencies(PowerShell)]]
-[[指定した通貨の通貨情報を取得する・getcurrency>API/CoinExchange.io/指定した通貨の通貨情報を取得する・getcurrency(PowerShell)]]


* getmarketsummary APIをブラウザでアクセスしてみる [#c4a4d3b4]
以下のURLは、XSH/DOGEペアのサマリが表示されます。(2018/6/6確認)~
https://www.coinexchange.io/api/v1/getmarketsummary?market_id=705
#ref(01.png)
#br
ちなみにmarket_idを指定しないとエラーが返却されました。
#ref(02.png)

* MarketIDの一覧を取得する [#ce5b8ff7]
getmarketsummary APIにはmarket_idにMarketIDを指定しないと動作しません。~
このMarketIDの一覧は getmarkets APIで取得できます。~
以下、実際に取得する手順を記します。

getmarkets APIに関しては以下の記事を参考にしてください。
-[[マーケット一覧情報取得・getmarkets(PowerShell)>API/CoinExchange.io/マーケット一覧情報取得・getmarkets(PowerShell)]]

+ PowerSehllを起動します。
+ 以下のように入力し実行すると、$markets.resultに&htmlinsert(coinexchange.io.html);のマーケット一覧が格納されます。~
セキュリティプロトコルをTLS1.2に指定します。
 PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 PS C:\> $getmarkets_url = "https://www.coinexchange.io/api/v1/getmarkets"
 PS C:\> $markets = Invoke-RestMethod -UseBasicParsing $getmarkets_url
+変数$marketsにgetmarkets APIが返却した内容が格納されています。
 PS C:\> $markets
 
 success request            message result
 ------- -------            ------- ------
 1       /api/v1/getmarkets         {@{MarketID=18; MarketAssetName=Litecoin; MarketAssetCode=LTC; MarketAssetID=2; M...
+829個の情報が格納されているのが確認できます。~
また、一番最初の配列に格納されている情報を表示してみます。
 PS C:\> $markets.result.Count
 829
 PS C:\> $markets.result[0]
 
 
 MarketID         : 18
 MarketAssetName  : Litecoin
 MarketAssetCode  : LTC
 MarketAssetID    : 2
 MarketAssetType  : currency
 BaseCurrency     : Bitcoin
 BaseCurrencyCode : BTC
 BaseCurrencyID   : 1
 Active           : True
+先頭から10件表示してみます。
+先頭から10行表示してみます。
 PS C:\> $markets.result | Format-Table | Select-Object -First 10
 
 MarketID         MarketAssetName  MarketAssetCode  MarketAssetID    MarketAssetType  BaseCurrency     BaseCurrencyCode BaseCurrencyID             Active
 --------         ---------------  ---------------  -------------    ---------------  ------------     ---------------- --------------             ------
 18               Litecoin         LTC              2                currency         Bitcoin          BTC              1                            True
 19               Unobtanium       UNO              3                currency         Bitcoin          BTC              1                            True
 20               Syscoin          SYS              5                currency         Bitcoin          BTC              1                           False
 21               Dogecoin         DOGE             4                currency         Bitcoin          BTC              1                            True
 22               Kobocoin         KOBO             6                currency         Bitcoin          BTC              1                            True
 23               Bitz             BITZ             7                currency         Bitcoin          BTC              1                           False
 24               Digitalcoin      DGC              8                currency         Bitcoin          BTC              1                            True
 25               Megacoin         MEC              9                currency         Bitcoin          BTC              1                            True
 PS C:\>
一番左側にMarketIDが表示されています。~
実際に、XSH通貨ペアのMarketIDを検索した例が以下です。
 PS C:\> $markets.result | Format-Table | Out-String -Stream | Select-String XSH
 
 704      Shield                      XSH             532           currency        Bitcoin         BTC              1                True
 705      Shield                      XSH             532           currency        Dogecoin        DOGE             4                True
 706      Shield                      XSH             532           currency        Ethereum        ETH              70               True

* MarketIDが特定できたので、market_idに値を指定しマーケット一サマリを取得してみる [#p46ca2d6]
上記の操作により、MarketIDが取得&特定できたので、getmarketsummary APIを呼び出してみます。

以下の例はXSH/ETHになります。
 PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 PS C:\> $getmarketsummary_api = "https://www.coinexchange.io/api/v1/getmarketsummary"
 PS C:\> $market_id = 706
 PS C:\> $response = Invoke-RestMethod -UseBasicParsing "${getmarketsummary_api}?market_id=${market_id}"
 PS C:\> $response.result
 
 
 MarketID       : 706
 LastPrice      : 0.00004701
 Change         : -11.29
 HighPrice      : 0.00006440
 LowPrice       : 0.00004701
 Volume         : 2.82678779
 BTCVolume      : 0.22518192
 TradeCount     : 37
 BidPrice       : 0.00004260
 AskPrice       : 0.00005400
 BuyOrderCount  : 96
 SellOrderCount : 432

#ref(03.png)

* HTTPステータスなどを一緒に取得したい場合はInvoke-WebRequestコマンドレットを利用する [#ye939cb8]

上記では、Invoke-RestMethodにてJSONをPowerShellで扱いやすい状態に変換してくれますが、~
Webサーバから返却された値を変換せずに取得したい場合は、Invoke-WebRequestコマンドレットを使用します。~
また、取得後にJSONをPowerShellで扱いやすいオブジェクトに変換するには、''ConvertFrom-Json''コマンドレットを使用します。~
以下に実行例を記します。
+Invoke-WebRequestで以下のように取得しました。
 PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 PS C:\> $XshEth = "https://www.coinexchange.io/api/v1/getmarketsummary?market_id=706"
 PS C:\> $response = Invoke-WebRequest -UseBasicParsing $XshEth
 PS C:\> $response
 
 
 StatusCode        : 200
 StatusDescription : OK
 Content           : {"success":"1","request":"\/api\/v1\/getmarket","message":"","result":{"MarketID":"706","LastPrice":"0.00004701","Change":"-11.29","
                     HighPrice":"0.00006440","LowPrice":"0.00004701","Volume":"2.82678779...
 RawContent        : HTTP/1.1 200 OK
                     Connection: keep-alive
                     x-frame-options: SAMEORIGIN
                     Content-Length: 338
                     Cache-Control: no-cache
                     Content-Type: application/json
                     Date: Wed, 06 Jun 2018 15:16:28 GMT
                     Set-Cookie: vis...
 Forms             :
 Headers           : {[Connection, keep-alive], [x-frame-options, SAMEORIGIN], [Content-Length, 338], [Cache-Control, no-cache]...}
 Images            : {}
 InputFields       : {}
 Links             : {}
 ParsedHtml        :
 RawContentLength  : 338
+ HTTPステータスやContent-Typeを簡単に取得することができます。
 PS C:\> $response.StatusCode
 200 
 PS C:\> $response.Headers.'Content-Type'
 application/json
+ ConvertFrom-Jsonを使ってみます。
 PS C:\> $json = ConvertFrom-Json($response.Content)
 PS C:\> $json
 
 success request           message result
 ------- -------           ------- ------
 1       /api/v1/getmarket         @{MarketID=706; LastPrice=0.00004701; Change=-11.29; HighPrice=0.00006440; LowPrice=0.00004701; Volume=2.82678779; ...
 
 PS C:\> $json.result
 
 
 MarketID       : 706
 LastPrice      : 0.00004701
 Change         : -11.29
 HighPrice      : 0.00006440
 LowPrice       : 0.00004701
 Volume         : 2.82678779
 BTCVolume      : 0.22518192
 TradeCount     : 37
 BidPrice       : 0.00004260
 AskPrice       : 0.00005397
 BuyOrderCount  : 96
 SellOrderCount : 435

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

#ref(09.png)

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

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

 PS C:\> $ProgressPreference
 Continue

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

 PS C:\> $ProgressPreference = "SilentlyContinue"

以上、PowerShellを使って、&htmlinsert(coinexchang.io.html);の getmarketsummaryとgetmarkets APIを使って通貨ペアのマーケット情報を取得する操作例でした。


----
&htmlinsert(coinexchange.io.html);へのリンク~
#htmlinsert(coinexchange.io.logo.html)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS