このエントリーをはてなブックマークに追加


zaifのtrades・全ての取引履歴を取得APIのサンプルコード(PHP)

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


PHPを使ってZaiftrades・全ての取引履歴を取得APIの使用例を以下に記します。


以下のバナーはZaif へのリンクです。

関連記事

ブラウザで全ての取引履歴を取得APIを呼び出してみる

公開APIなのでZaif に取引口座を開設していなくても使用することができます。

「trades・全ての取引履歴を取得」API仕様(Zaif APIページから抜粋)
http://techbureau-api-document.readthedocs.io/ja/latest/public/2_individual/5_trades.html

trades
全ての取引履歴を取得します。

リクエスト
/trades/{currency_pair}
例. https://api.zaif.jp/api/1/trades/btc_jpy
currency_pairに指定できる値は currency_pairs を参照してください。

パラメータ
なし

戻り値

キー	詳細	型
date	取引日時	UNIX_TIMESTAMP
price	取引価格	float
amount	取引量	float
tid	取引ID	int
currency_pair	通貨ペア	str
trade_type	取引種別	

上記の指定するcurrency_pairsですが、以下のAPIサンプルコードを実行して取得したcurrency_pairsを使用しています。

ブラウザで全ての取引履歴を取得

GETなのでブラウザで全ての取引履歴を取得することができます。
以下は{currency_pair}にmona_btcを指定しています。
https://api.zaif.jp/api/1/trades/mona_btc

ブラウザで全ての取引履歴を取得APIにアクセスした結果

以下ブラウザから上記URLにアクセスしたときの出力です。

  • Firefox ver56.0
    JSONが整形され表示されています。
    見やすいですね。
    (生データをクリックすると上記同様にJSON形式の返却された文字列が表示されます。)
    01.png

以下のバナーはZaif へのリンクです。

PHPで「trades・全ての取引履歴を取得」APIを呼び出してみる(サンプルコード)

PHPのサンプルコードは以下のようになります。
(btc_jpy通貨ペアで試すと返却される件数が150だったので上位15件表示するようになっています。)

<?php
// API doc : http://techbureau-api-document.readthedocs.io/ja/latest/public/2_individual/5_trades.html
// API url : https://api.zaif.jp/api/1/trades/{currency_pair}

// trades api urr
$zaif_api_url  = "https://api.zaif.jp/api/1/trades/";

// proxy settings
$proxy      = "";
$proxy_port = "";

$currency_pairs = array(
     "bch_btc" ,"bch_jpy" ,"bitcrystals_btc"
    ,"bitcrystals_jpy" ,"btc_jpy" ,"cicc_btc"
    ,"cicc_jpy" ,"eth_btc" ,"eth_jpy"
    ,"fscc_btc" ,"fscc_jpy" ,"jpyz_jpy"
    ,"mona_btc" ,"mona_jpy" ,"ncxc_btc"
    ,"ncxc_jpy" ,"pepecash_btc" ,"pepecash_jpy"
    ,"sjcx_btc" ,"sjcx_jpy" ,"xcp_btc"
    ,"xcp_jpy" ,"xem_btc" ,"xem_jpy"
    ,"zaif_btc" ,"zaif_jpy"
);

if (!check_arguments($argc, $argv, $currency_pairs)) {
    usage();
    die(1);
}

// show currency pairs
if ($argv[1] == "list") {
    print("- currency_pairs -" . PHP_EOL);
    foreach ($currency_pairs as $value) {
        printf("%s" . PHP_EOL, $value);
    }
    exit(0);
}

$currency = $argv[1];

$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_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
curl_setopt($curl, CURLOPT_URL, $zaif_api_url . $currency);
$response = curl_exec($curl);
if ($response == FALSE) {
    fputs(STDERR, "[ERR] curl_exec(): " . curl_error($curl) . PHP_EOL);
    die(1);
}

// 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);
}

curl_close($curl);

//print_r($json_decode);
$show_limit = 15;
$i = 0;
print("--- " . $currency . " ---" . PHP_EOL);
foreach($json_decode as $trade) {
    $i++;
    printf("%s: %f\t%f\t%s" . PHP_EOL,
    date("Y-m-d H:i:s", $trade["date"]),
    $trade["price"],
    $trade["amount"],
    $trade["trade_type"]);
    if ($i > $show_limit) { break; }
}

exit(0);

//------------------------------
// function
//------------------------------
function check_arguments($argc, $argv, $currency_pair) {
    if ($argc != 2) {
        return FALSE;
    }
    $opts = $currency_pair;
    array_push($opts, "list");
    if (!in_array($argv[1], $opts)) {
        return FALSE;
    }
    return TRUE;
}

