#author("2018-01-14T13:57:04+09:00","","")
#author("2018-01-30T22:32:19+09:00","","")
#navi(../)
* coincheckのレート取得APIのサンプルコード(PHP) [#xc5960e3]
&color(red){当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。&br;当サイトの資料により直接的および間接的障害が生じても一切責任を負いません。&br;あらかじめご了承ください。};
----
PHPを使って&htmlinsert(coincheck.html);の[[レート取得>https://coincheck.com/ja/documents/exchange/api#order-rate]]の使用例を以下に記します。

#contents
----
以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~
#htmlinsert(coincheck_wide.html)
#htmlinsert(cc-top.html)


* 関連記事 [#w481c3b0]
-[[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)]]

-[[レバレッジアカウントの残高サンプル(PHP)>API/coincheck/レバレッジアカウントの残高取得]]
-[[レバレッジ取引注文サンプルコード(PHP)>API/coincheck/レバレッジ取引注文(PHP)]]
-[[レバレッジ取引のポジション一覧を取得する・positions(PHP)>API/coincheck/ポジション一覧(PHP)]]

-[[最近の取引履歴を取得する(PHP)>API/coincheck/最近の取引履歴の取得(PHP)]]




* ブラウザでレート取得のAPIを呼び出してみる [#ld4bc8db]
public APIなので&htmlinsert(coincheck.html);に取引口座を開設していなくても使用することができます。

レート取得のAPI仕様(Coincheck APIページから抜粋) 
- レート取得のAPI~
https://coincheck.com/ja/documents/exchange/api#order-rate

 取引所の注文を元にレートを算出します。
 GET /api/exchange/orders/rate
 PARAMETERS
 
     *order_type 注文のタイプ("sell" or "buy")
     *pair 取引ペア。現在は "btc_jpy" のみです。
     amount 注文での量。(例)0.1
     price 注文での金額。(例)28000


** BTCの数量で取引レート(価格)を取得する [#fa89d839]
GETなのでブラウザでレートを取得することができます。~
以下のようなURLになります。
 https://coincheck.com/api/exchange/orders/rate?order_type=<sellまたはbuy>&pair=btc_jpy&amount=数量
-1BTCを売値レート、1BTCを買値レートを取得する場合は以下のようなURLになります。~
--1BTC売値レート~
https://coincheck.com/api/exchange/orders/rate?order_type=sell&pair=btc_jpy&amount=1
--1BTC買値レート~
https://coincheck.com/api/exchange/orders/rate?order_type=buy&pair=btc_jpy&amount=1
#br
-0.5BTCを売値レート、0.5BTCを買値レートを取得する場合は以下のようなURLになります。~
--0.5BTC売値レート~
https://coincheck.com/api/exchange/orders/rate?order_type=sell&pair=btc_jpy&amount=0.5
--0.5BTC買値レート~
https://coincheck.com/api/exchange/orders/rate?order_type=buy&pair=btc_jpy&amount=0.5

** 指定した金額で売買できるBTC量を取得する [#y5bbcf59]
以下のようなURLになります。
 https://coincheck.com/api/exchange/orders/rate?order_type=<sellまたはbuy>&pair=btc_jpy&price=金額
-200000円に必要なBTC量、200000で買えるBTC量を取得する場合は以下のようなURLになります。~
--200000円を得るために必要なBTC量~
https://coincheck.com/api/exchange/orders/rate?order_type=sell&pair=btc_jpy&price=200000
--200000円で買えるBTC量~
https://coincheck.com/api/exchange/orders/rate?order_type=buy&pair=btc_jpy&price=200000

** ブラウザでアクセスした結果 [#g98705bd]
以下ブラウザから上記URLにアクセスしたときの出力です。
-[[Vivaldi>https://vivaldi.com/?lang=ja_JP]]~
JSON形式で返却された文字列がそのまま表示されているのが確認できます。
#ref(01.png)
#br
-Firefox ver56.0~
JSONが整形され表示されています。~
見やすいですね。
#ref(02.png)
#br
生データをクリックすると上記同様にJSON形式の返却された文字列が表示されます。
#ref(03.png)

----
以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~
#htmlinsert(coincheck_wide.html)


* PHPでレート取得APIを呼び出してみる(サンプルソース) [#wd409a0b]
PHPのサンプルソースは以下のようになります。
#ref(order-rate.php.zip)
 <?php
 // API doc : https://coincheck.com/ja/documents/exchange/api#order-rate
 // API url : https://coincheck.com/api/exchange/orders/rate
 
 $options = getopt("s::b::a:p:");
 if (!check_arguments($options)) {
     usage();
     die(1);
 }
 // arguments -> http query
 $http_query = array();
 $http_query["pair"] = "btc_jpy";
 foreach ($options as $key => $value) {
     if     ($key == "b") { $http_query["order_type"] = "buy"; }
     elseif ($key == "s") { $http_query["order_type"] = "sell"; }
     elseif ($key == "p") { $http_query["price"]  = $value; }
     elseif ($key == "a") { $http_query["amount"] = $value; }
 }
 
 $coincheck_url  = "https://coincheck.com";
 $order_rate_api = "/api/exchange/orders/rate";
 $url = $coincheck_url . $order_rate_api . "?" . 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 order-rate 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('s' ,$options) xor array_key_exists('b' ,$options))) {
         return FALSE;
     }
     if (!(array_key_exists('a',$options) xor array_key_exists('p' ,$options))) {
         return FALSE;
     }
     return TRUE;
 }
 
 function usage() {
     $usage =
     "Uasge: php order_rate.php OPTIONS" . PHP_EOL .
     "  php order-rate.php -s|-b -a AMOUNT" . PHP_EOL .
     "    or" . PHP_EOL .
     "  php order-rate.php -s|-b -p PRICE" . PHP_EOL . PHP_EOL .
     "Options:" . PHP_EOL .
     "  -s : sell" . PHP_EOL .
     "  -b : buy" . PHP_EOL .
     "  -a value : BTC amount" . PHP_EOL .
     "  -p price : trading JPY" . PHP_EOL . PHP_EOL .
     "e.g." . PHP_EOL .
     "  - 0.5BTC sell rate". PHP_EOL .
     "    php order-rate.php -s -a 0.5" . PHP_EOL .
     "  - 100000JPY sell rate". PHP_EOL .
     "    php order-rate.php -s -p 100000" . PHP_EOL .
     "  - 0.5BTC buy rate". PHP_EOL .
     "    php order-rate.php -b -a 0.5" . PHP_EOL .
     "  - 100000JPY buy rate". PHP_EOL .
     "    php order-rate.php -b -p 100000" . PHP_EOL .
     PHP_EOL;
     fputs(STDERR, $usage);
 }

* 実行例 [#gee95001]
上記のPHPサンプルソースを実行してみます。

** サンプルソースのオプション [#c388fd84]
サンプルソースを実行するには、以下のようのオプションが必要になります。
- -s : sell
- -b : buy
上記のどちらかのオプションを必ず設定してください。
- -a : BTC数量
- -p : JPY
上記のどちらかのオプションを必ず設定してください。

** 実際に動かしてみた [#caff08db]
- sell 数量0.5BTCのレートを取得
 $ php order-rate.php -s -a 0.5
 Array
 (
     [success] => 1
     [rate] => 814459.0
     [amount] => 0.5
     [price] => 407229.5
 )
- buy 数量0.5BTCのレートを取得
 $ php order-rate.php -b -a 0.5
 Array
 (
     [success] => 1
     [rate] => 814857.77312
     [amount] => 0.5
     [price] => 407428.8865622
 )
- sell 10000円に必要なBTC数量
 $ php order-rate.php -s -p 10000
 Array
 (
     [success] => 1
     [rate] => 814853.14309
     [amount] => 0.01227215
     [price] => 10000.0
 )
- buy 10000円で買えるBTC数量
 $ php order-rate.php -b -p 10000
 Array
 (
     [success] => 1
     [rate] => 814984.63346
     [amount] => 0.01227017
     [price] => 10000.0
 )

以上、&htmlinsert(coincheck.html);のpublic APIであるレート取得をブラウザによるアクセスとPHPによるレート取引呼び出しのサンプルコードの記事でした。


----
以下のバナーは&htmlinsert(coincheck.html);へのリンクです。~
#htmlinsert(coincheck_wide.html)
#br

#htmlinsert(cc-btm.html)


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