Help us understand the problem. What is going on with this article?

zaif(取引所)でAPIを使って取引する

More than 3 years have passed since last update.

はじめに

  • この記事はnode.jsのモジュールzaif.jpを使った記事になります
  • private apiと呼ばれる個人認証が必要なAPIを説明した記事になります
  • monacoinなどの仮想通貨の取引所の記事になります

事前準備

1.モジュールをインストールします

npm install zaif.jp

2.zaifからapi keyとsecret keyを取得します

ログイン後以下のページにて作成
アカウント -> API Keys

api使用例

認証ファイルはソース埋め込みではなくjsonにしておくことをおすすめします
gitでソースを管理するのであればconfig.jsonは.gitignoreに登録しておくと大惨事を防げます。

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

JSONファイルの読み込み~初期化は以下のように行います

var fs = require('fs');
var config = JSON.parse(fs.readFileSync('./config.json'));
var zaif = require('zaif.jp');
var api = zaif.createPrivateApi(config.apikey, config.secretkey, 'user agent is node-zaif');

残高を取得

api.getInfo().then(function(res){
    console.log(res)
});

買い注文をする

monaを5円で10000枚買う

api.trade('mona_jpy', 'bid', 5, 10000).then(function(res){
    console.log(res)
});

売り注文をする

monaを5円で10000枚売る

api.trade('mona_jpy', 'ask', 5, 10000).then(function(res){
    console.log(res)
});

有効な注文中一覧を取得する

板情報に乗っている自分の注文を取得

api.activeOrders().then(function(res){
    console.log(res)
});

注文をキャンセルする

orderidは注文した時に保存しておくかactiveOrdersの結果から取得する

var orderid = 10001;
api.cancelOrder(orderid).then(function(res){
    console.log(res)
});

使い道

このライブラリを使うとしたら以下の様な用途だと思います

  • 暗号通貨を入金して円に自動で両替
  • 他取引所との裁定取引
  • トラップリピートイフダンなどのスプレッド売買
  • RSI、MACDなどを利用したテクニカル売買
  • 暗号通貨を時間をかけてゆっくり仕込みたい

このライブラリを公開した目的はもっとbitcoinやmonacoinの流動性が上がってほしいと思い公開しています。
pump and dumpとか正直困るので。。。

※MACD使えるnode.js製のトレーディングボットにgekkoというのがあります( https://github.com/askmike/gekko )

プログラム例

発注している注文を全てキャンセルする

var Promise = require('bluebird');
api.activeOrders().then(function(res){
    return Promise.all(
        Object.keys(res).map(function(key){
            return api.cancelOrder(key);
        })
    );
});

買い注文だけ消したい場合

var Promise = require('bluebird');
api.activeOrders().then(function(res){
    return Promise.all(
        Object.keys(res).filter(function(key){
            return res[key].action === 'bid'
        }).map(function(key){
            return api.cancelOrder(key);
        })
    );
});

その他

裁定取引を補佐するためのライブラリもあります https://github.com/you21979/node-trade-util

不具合あると思うので自己責任でお願いします。プルリクエストも歓迎しています

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away