#author("2017-12-20T00:27:05+09:00","","") #navi(../) * coincheckの全取引履歴APIのサンプルコード(PHP) [#g91422c9] &color(red){当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。&br;当サイトの資料により直接的および間接的障害が生じても一切責任を負いません。&br;あらかじめご了承ください。}; &color(red){2017/12/19に仕様変更がありましたので記事を修正しました。};~ 取引履歴取得APIの仕様変更について~ https://coincheck.com/blog/4599 ---- PHPを使って&htmlinsert(coincheck.html);の[[全取引履歴>https://coincheck.com/ja/documents/exchange/api#public-trades]]の使用例を以下に記します。 #contents ---- 以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~ #htmlinsert(coincheck_wide.html) * 関連記事 [#sab66530] -[[API動作環境構築>API/環境構築]] -[[ティッカー(PHP)>API/coincheck/ティッカー(PHP)]] -[[全取引履歴(PHP)>API/coincheck/全取引履歴(PHP)]] -[[板情報(PHP)>API/coincheck/板情報(PHP)]] -[[レート取得(PHP)>API/coincheck/レート取得(PHP)]] -[[販売レート取得(PHP)>API/coincheck/販売レート取得(PHP)]] -[[CoincheckのAPIキー生成手順>API/coincheck/APIキー生成手順]] -[[アカウントの残高確認(PHP)>API/coincheck/残高確認(PHP)]] -[[新規注文・現物売買(PHP)>API/coincheck/新規注文・現物売買(PHP)]] -[[レバレッジ取引のポジション一覧を取得する・positions>API/coincheck/ポジション一覧(PHP)]] * ブラウザで全取引履歴APIを呼び出してみる [#b1cb6001] public APIなので&htmlinsert(coincheck.html);に取引口座を開設していなくても使用することができます。 全取引履歴のAPI仕様(Coincheck APIページから抜粋) ~ https://coincheck.com/ja/documents/exchange/api#public-trades 全取引履歴 最新の取引履歴を取得できます。 HTTP REQUEST GET /api/trades PARAMETERS *pair 取引ペア。現在は "btc_jpy" のみです。 //全取引履歴APIをいろいろ試してみた結果、100件の情報をもっているようです。~ //パラメータのoffsetのスキップ数ですが、0〜99まで指定できました。~ //99を指定すると、1件のみ取得。offsetを指定しない、または0を指定すると最新から50件取得できました。~ //したがって、offsetを指定すると最新から指定した数値分、取引をスキップし残りの取引を表示しているようです。~ //ただし、残りの取引情報が50件以上の場合は50件まで取得できました。 またページネーションパラメータを指定して件数や並び順を指定することができます。 ページネーション coincheckの一部APIではページネーションにてデータを分割して取得することが可能です。 PARAMETERS limit 1ページあたりの取得件数を指定できます。 order "desc", "asc" を指定できます。 starting_after IDを指定すると絞り込みの開始位置を設定できます。 ending_before IDを指定すると絞り込みの終了位置を設定できます。 * ブラウザで全取引履歴を取得する [#hf5c60f3] GETなのでブラウザで全取引履歴を取得することができます。~ 以下のようなURLになります。~ https://coincheck.com/api/trades?pair=btc_jpy 50件取得(limit=50)~ https://coincheck.com/api/trades?pair=btc_jpy&limt=50 * ブラウザで全取引履歴APIにアクセスした結果 [#b033ca9d] 以下ブラウザから上記URLにアクセスしたときの出力です。 -Firefox ver56.0~ JSONが整形され表示されています。~ 見やすいですね。~ (生データをクリックすると上記同様にJSON形式の返却された文字列が表示されます。) #ref(01.png) -Vivaldi #ref(02.png) ---- 以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~ #htmlinsert(coincheck_wide.html) * PHPで全取引履歴APIを呼び出してみる(サンプルソース) [#e83e8b92] PHPのサンプルソースは以下のようになります。 #ref(trades.php.zip) <?php // API doc : https://coincheck.com/ja/documents/exchange/api#public-trades // API url : https://coincheck.com/api/trades $coincheck_url = "https://coincheck.com"; $trades_api = "/api/trades"; $url = $coincheck_url . $trades_api; // arguments -> http query $options = getopt("l:"); if (!check_arguments($options)) { usage(); die(1); } $http_query = array( "pair"=>"btc_jpy" ); foreach ($options as $key => $value) { if ($key == "l") { $http_query["limit"] = $value; } } if (count($http_query) > 0) { $url = $url . "?" . http_build_query($http_query); } // proxy settings $proxy = ""; $proxy_port = ""; $curl = curl_init(); if ($curl == FALSE) { fputs(STDERR, "[ERR] curl_init(): " . curl_error($curl) . PHP_EOL); die(1); } // curl set options curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // set proxy server settings if (!empty($proxy) && !empty($proxy_port)) { curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($curl, CURLOPT_PROXY, $proxy . ":" . $proxy_port); curl_setopt($curl, CURLOPT_PROXYPORT, $proxy_port); } // call trades api $response = curl_exec($curl); if ($response == FALSE) { fputs(STDERR, "[ERR] curl_exec(): " . curl_error($curl) . PHP_EOL); die(1); } curl_close($curl); // json decode $json_decode = json_decode($response, true); if ($json_decode == NULL) { fputs(STDERR, "[ERR] json_decode(): " . json_last_error_msg() . PHP_EOL); die(1); } // output json_decode print_r($json_decode); exit(0); //---------------------------------------------------------- // functions //---------------------------------------------------------- function check_arguments($options) { if (array_key_exists("l", $options)) { if (!ctype_digit($options["l"])) { return FALSE; } } return TRUE; } function usage() { $usage = "Uasge: php trades.php [-l limit]" . PHP_EOL . "Options:" . PHP_EOL . " -l : limit " . PHP_EOL . PHP_EOL; fputs(STDERR, $usage); } * 実行例 [#o4aba1fe] 上記のPHPサンプルソースを実行してみます。~ オプション-lにより指定された数分表示します。~ 数の範囲は0〜99のようです。 $ php trades.php | head -30 Array ( [success] => 1 [pagination] => Array ( [limit] => 10 [order] => desc [starting_after] => [ending_before] => ) [data] => Array ( [0] => Array ( [id] => 63673299 [amount] => 0.009 [rate] => 2110080 [pair] => btc_jpy [order_type] => sell [created_at] => 2017-12-19T15:20:01.000Z ) [1] => Array ( [id] => 63673298 [amount] => 0.03 [rate] => 2110080 [pair] => btc_jpy [order_type] => sell $ php trades.php -l 1 Array ( [success] => 1 [pagination] => Array ( [limit] => 1 [order] => desc [starting_after] => [ending_before] => ) [data] => Array ( [0] => Array ( [id] => 63673728 [amount] => 0.007 [rate] => 2109969 [pair] => btc_jpy [order_type] => sell [created_at] => 2017-12-19T15:21:24.000Z ) ) ) BTC/JPYの取引履歴が返却されます。 以上、&htmlinsert(coincheck.html);のpublic APIである全取引履歴APIのブラウザによるアクセスとPHPによる全取引履歴呼び出しのサンプルコードの記事でした。 ---- 以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~ #htmlinsert(coincheck_wide.html) #br