Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/you21979/node-zaif

Promise-base Cryptocurrency Exchange zaif.jp API for node.js
https://github.com/you21979/node-zaif

cryptocurrency-exchange-zaif javascript trade

Last synced: 3 days ago
JSON representation

Promise-base Cryptocurrency Exchange zaif.jp API for node.js

Awesome Lists containing this project

README

        

node-zaif
============

[![NPM](https://nodei.co/npm/zaif.jp.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/zaif.jp)
[![Build Status](https://secure.travis-ci.org/you21979/node-zaif.png?branch=master)](https://travis-ci.org/you21979/node-zaif)
[![Coverage Status](https://coveralls.io/repos/github/you21979/node-zaif/badge.svg?branch=master)](https://coveralls.io/github/you21979/node-zaif?branch=master)

Promise-base Cryptocurrency Exchange zaif.jp API for node.js

install
-------

```
npm i zaif.jp
```

api document
------------
https://techbureau-api-document.readthedocs.io/ja/latest/index.html

Public API
----------

module prepare
```
var zaif = require('zaif.jp');
var api = zaif.PublicApi;
```

lastprice(pair)
```
api.lastPrice('mona_jpy').then(console.log)
{ last_price: 16.4 }
```

depth(pair)
```
api.depth('mona_jpy').then(console.log)
{ asks:
[ [ 16.5, 256 ],
[ 16.6, 21 ],
[ 16.7, 25 ],
[ 17, 2392 ],
[ 17.1, 2042 ],
[ 17.2, 1000 ],
[ 17.3, 1075 ],
[ 17.4, 1135 ],
[ 17.5, 7914 ],
[ 17.6, 1002 ],
[ 17.7, 39 ],
[ 17.8, 1000 ],
[ 17.9, 696 ],
[ 70, 2225 ] ],
bids:
[ [ 16.2, 50 ],
[ 16.1, 356 ],
[ 16, 1000 ],
[ 15.7, 206 ],
[ 15.6, 177 ],
[ 15.5, 1149 ],
[ 15.4, 271 ],
[ 15.2, 203 ],
[ 15.1, 1697 ],
[ 0.1, 51162 ] ] }
```

trades(pair)
```
api.trades('mona_jpy').then(console.log)
[ { date: 1410277807,
price: 16.1,
amount: 50,
tid: 18655,
currency_pair: 'mona_jpy',
trade_type: 'ask' },
{ date: 1410270931,
price: 15.6,
amount: 122,
tid: 18492,
currency_pair: 'mona_jpy',
trade_type: 'bid' },
{ date: 1410270895,
price: 15.6,
amount: 1699,
tid: 18490,
currency_pair: 'mona_jpy',
trade_type: 'bid' } ]
```

ticker(pair)
```
api.ticker('mona_jpy').then(console.log)
{ last: 16.1,
high: 18.9,
low: 12,
vwap: 16.0408,
volume: 221812,
bid: 16.1,
ask: 16.2 }
```

Private API
-----------

edit config.json
```
{
"apikey" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"secretkey" : "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}
```

module prepare
```
var zaif = require('zaif.jp');
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));

fs.readFileAsync('./config.json').then(JSON.parse).
then(function(config){
var api = zaif.createPrivateApi(config.apikey, config.secretkey, 'user agent is node-zaif');
// call api
}).catch(console.log);
```

getinfo()
```
api.getInfo().then(console.log);
{ funds: { jpy: 100000, btc: 0, mona: 0 },
rights: { info: 1, trade: 1, withdraw: 1 },
trade_count: 9999,
open_orders: 0,
server_time: 1410278546 }
```

trade(pair, 'bid' or 'ask', price, amount)
```
api.trade('mona_jpy', 'bid', 5, 10000).then(console.log);
{ received: 0,
remains: 10000,
order_id: 5999,
funds: { jpy: 50000, btc: 0, mona: 0 } }
```

activeorders()
```
api.activeOrders().then(console.log);
{ '5999':
{ currency_pair: 'mona_jpy',
action: 'bid',
amount: 10000,
price: 5,
timestamp: '1410279064' } }
```

cancelorder(order_id)
```
api.cancelOrder(5999).then(console.log);
{ order_id: 5999,
funds: { jpy: 100000, btc: 0, mona: 0 } }
```

Stream API
-----------

```
var zaif = require('zaif.jp');
var w = zaif.createStreamApi('mona_jpy', function(data){
console.log(data)
});
{ asks:
[ [ 17.1, 1576 ],
[ 17.2, 3446 ],
[ 17.3, 4226 ],
[ 17.4, 7366 ],
[ 17.5, 14613 ],
[ 17.6, 2420 ],
[ 17.7, 3300 ],
[ 17.8, 2184 ],
[ 17.9, 4520 ],
[ 18, 3095 ],
[ 18.1, 1395 ],
[ 18.2, 1407 ],
[ 18.3, 2205 ],
[ 18.5, 3856 ],
[ 18.6, 2440 ],
[ 18.8, 3348 ],
[ 18.9, 1928 ],
[ 19, 4068 ],
[ 19.2, 1882 ],
[ 19.3, 22232 ] ],
last_price: { action: 'ask', price: 17 },
trades:
[ { currenty_pair: 'mona_jpy',
trade_type: 'ask',
price: 17,
tid: 80618,
amount: 64,
date: 1428130395 },
{ currenty_pair: 'mona_jpy',
trade_type: 'ask',
price: 17,
tid: 80617,
amount: 64,
date: 1428130337 },
{ currenty_pair: 'mona_jpy',
trade_type: 'ask',
price: 17,
tid: 80616,
amount: 64,
date: 1428130278 },
{ currenty_pair: 'mona_jpy',
trade_type: 'ask',
price: 16.9,
tid: 80505,
amount: 16,
date: 1428117904 } ],
bids:
[ [ 17, 1133 ],
[ 16.9, 2390 ],
[ 16.8, 1944 ],
[ 16.7, 2370 ],
[ 16.6, 3585 ],
[ 16.5, 16985 ],
[ 16.4, 1390 ],
[ 16.3, 1981 ],
[ 16.2, 2399 ],
[ 16.1, 4210 ],
[ 16, 9991 ],
[ 15.9, 2955 ],
[ 15.8, 1978 ],
[ 15.7, 1859 ],
[ 15.6, 1991 ],
[ 15.5, 2396 ],
[ 15.4, 50 ],
[ 15.3, 2219 ],
[ 15.2, 3172 ],
[ 15.1, 3862 ] ],
currency_pair: 'mona_jpy',
timestamp: '2015-04-04 16:04:14.000419' }

```

Error Handling
--------------

* simple error control

```
api.getInfo().catch(function(e){
console.log(e.message)
})
```

* technical error control

```
var errors = require('zaif.jp/errors')
api.getInfo()
.catch(errors.HttpApiError, function (reason) {
// API ERROR
console.log(reason.message, "API", reason.error_code)
})
.catch(errors.StatusCodeError, function (reason) {
// HTTP STATUS ERROR(404 or 500, 502, etc...)
console.log("HTTP StatusCodeError " + reason.statusCode, "HTTP", reason.statusCode)
})
.catch(errors.RequestError, function (reason) {
// REQUEST ERROR(SYSTEMCALL, TIMEOUT)
console.log(reason.message, "SYSCALL", reason.error.code)
})
.catch(function(e){
// OTHER ERROR
console.log(e.message)
})
```

Tuning Network Parameter
------------------------

* Attention! Global Parameter
* Setting - KeepAlive Connection
* Setting - Timeout Second

```
var zaif = require('zaif.jp');

var appInitialize = function(){
zaif.Constant.OPT_KEEPALIVE = true;
zaif.Constant.OPT_TIMEOUT_SEC = 3;
}

var main = function(){
appInitialize();
}

main()
```

License
-------

MIT License

Affiliate
---------

https://zaif.jp?ac=s72z4f8o9z

Donate
------
bitcoin:1DWLJFxmPQVSYER6pjwdaVHfJ98nM76LiN
monacoin:MCEp2NWSFc352uaDc6nQYv45qUChnKRsKK