API/zaif/新規注文・現物売買・trade(PHP)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* Zaifのtrade APIを使って新規注文・現物売買のPHPサンプル...
trade APIを使用することにより、&htmlinsert(zaif.html);で...
以下にPHPを使用したサンプルコードおよび実行例を記します。
----
&color(red){当サイトに記載されている会社名、製品名などは...
----
#contents
#htmlinsert(zaif_wide_1.html)
* 関連記事 [#ac6dbd3c]
-[[API動作環境構築>API/環境構築]]
-[[currencies・通貨情報の取得(PHP)>API/zaif/currencies(PH...
-[[currency_pairs・通貨ペア情報を取得(PHP)>API/zaif/curre...
-[[last_price・現在の終値を取得(PHP)>API/zaif/last_price(...
-[[ticker・ティッカーを取得(PHP)>API/zaif/ticker(PHP)]]
-[[depth・板情報を取得(PHP)>API/zaif/depth(PHP)]]
-[[trades・全ての取引履歴を取得(PHP)>API/zaif/trades(PHP)]]
-[[取引通貨一覧の取得(PHP)>API/zaif/取引通貨一覧の取得(PH...
-[[ZaifのAPIキー生成手順>API/zaif/APIキー生成手順]]
-[[アカウントの残高確認(PHP)>API/zaif/残高確認・get_info,...
-[[新規注文・現物売買(PHP)>API/zaif/新規注文・現物売買・t...
* trade APIを使用 [#ha484b18]
本APIを使用するには、&htmlinsert(zaif.html);の口座開設が...
- ''trade'' API仕様~
ZaifAPI ドキュメントページから抜粋~
http://techbureau-api-document.readthedocs.io/ja/latest/t...
trade
取引注文を行います。
パラメータ
パラメータ 必須 詳細 型
currency_pair Yes (例) btc_jpy str(例 btc_jpy)
action Yes 注文の種類 bid もしくは ask
price Yes 指値注文価格 numerical
amount Yes 数量(例: 0.3) numerical
limit No リミット注文価格 numerical
comment No コメントの追加 str
<省略>
戻り値
<省略>
received 今回の注文で約定した取引量 float
remains 今回の注文で約定せず、板に残った取引量 float
order_id 今回の注文がすべて成立した場合は0、一部、もしく...
funds 残高 dict
この記事では、パラメータのlimit, commentは使用しません。
* 現物取引注文(新規注文)のサンプルコード [#j60ac8cf]
#ref(zaif_order.php.zip)
<?php
// API doc : http://techbureau-api-document.readthedocs....
// zaif trade api url
$zaif_api_url = "https://api.zaif.jp/tapi";
// api method name
$method = "trade";
// Please set API_KEY and API_SECRET_KEY
$API_KEY = "";
$API_SECRET_KEY = "";
// proxy settings
$proxy = "";
$proxy_port = "";
// currency pairs
$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"
,"erc20.cms_jpy", "mosaic.cms_jpy"
);
// check arguments
if (!check_arguments($argc, $argv, $currency_pairs)) {
usage();
die(1);
}
if($argv[1] == "list") {
// show currency_pairs
foreach($currency_pairs as $cur) {
printf("%s" . PHP_EOL, $cur);
}
exit(0);
}
// check amount and price
if (!is_numeric($argv[3])) {
fputs(STDERR, "amount: " . $argv[3] . " is not numer...
exit(1);
}
if (!is_numeric($argv[4])) {
fputs(STDERR, "price: " . $argv[4] . " is not numeri...
exit(1);
}
// show order request
printf("action : %s" . PHP_EOL, $argv[1]);
printf("currency pair : %s" . PHP_EOL, $argv[2]);
printf("amount * price : %f * %f = %f" . PHP_EOL,
$argv[3], $argv[4], $argv[3] * $argv[4]);
print("----------------------------------------" . PHP_E...
// yes or no
if (!yes_no()) {
exit(0);
}
$nonce = time();
$body = http_build_query(
array(
"nonce"=>$nonce,
"method"=>$method,
"action"=>$argv[1],
"currency_pair"=>$argv[2],
"amount"=>$argv[3],
"price"=>$argv[4]
)
);
$signature = hash_hmac("sha512", $body, $API_SECRET_KEY);
$headers = array(
"Sign: {$signature}",
"Key: {$API_KEY}"
);
$curl = curl_init();
if ($curl == FALSE) {
fputs(STDERR, "[ERR] curl_init(): " . curl_error($cu...
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 . ":" . $pr...
curl_setopt($curl, CURLOPT_PROXYPORT, $proxy_port);
}
curl_setopt($curl, CURLOPT_URL, $zaif_api_url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
if ($response == FALSE) {
fputs(STDERR, "[ERR] curl_exec(): " . curl_error($cu...
die(1);
}
// json decode
$json_decode = json_decode($response, true);
if ($json_decode == NULL) {
fputs(STDERR, "[ERR] json_decode(): " . json_last_er...
die(1);
}
curl_close($curl);
print_r($json_decode);
exit(0);
//------------------------------
// function
//------------------------------
function check_arguments($argc, $argv, $currency_pair) {
if (($argc != 2) and ($argc != 5)) {
return FALSE;
}
$opts = $currency_pair;
array_push($opts, "list", "bid", "ask");
if (!in_array($argv[1], $opts)) {
return FALSE;
}
return TRUE;
}
function usage() {
fputs(STDERR,
"Usage: php order.php ACTION CURRENCY_PAIR AMOUN...
"ACTION:" . PHP_EOL .
" - list : show all currency pair code" . PHP_...
" currency pair code : show specified curren...
" - bid : buy action" . PHP_EOL .
" - ask : sell action" . PHP_EOL .
"CURRENCY_PAIR : Trade currency pair code" . PHP...
" show currency pair : php order.php list" . P...
"AMOUNT : order quantity" . PHP_EOL .
"PRICE : order price" . PHP_EOL .
PHP_EOL .
"e.g. : php order.php list" . PHP_EOL .
" show all currency pair code" . PHP_EOL .
"e.g. : php order.php bid eth_jpy 0.1 50000" . P...
" buy order, 0.1 amount and price 5000JPY"...
PHP_EOL);
}
function yes_no() {
while (TRUE) {
print("OK? [yes/no] :");
$ok = trim(fgets(STDIN));
if(!strcasecmp($ok, "yes")) {
$ok = TRUE;
break;
} elseif(!strcasecmp($ok, "no")) {
print("Order canceled." . PHP_EOL);
$ok = FALSE;
break;
} else {
print("Please check the input." . PHP_EOL);
}
}
return $ok;
}
#htmlinsert(zaif_wide_2.html)
** APIキー, APIシークレットキー [#v4b6b8cc]
上記サンプルコード内にある、以下の部分ですが、APIキーの設...
$API_KEY = "APIキーを設定してください";
$API_SECRET_KEY = "APIシークレットキーを設定してください...
以下の記事を参考にAPIキーを取得してください。
-[[Zaif APIキー生成手順>API/zaif/APIキー生成手順]]
APIキーを生成すると以下のスクリーンショットのように2つのA...
今回は、tradeするので、tradeにチェックを入れておく必要が...
#ref(01.png)
* 本サンプルコードの使い方 [#yab2c30a]
オプションを渡さず本サンプルコードを実行すると使用方法が...
$ php zaif_order.php
Usage: php zaif_order.php ACTION CURRENCY_PAIR AMOUNT PR...
ACTION:
- list : show all currency pair code
currency pair code : show specified currency pair t...
- bid : buy action
- ask : sell action
CURRENCY_PAIR : Trade currency pair code
show currency pair : php zaif_order.php list
AMOUNT : order quantity
PRICE : order price
e.g. : php zaif_order.php list
show all currency pair code
e.g. : php zaif_order.php bid eth_jpy 0.1 50000
buy order, 0.1 amount and price 5000JPY
- オプションに''list''のみ渡すと取引可能通貨ペア一覧が表...
ハードコードしてあるので、通貨ペアが増減した場合は修正が...
最新の通貨ペアを取得したい場合は、「[[取引通貨一覧の取得(...
$ php zaif_order.php list
bch_btc
bch_jpy
bitcrystals_btc
bitcrystals_jpy
<snip>
zaif_jpy
erc20.cms_jpy
mosaic.cms_jpy
#br
- 注文
以下の順番でオプション(パラメータ)を渡します。
+ ACTION~
bid または ask を設定します。~
bidは買い注文、askは売り注文になります。
#br
+ CURRENCY_PAIR~
取引注文する通貨ペアを指定します。
通貨ペア一覧は上記の通り、listを渡し実行すると通貨ペア一...
#br
+ AMOUNT~
数量を指定します。
#br
+PRICE~
金額を指定します。
#br
- 注文発行の確認を表示~
yes/noが表示されるので、注文を実行する場合はyesを入力しEn...
中止する場合は、noを入力しEnterキーを押してください。
* 実行結果 [#mca1237d]
以下に本サンプルコードを実行し、ETH/JPYの売り注文、買い注...
** bid 買い注文 [#id21fef7]
$ php order.php bid eth_jpy 0.004 50000
action : bid
currency pair : eth_jpy
amount * price : 0.004000 * 50000.000000 = 200.000000
----------------------------------------
OK? [yes/no] :yes
Array
(
[success] => 1
[return] => Array
(
[received] => 0
[remains] => 0.004
[order_id] => 1111111
[funds] => Array
(
[jpy] => 0.00018044
<省略>
)
)
)
ZaifのWebページを確認すると買い注文がされているのが確認で...
#ref(03.png)
** ask 売り注文 [#xabb142a]
$ php order.php ask eth_jpy 0.004 55000
action : ask
currency pair : eth_jpy
amount * price : 0.004000 * 55000.000000 = 220.000000
----------------------------------------
OK? [yes/no] :yes
Array
(
[success] => 1
[return] => Array
(
[received] => 0
[remains] => 0.004
[order_id] => 2222222
[funds] => Array
(
[jpy] => 200.00018044
<省略>
)
)
)
ZaifのWebページを確認すると売り注文がされているのが確認で...
#ref(02.png)
* 注意点 [#b858e07a]
本サンプルコードを公開した時点では、以下のエラーが多発し...
ちょうど乱高下していた時なので注文が通りにくかったのでし...
この場合は、再度実行してみてください。
Array
(
[success] => 0
[error] => trade temporarily unavailable.
)
以上、trade APIを使用し現物・新規注文をするサンプルコード...
#htmlinsert(zaif_wide_3.html)
終了行:
#navi(../)
* Zaifのtrade APIを使って新規注文・現物売買のPHPサンプル...
trade APIを使用することにより、&htmlinsert(zaif.html);で...
以下にPHPを使用したサンプルコードおよび実行例を記します。
----
&color(red){当サイトに記載されている会社名、製品名などは...
----
#contents
#htmlinsert(zaif_wide_1.html)
* 関連記事 [#ac6dbd3c]
-[[API動作環境構築>API/環境構築]]
-[[currencies・通貨情報の取得(PHP)>API/zaif/currencies(PH...
-[[currency_pairs・通貨ペア情報を取得(PHP)>API/zaif/curre...
-[[last_price・現在の終値を取得(PHP)>API/zaif/last_price(...
-[[ticker・ティッカーを取得(PHP)>API/zaif/ticker(PHP)]]
-[[depth・板情報を取得(PHP)>API/zaif/depth(PHP)]]
-[[trades・全ての取引履歴を取得(PHP)>API/zaif/trades(PHP)]]
-[[取引通貨一覧の取得(PHP)>API/zaif/取引通貨一覧の取得(PH...
-[[ZaifのAPIキー生成手順>API/zaif/APIキー生成手順]]
-[[アカウントの残高確認(PHP)>API/zaif/残高確認・get_info,...
-[[新規注文・現物売買(PHP)>API/zaif/新規注文・現物売買・t...
* trade APIを使用 [#ha484b18]
本APIを使用するには、&htmlinsert(zaif.html);の口座開設が...
- ''trade'' API仕様~
ZaifAPI ドキュメントページから抜粋~
http://techbureau-api-document.readthedocs.io/ja/latest/t...
trade
取引注文を行います。
パラメータ
パラメータ 必須 詳細 型
currency_pair Yes (例) btc_jpy str(例 btc_jpy)
action Yes 注文の種類 bid もしくは ask
price Yes 指値注文価格 numerical
amount Yes 数量(例: 0.3) numerical
limit No リミット注文価格 numerical
comment No コメントの追加 str
<省略>
戻り値
<省略>
received 今回の注文で約定した取引量 float
remains 今回の注文で約定せず、板に残った取引量 float
order_id 今回の注文がすべて成立した場合は0、一部、もしく...
funds 残高 dict
この記事では、パラメータのlimit, commentは使用しません。
* 現物取引注文(新規注文)のサンプルコード [#j60ac8cf]
#ref(zaif_order.php.zip)
<?php
// API doc : http://techbureau-api-document.readthedocs....
// zaif trade api url
$zaif_api_url = "https://api.zaif.jp/tapi";
// api method name
$method = "trade";
// Please set API_KEY and API_SECRET_KEY
$API_KEY = "";
$API_SECRET_KEY = "";
// proxy settings
$proxy = "";
$proxy_port = "";
// currency pairs
$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"
,"erc20.cms_jpy", "mosaic.cms_jpy"
);
// check arguments
if (!check_arguments($argc, $argv, $currency_pairs)) {
usage();
die(1);
}
if($argv[1] == "list") {
// show currency_pairs
foreach($currency_pairs as $cur) {
printf("%s" . PHP_EOL, $cur);
}
exit(0);
}
// check amount and price
if (!is_numeric($argv[3])) {
fputs(STDERR, "amount: " . $argv[3] . " is not numer...
exit(1);
}
if (!is_numeric($argv[4])) {
fputs(STDERR, "price: " . $argv[4] . " is not numeri...
exit(1);
}
// show order request
printf("action : %s" . PHP_EOL, $argv[1]);
printf("currency pair : %s" . PHP_EOL, $argv[2]);
printf("amount * price : %f * %f = %f" . PHP_EOL,
$argv[3], $argv[4], $argv[3] * $argv[4]);
print("----------------------------------------" . PHP_E...
// yes or no
if (!yes_no()) {
exit(0);
}
$nonce = time();
$body = http_build_query(
array(
"nonce"=>$nonce,
"method"=>$method,
"action"=>$argv[1],
"currency_pair"=>$argv[2],
"amount"=>$argv[3],
"price"=>$argv[4]
)
);
$signature = hash_hmac("sha512", $body, $API_SECRET_KEY);
$headers = array(
"Sign: {$signature}",
"Key: {$API_KEY}"
);
$curl = curl_init();
if ($curl == FALSE) {
fputs(STDERR, "[ERR] curl_init(): " . curl_error($cu...
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 . ":" . $pr...
curl_setopt($curl, CURLOPT_PROXYPORT, $proxy_port);
}
curl_setopt($curl, CURLOPT_URL, $zaif_api_url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
if ($response == FALSE) {
fputs(STDERR, "[ERR] curl_exec(): " . curl_error($cu...
die(1);
}
// json decode
$json_decode = json_decode($response, true);
if ($json_decode == NULL) {
fputs(STDERR, "[ERR] json_decode(): " . json_last_er...
die(1);
}
curl_close($curl);
print_r($json_decode);
exit(0);
//------------------------------
// function
//------------------------------
function check_arguments($argc, $argv, $currency_pair) {
if (($argc != 2) and ($argc != 5)) {
return FALSE;
}
$opts = $currency_pair;
array_push($opts, "list", "bid", "ask");
if (!in_array($argv[1], $opts)) {
return FALSE;
}
return TRUE;
}
function usage() {
fputs(STDERR,
"Usage: php order.php ACTION CURRENCY_PAIR AMOUN...
"ACTION:" . PHP_EOL .
" - list : show all currency pair code" . PHP_...
" currency pair code : show specified curren...
" - bid : buy action" . PHP_EOL .
" - ask : sell action" . PHP_EOL .
"CURRENCY_PAIR : Trade currency pair code" . PHP...
" show currency pair : php order.php list" . P...
"AMOUNT : order quantity" . PHP_EOL .
"PRICE : order price" . PHP_EOL .
PHP_EOL .
"e.g. : php order.php list" . PHP_EOL .
" show all currency pair code" . PHP_EOL .
"e.g. : php order.php bid eth_jpy 0.1 50000" . P...
" buy order, 0.1 amount and price 5000JPY"...
PHP_EOL);
}
function yes_no() {
while (TRUE) {
print("OK? [yes/no] :");
$ok = trim(fgets(STDIN));
if(!strcasecmp($ok, "yes")) {
$ok = TRUE;
break;
} elseif(!strcasecmp($ok, "no")) {
print("Order canceled." . PHP_EOL);
$ok = FALSE;
break;
} else {
print("Please check the input." . PHP_EOL);
}
}
return $ok;
}
#htmlinsert(zaif_wide_2.html)
** APIキー, APIシークレットキー [#v4b6b8cc]
上記サンプルコード内にある、以下の部分ですが、APIキーの設...
$API_KEY = "APIキーを設定してください";
$API_SECRET_KEY = "APIシークレットキーを設定してください...
以下の記事を参考にAPIキーを取得してください。
-[[Zaif APIキー生成手順>API/zaif/APIキー生成手順]]
APIキーを生成すると以下のスクリーンショットのように2つのA...
今回は、tradeするので、tradeにチェックを入れておく必要が...
#ref(01.png)
* 本サンプルコードの使い方 [#yab2c30a]
オプションを渡さず本サンプルコードを実行すると使用方法が...
$ php zaif_order.php
Usage: php zaif_order.php ACTION CURRENCY_PAIR AMOUNT PR...
ACTION:
- list : show all currency pair code
currency pair code : show specified currency pair t...
- bid : buy action
- ask : sell action
CURRENCY_PAIR : Trade currency pair code
show currency pair : php zaif_order.php list
AMOUNT : order quantity
PRICE : order price
e.g. : php zaif_order.php list
show all currency pair code
e.g. : php zaif_order.php bid eth_jpy 0.1 50000
buy order, 0.1 amount and price 5000JPY
- オプションに''list''のみ渡すと取引可能通貨ペア一覧が表...
ハードコードしてあるので、通貨ペアが増減した場合は修正が...
最新の通貨ペアを取得したい場合は、「[[取引通貨一覧の取得(...
$ php zaif_order.php list
bch_btc
bch_jpy
bitcrystals_btc
bitcrystals_jpy
<snip>
zaif_jpy
erc20.cms_jpy
mosaic.cms_jpy
#br
- 注文
以下の順番でオプション(パラメータ)を渡します。
+ ACTION~
bid または ask を設定します。~
bidは買い注文、askは売り注文になります。
#br
+ CURRENCY_PAIR~
取引注文する通貨ペアを指定します。
通貨ペア一覧は上記の通り、listを渡し実行すると通貨ペア一...
#br
+ AMOUNT~
数量を指定します。
#br
+PRICE~
金額を指定します。
#br
- 注文発行の確認を表示~
yes/noが表示されるので、注文を実行する場合はyesを入力しEn...
中止する場合は、noを入力しEnterキーを押してください。
* 実行結果 [#mca1237d]
以下に本サンプルコードを実行し、ETH/JPYの売り注文、買い注...
** bid 買い注文 [#id21fef7]
$ php order.php bid eth_jpy 0.004 50000
action : bid
currency pair : eth_jpy
amount * price : 0.004000 * 50000.000000 = 200.000000
----------------------------------------
OK? [yes/no] :yes
Array
(
[success] => 1
[return] => Array
(
[received] => 0
[remains] => 0.004
[order_id] => 1111111
[funds] => Array
(
[jpy] => 0.00018044
<省略>
)
)
)
ZaifのWebページを確認すると買い注文がされているのが確認で...
#ref(03.png)
** ask 売り注文 [#xabb142a]
$ php order.php ask eth_jpy 0.004 55000
action : ask
currency pair : eth_jpy
amount * price : 0.004000 * 55000.000000 = 220.000000
----------------------------------------
OK? [yes/no] :yes
Array
(
[success] => 1
[return] => Array
(
[received] => 0
[remains] => 0.004
[order_id] => 2222222
[funds] => Array
(
[jpy] => 200.00018044
<省略>
)
)
)
ZaifのWebページを確認すると売り注文がされているのが確認で...
#ref(02.png)
* 注意点 [#b858e07a]
本サンプルコードを公開した時点では、以下のエラーが多発し...
ちょうど乱高下していた時なので注文が通りにくかったのでし...
この場合は、再度実行してみてください。
Array
(
[success] => 0
[error] => trade temporarily unavailable.
)
以上、trade APIを使用し現物・新規注文をするサンプルコード...
#htmlinsert(zaif_wide_3.html)
ページ名: