coincheckの新規注文API(orders)の現物注文サンプルコード(PHP) †PHPを使って Coincheck のBTC現物注文・新規注文APIのサンプルコードを以下に記します。 当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。 スポンサーリンク 関連記事 †新規注文APIの仕様 †残高APIはPrivate APIのため、
Coincheck
の口座開設が必要となります。 新規注文APIの仕様(Coincheck APIページから抜粋) 新規注文 取引所に新規注文を発行します。 たとえば、10 BTC を 30000 JPY/BTC で買いたい場合は、以下のように指定します。 rate: 30000, amount: 10, order_type: "buy", pair: "btc_jpy" 買い注文の場合、指定した価格よりも低い価格での売り注文が既に存在していれば、その売り注文を安い順に決済します。売り注文が足りなかった場合は未決済の注文として残ります。売り注文の場合も同様です。 注文方法について order_type は全部で8つあります。 "buy" 指値注文 現物取引 買い "sell" 指値注文 現物取引 売り "market_buy" 成行注文 現物取引 買い "market_sell" 成行注文 現物取引 売り "leverage_buy" 指値注文 レバレッジ取引新規 買い "leverage_sell" 指値注文 レバレッジ取引新規 売り "close_long" 指値注文 レバレッジ取引決済 売り "close_short" 指値注文 レバレッジ取引決済 買い <省略> POST /api/exchange/orders PARAMETERS *pair 取引ペア。現在は "btc_jpy" のみです。 *order_type 注文方法 rate 注文のレート。(例)28000 amount 注文での量。(例)0.1 market_buy_amount 成行買で利用する日本円の金額。(例)10000 position_id 決済するポジションのID stop_loss_rate 逆指値レート ( 逆指値とは? ) <省略> 新規注文APIサンプルソースを使用する前の準備 †本サンプルソースには、$ACCESS_KEY, $SECRET_ACCESS_KEY にAPIキーを設定していません。 // Please set ACCESS_KEY and SECRET_ACCESS_KEY $ACCESS_KEY = ""; $SECRET_ACCESS_KEY = ""; APIキーの作成に関しては以下の記事を参考にしてください。 本サンプルソースを実行するには、APIキーのパーミッションとして「新規注文」にチェックが必要です。 APIキーを作成すると、以下のスクリーンショットのように「アクセスキー」「アクセスシークレットキー」が作成されるので、 新規注文API・BTC現物売買 PHPサンプルソース †以下に
Coincheck
の残高APIを呼び出すサンプルソースを記します このサンプルコードでは、注文入力を行い(order_ui.php)、新規注文を行う(new_order.php)の2つのサンプルコードファイルから構成されています。 注文入力 †order_ui.phpはBTCの数量、価格等を入力するファインクション群のサンプルコードです。 <?php //---------------------------------------- // order ui functions //---------------------------------------- function order_ui() { $rate = input_rate(); $amount = input_amount(); $order_type = input_buy_sell(); printf( "Rate[BTC/JPY] : %d" . PHP_EOL . "Amount[BTC] : %f" . PHP_EOL . "Price[JPY] : %f" . PHP_EOL . "Order type : %s" . PHP_EOL , $rate, $amount, $rate*$amount, $order_type); if(!yes_no_quit()) { die(0); } $order = array('rate'=>$rate, 'amount'=>$amount, 'order_type'=>$order_type); return $order; } //---------------------------------------- function input_amount() { while(TRUE) { print("Amount[BTC](quit if empty): "); $n = trim(fgets(STDIN)); if(empty($n)) { print("Quit." . PHP_EOL); die(0); } elseif(!is_numeric($n)) { printf("[ERROR] " . $n . " is not numeric." . PHP_EOL); } else { break; } } return $n; } //---------------------------------------- function input_rate() { while(TRUE) { print("Rate[BTC/JPY](quit if empty): "); $rate = trim(fgets(STDIN)); if(empty($rate)) { print("Quit." . PHP_EOL); die(0); } elseif(!ctype_digit($rate)) { printf("[ERROR] " . $rate . " is not integer." . PHP_EOL); } else { break; } } return $rate; } //---------------------------------------- function input_buy_sell() { while(TRUE) { print("Order type [buy/sell](quit if empty): "); $type = trim(fgets(STDIN)); if(empty($type)) { print("Quit." . PHP_EOL); die(0); } elseif(!strcasecmp($type, "buy")) { break; } elseif(!strcasecmp($type, "sell")) { break; } else { print("Please check the input." . PHP_EOL); } } return strtolower($type); } //---------------------------------------- function yes_no_quit() { while (TRUE) { print("OK? [yes/no/quit] :"); $ok = trim(fgets(STDIN)); if(!strcasecmp($ok, "yes")) { $ok = TRUE; break; } elseif(!strcasecmp($ok, "no")) { print("Order canceled." . PHP_EOL); $ok = FALSE; break; } elseif(!strcasecmp($ok, "quit")) { print("Quit." . PHP_EOL); $ok = FALSE; break; } else { print("Please check the input." . PHP_EOL); } } return $ok; } BTC現物注文・サンプルコード †以下のサンプルコードでは、上記のorder_ui.phpを呼び出し、注文内容を入力後、 <?php // API doc : https://coincheck.com/ja/documents/exchange/api#order-new // API url : https://coincheck.com/api/exchange/orders // order ui require("./order_ui.php"); // Please set ACCESS_KEY and SECRET_ACCESS_KEY $ACCESS_KEY = ""; $SECRET_ACCESS_KEY = ""; // BTC/JPY only $currency_pair = "btc_jpy"; // proxy settings $proxy = ""; $proxy_port = ""; // coincheck order api url $url = "https://coincheck.com/api/exchange/orders"; // Post data type $json = FALSE; // $json ? POST data is JSON : POST data is Query string // input order $order = order_ui(); // post data $postdata_array = array( "rate" => $order["rate"], "amount" => $order["amount"], "order_type" => $order["order_type"], "pair" => $currency_pair); if($json) { $postdata = json_encode($postdata_array); // POST data is JSON } else { $postdata = http_build_query($postdata_array); // POST data is Query string } // create signature $nonce = time(); $message = $nonce . $url . $postdata; $signature = hash_hmac("sha256", $message, $SECRET_ACCESS_KEY); // header $headers = array( "ACCESS-KEY: {$ACCESS_KEY}", "ACCESS-SIGNATURE: {$signature}", "ACCESS-NONCE: {$nonce}", ); if ($json) { // $json ? POST data is JSON : POST data is Query string array_push($headers, "Content-Type: application/json"); } $curl = curl_init(); if ($curl == FALSE) { fputs(STDERR, "[ERR] curl_init(): " . curl_error($curl) . PHP_EOL); die(1); } // 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); } curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); $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); 実行例 †以下に、上記サンプルコードを実行した結果を記します。 BTCの注文内容を入力している時の出力です。 $ php new_order.php Rate[BTC/JPY](quit if empty): 300000 Amount[BTC](quit if empty): 0.005 Order type [buy/sell](quit if empty): buy Rate[BTC/JPY] : 300000 Amount[BTC] : 0.005000 Price[JPY] : 1500.000000 Order type : buy OK? [yes/no/quit] :yes 以下、yesを入力しEnterキーを押すことにより注文が発注されました。 Array ( [success] => 1 [id] => 999999999 [amount] => 0.005 [rate] => 300000.0 [order_type] => buy [pair] => btc_jpy [created_at] => 2017-??-??T00:00:00.000Z [market_buy_amount] => [stop_loss_rate] => ) 以下、
Coincheck
のWeb画面です。 新規注文APIのエラーについて †以下によく発生すると思われるエラーについて記します。 invalid authentication エラーになった場合 †以下のようにERRORが出た場合は、APIキーの設定に誤りがないか確認してください。 $ php balance.php [ERROR] : invalid authentication This api is not permitted... エラーになった場合 †APIキーの設定を確認してください。 $ php balance.php [ERROR] : This api is not permitted, Please set permission. https://coincheck.com/api_settings 注文エラー †その他にも以下のように残高不足などのエラーも出力されます。
以上、 Coincheck の新規注文APIを使ってBTC新規注文をするサンプルコードおよび実行結果でした。 スポンサーリンク |