function usage() {
    fputs(STDERR,
        "Usage: php trades.php OPTION" . PHP_EOL .
        "OPTION:" . PHP_EOL .
        "   list : show all currency pair code" . PHP_EOL .
        "   currency pair code : show specified currency pair trades" . PHP_EOL .
        "       e.g. php trades.php btc_jpy" . PHP_EOL .
        PHP_EOL);
}

実行例

上記のPHPサンプルソースを実行してみます。
trade API取得できたdate 取引日時, price 取引価格, amount 取引量, trade_type 取引種別を表示します。

オプション

本サンプルソースのオプション(引数)について以下に説明します。

  • list 通貨ペアコード一覧を表示します。
  • 通貨ペアコード(e.g. btc_jpy) 指定した通貨ペアコードの全ての取引履歴を表示します。

listで実行

指定できる通貨ペア一覧表示されます。

$ php trades.php list
- currency_pairs -
bch_btc
bch_jpy
bitcrystals_btc
bitcrystals_jpy
btc_jpy
cicc_btc
cicc_jpy
eth_btc
eth_jpy
fscc_btc
fscc_jpy
jpyz_jpy
mona_btc
mona_jpy
ncxc_btc
ncxc_jpy
pepecash_btc
pepecash_jpy
sjcx_btc
sjcx_jpy
xcp_btc
xcp_jpy
xem_btc
xem_jpy
zaif_btc
zaif_jpy

通貨ペアコードを指定して実行

以下、BTC/JPY, XEM/JPYの全ての取引履歴を取得した例になります。

  • BTC/JPY
    $ php trades.php btc_jpy
    --- btc_jpy ---
    2017-11-09 23:15:17: 828440.000000	0.002600	ask
    2017-11-09 23:15:17: 828440.000000	0.002600	ask
    2017-11-09 23:15:16: 828440.000000	0.002600	ask
    2017-11-09 23:15:15: 828220.000000	0.023600	ask
    2017-11-09 23:15:15: 828435.000000	0.017400	ask
    2017-11-09 23:15:14: 828480.000000	0.000800	bid
    2017-11-09 23:15:14: 828450.000000	0.001000	bid
    2017-11-09 23:15:14: 828440.000000	0.017400	bid
    2017-11-09 23:15:12: 828220.000000	0.038400	ask
    2017-11-09 23:15:12: 828435.000000	0.002600	ask
    2017-11-09 23:15:12: 828440.000000	0.002600	bid
    2017-11-09 23:15:12: 828410.000000	0.029400	bid
    2017-11-09 23:15:12: 828410.000000	0.020600	bid
    2017-11-09 23:15:12: 828405.000000	0.001100	bid
    2017-11-09 23:15:12: 828360.000000	0.000200	bid
    2017-11-09 23:15:11: 828360.000000	0.001800	bid
  • XEM/JPY
    $ php trades.php xem_jpy
    --- xem_jpy ---
    2017-11-09 23:15:48: 23.599800	4300.000000	bid
    2017-11-09 23:15:13: 23.550000	1748.900000	ask
    2017-11-09 23:15:13: 23.550000	686.000000	ask
    2017-11-09 23:15:13: 23.550000	1282.000000	ask
    2017-11-09 23:14:49: 23.599900	12.000000	bid
    2017-11-09 23:14:12: 23.550000	1718.000000	bid
    2017-11-09 23:14:10: 23.530000	830.000000	ask
    2017-11-09 23:13:56: 23.550000	1649.000000	ask
    2017-11-09 23:13:45: 23.600000	989.000000	bid
    2017-11-09 23:13:28: 23.550000	100.000000	ask
    2017-11-09 23:13:21: 23.600000	63.000000	bid
    2017-11-09 23:13:12: 23.600000	8.000000	bid
    2017-11-09 23:12:52: 23.550000	455.000000	bid
    2017-11-09 23:12:31: 23.540000	228.000000	ask
    2017-11-09 23:12:12: 23.525000	631.800000	ask
    2017-11-09 23:12:12: 23.550000	156.200000	ask

以上、Zaif の公開APIである全ての取引履歴を取得APIのブラウザによるアクセスとPHPによる全ての取引履歴を取得呼び出しのサンプルコードの記事でした。


以下のバナーはZaif へのリンクです。


添付ファイル: filetrades.php.zip 212件 [詳細] file01.png 296件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-09 (木) 23:21:14