#author("2018-01-30T22:28:22+09:00","","")
#author("2018-01-30T22:28:48+09:00","","")
#navi(../)
* Coincheckレバレッジ取引のポジション一覧を取得するサンプルコード(PHP) [#de2f439e]
PHPを使って &htmlinsert(coincheck.html);レバレッジ取引のポジション一覧(情報)を取得するPHPサンプルコードおよび実行結果を以下に記します。

----
&color(red){当サイトに記載されている会社名、製品名などは一般に各社または団体の商標または登録商標です。&br;当サイトの資料により直接的および間接的障害が生じても一切責任を負いません。&br;あらかじめご了承ください。};
----
#contents
#htmlinsert(cc-top.html)

* 関連記事 [#i35f0a9b]
-[[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の仕様 [#j257ca3b]
ポジション一覧APIはPrivate APIのため、&htmlinsert(coincheck.html);の口座開設が必要となります。~

''ポジションAPIの仕様''(Coincheck APIページから抜粋)~
https://coincheck.com/ja/documents/exchange/api#order-positions

 ポジション一覧
 
 レバレッジ取引のポジション一覧を表示します。レバレッジ取引の注文は 新規注文 から行えます。
 HTTP REQUEST
 
 GET /api/exchange/leverage/positions
 PARAMETERS
     status "open", "closed" を指定できます。
 <省略>
 RESPONSE ITEMS
    id ID
    pair 取引ペア
    status ポジションの状態 ( "open", "closed" )
    created_at ポジションの作成日時
    closed_at ポジションの決済完了日時
    open_rate ポジションの平均取得価格
    closed_rate ポジションの平均決済価格
    amount 現在のポジションの数量(BTC)
    all_amount ポジションの数量(BTC)
    side ポジションの種類 ( "buy", "sell" )
    pl 利益
    new_order 新規注文についての情報
    close_orders 決済注文についての情報

* 新規注文APIサンプルソースを使用する前の準備 [#v33a913b]
本サンプルソースには、$ACCESS_KEY, $SECRET_ACCESS_KEY にAPIキーを設定していません。~
APIキーを準備してください。~
 // Please set ACCESS_KEY and SECRET_ACCESS_KEY
 $ACCESS_KEY = "";
 $SECRET_ACCESS_KEY = "";
APIキーの作成に関しては以下の記事を参考にしてください。~
-[[CoincheckのAPIキー生成手順>API/coincheck/APIキー生成手順]]

本サンプルコードを実行するには、APIキーのパーミッションとして「ポジション一覧」にチェックが必要です。~
#ref(01.png)
#br
APIキーを作成すると、以下のスクリーンショットのように「アクセスキー」「アクセスシークレットキー」が作成されるので、~
サンプルソースの $ACCESS_KEY, $SECRET_ACCESS_KEY に設定してください。
#ref(02.png)
#br

* レバレッジ取引・ポジション取得PHPサンプルコード [#h4b14a5a]
以下にレバレッジ取引・ポジション取得のPHPサンプルコードを記します。
#ref(positions.php.zip)
 <?php
 // API doc : https://coincheck.com/ja/documents/exchange/api#order-positions
 // API url : https://coincheck.com/api/exchange/leverage/positions
 
 // Please set ACCESS_KEY and SECRET_ACCESS_KEY
 $ACCESS_KEY = "";
 $SECRET_ACCESS_KEY = "";
 
 // coincheck leverage positions api url
 $url =  "https://coincheck.com/api/exchange/leverage/positions";
 
 // proxy settings
 $proxy      = ""; 
 $proxy_port = ""; 
 
 // check arguments
 if (!check_arguments($argc, $argv)) {
     usage();
     exit(1);
 }
 
 if ($argc == 2) {
     $url = $url . "?status=" . $argv[1];
 }
 
 // create signature
 $nonce = time();
 $message = $nonce . $url;
 $signature = hash_hmac("sha256", $message, $SECRET_ACCESS_KEY);
 
 // header
 $headers = array(
     "ACCESS-KEY: {$ACCESS_KEY}",
     "ACCESS-SIGNATURE: {$signature}",
     "ACCESS-NONCE: {$nonce}",
     );
 
 $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);
 
 $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($argc, $argv) {
     if (($argc != 1) and ($argc != 2)) { return FALSE; }
     if ($argc == 1) { return TRUE; }
 
     $opts = array("open", "closed");
     if (!in_array($argv[1], $opts)) { return FALSE; };
     return TRUE;
 }
 
 function usage() {
     print("Usage: php positions.php [open|closed]" . PHP_EOL .
           "    open   : show open positions." . PHP_EOL .
           "    closed : show closed postions." . PHP_EOL .
           "    nothing : show open and closed positions." . PHP_EOL
     );
 }


* サンプルコードの使い方 [#x24f172d]
本サンプルコードのusageは以下の通りです。
 Usage: php positions.php [open|closed]
     open   : show open positions.
     closed : show closed postions.
     nothing : show open and closed positions.

オプションは以下の通りです。
- open~
オープンポジションを取得し表示します。
- closed~
クローズポジションを取得し表示します。
- オプションなし(コマンド引数なし)~
オプションポジション、クローズポジション両方を取得し表示します。

* サンプルコード実行例 [#re6b3ece]
** オープンポジション取得 [#b0ac17ff]
オープンポジションの取得実行例です。~
オプションにopenを渡して実行しました。
 $ php positions.php open
 Array
 (
    [success] => 1
    [pagination] => Array
        (
            [limit] => 10
            [order] => desc
            [starting_after] => 
            [ending_before] => 
        )
 
    [data] => Array
        (
            [0] => Array
                (
                    [id] => 1111111
                    [pair] => btc_jpy
                    [status] => open
                    [created_at] => 2017-12-10T23:59:59.000Z
                    [closed_at] => 
                    [open_rate] => 1700000.0
                    [closed_rate] => 
                    [amount] => 0.005
                    [all_amount] => 0.005
                    [side] => buy
                    [pl] => 1234.1234
                    [new_order] => Array
                        (
                            [id] => 222222222
                            [side] => buy
                            [rate] => 
                            [amount] => 
                            [pending_amount] => 0
                            [status] => complete
                            [created_at] => 2017-12-10T23:59:59.000Z
                        )
 
                    [close_orders] => Array
                        (
                        )
 
                )
       )
 )

-Web画面
#ref(03.png)

** クローズポジション取得 [#fd57010d]

クローズポジションの取得実行例です。~
オプションにclosedを渡して実行しました。
 $ php positions.php closed
 Array
 (
    [success] => 1
    [pagination] => Array
        (
            [limit] => 10
            [order] => desc
            [starting_after] => 
            [ending_before] => 
        )
 
    [data] => Array
        (
 <省略>
            [9] => Array
                (
                    [id] => 1234567
                    [pair] => btc_jpy
                    [status] => closed
                    [created_at] => 2017-12-08T01:48:39.000Z
                    [closed_at] => 2017-12-08T02:00:17.000Z
                    [open_rate] => 2060000.0
                    [closed_rate] => 1900000.0
                    [amount] => 0.0
                    [all_amount] => 0.009
                    [side] => buy
                    [pl] => -3000.123
                    [new_order] => Array
                        (
                            [id] => 123456789
                            [side] => buy
                            [rate] => 
                            [amount] => 0.009
                            [pending_amount] => 0
                            [status] => complete
                            [created_at] => 2017-12-08T01:48:38.000Z
                        )
 
                    [close_orders] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 123123123
                                    [side] => sell
                                    [rate] => 
                                    [amount] => 0.009
                                    [pending_amount] => 0
                                    [status] => complete
                                    [created_at] => 2017-12-08T02:00:17.000Z
                                )
                        )
                )
        )
 )

** オプションなしの実行例 [#k158fc52]
数が多いのでgrepにてstatusのみ抽出しました。~
openとclosedの両方の情報が取得できます。
 $ php positions.php  | grep -e open -e closed | grep status
                    [status] => open
                    [status] => closed
 <省略>

以上、Coincheckのpositions APIをつかってレバレッジ取引・ポジション情報を取得するサンプルコードの紹介でした。

#htmlinsert(cc-btm.html)

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