zaif.jp

    0.1.16 • Public • Published

    node-zaif

    NPM
    Build Status Coverage Status

    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

    Install

    npm i zaif.jp

    DownloadsWeekly Downloads

    8

    Version

    0.1.16

    License

    MIT

    Last publish

    Collaborators

    • you21979