仮想通貨取引所(bitbank.cc)の公式APIを使って仮想通貨の取引をする方法


このエントリーはアラタナAdventカレンダー19日目のエントリーです。

前日は @tekuro_iwakiri さんの「WEBサイトに動画を使用する際にハマったこと」というエントリーでした。

サイトを開くとカッコイイ動画が始まるサイト、最近多いですよね! 実際にサイトで動画を流すことをやってみると、案外ハマってしまうポイントがあるようで…その解決策やノウハウを紹介していただきした!


改めまして、甲斐 です。普段はバックエンドのプログラマをしております。
ここからこの記事の本題です、よろしくお願いいたします。

はじめに

  • この記事は仮想通貨取引所 bitbank.cc が公式で公開している node.js モジュール node-bitbankcc を使った記事になります。
  • 仮想通貨の最新取引価格を取得したり、注文をしたり、注文をキャンセルしたりして遊んでみます。

仮想通貨取引所とは

仮想通貨取引所とは、ビットコインなどの仮想通貨を取引するサイトで、
仮想通貨と法定通貨(円, ウォン, ドル...etc)の売買ができるし、仮想通貨の出金や入金もできるので決済に利用することもできます。

bitbank.cc は公式API・公式ライブラリが充実

国内の仮想通貨取引所の中でも公式API・公式ライブラリが充実しているのが bitbank.cc になります。
APIを使用すれば、 bitbank.cc の画面を操作せずとも仮想通貨の取引が可能です。
bitbank.cc で取引できる仮想通貨の種類は以下の通りです。

bitbank.cc 取扱い銘柄

  • ビットコイン(BTC)
  • ビットコインキャッシュ(BCC)
  • モナコイン(MONA)
  • リップル(XRP)
  • イーサリアム(ETH)
  • ライトコイン(LTC)

事前準備

npm install node-bitbankcc

モジュール node-bitbankcc をインストールします。

$ npm install node-bitbankcc

bitbank.cc から API Key と Secret Key を取得

仮想通貨の最新取引価格などの取得は認証なしでも取得ができますが、注文したり、アカウントが保有している仮想通貨を取得したりする場合は認証用の API Key と Secret Key が必要になります。
API Key と Secret Key は、ログイン → アカウント → API で取得することができます。

実装

API Key と Secret Key は設定ファイルに記述します。
git 管理する場合は .gitignore しておくと良いです。
コミットしてしまうと他の方に知られてしまう可能性がありますので要注意です。

config.json
{
  "BITBANK": {
    "API_KEY": "取得した API Key",
    "API_SECRET": "取得した API Secret"
  }
}

config.json と node-bitbankcc は以下のように読み込みます。

index.js
'use strict';

// 設定ファイル(APIKey等)の読み込み
const CONFIG = require('./config.json');

// node-bitbankcc を使用します
const BITBANK = require('node-bitbankcc');

// node-bitbankcc の PublicAPI を使用します
const PUBLIC_API = BITBANK.publicApi();

// node-bitbankcc の PrivateAPI を使用します (API Key と API Secret が必要)
const PRIVATE_API = BITBANK.privateApi(CONFIG.BITBANK.API_KEY, CONFIG.BITBANK.API_SECRET);

最新取引価格を取得 (PublicAPI)

最新取引価格の取得は PublicAPI を使用します。
では、以下のプログラムでビットコインの最新価格を取得してみます。

index.js
// getTicker(1.確認する銘柄ペア)
PUBLIC_API.getTicker('btc_jpy') // ビットコイン対日本円のティッカー情報を取得
.then(function(response){
  console.log(response);
});
$ node .
{ sell: '1294895',
  buy: '1294843',
  high: '1329277',
  low: '1230000',
  last: '1294869',
  vol: '200.0931',
  timestamp: 1512373289486 }

ビットコインの最終取引価格は 1,294,869 円! 1年前は10万円とかだったのに…すごぃ。。。

注文 (PrivateAPI)

仮想通貨の売買を行う場合は、 PrivateAPI を使用します。
それでは実際に仮想通貨を注文をしてみます!
注文する仮想通貨はモナコインで、833円で10モナコイン購入してみます。

index.js
// order(1.注文する銘柄ペア, 2.価格, 3.数量, 4.売 or 買(buy or sell), 5.指値 or 成行(limit or market))
PRIVATE_API.order('mona_jpy', 833.0, 10, 'buy', 'limit') // 10 モナコインを 833 円で購入
.then(function(response){ 
  console.log(response);
});
$ node .
{ order_id: 1204718,
  pair: 'mona_jpy',
  side: 'buy',
  type: 'limit',
  start_amount: '10.00000000',
  remaining_amount: '10.00000000',
  executed_amount: '0.00000000',
  price: '833.0000',
  average_price: '0.0000',
  ordered_at: 1512281897631,
  status: 'UNFILLED' }

そして、取引画面には注文ができておりました。


※画面キャプチャ引用: bitbank.cc より。URL: https://bitbank.cc/app/trade/mona_jpy

有効な注文一覧を取得 (PrivateAPI)

有効な注文の一覧を取得する場合は、 PrivateAPI を使用します。
今の状態で以下のプログラムを実行すると、注文したモナコインの情報が返却されます。

index.js
// getActiveOrders(1.確認する銘柄ペア)
PRIVATE_API.getActiveOrders('mona_jpy')
.then(function(response){
  console.log(response);
});
$ node .
{ orders: 
   [ { order_id: 1204718,
       pair: 'mona_jpy',
       side: 'buy',
       type: 'limit',
       start_amount: '10.00000000',
       remaining_amount: '10.00000000',
       executed_amount: '0.00000000',
       price: '833.0000',
       average_price: '0.0000',
       ordered_at: 1512281897631,
       status: 'UNFILLED' } ] }

注文のキャンセル (PrivateAPI)

有効な注文のキャンセルする場合は、 PrivateAPI を使用します。
注文をキャンセルしてみます。

index.js
var order_id = xxxxxxxx;
// cancelOrder(1.注文した銘柄ペア, 2.注文ID(order_id))
PRIVATE_API.cancelOrder('mona_jpy', order_id)
.then(function(response){
  console.log(response);
});
$ node .
{ order_id: xxxxxxxx,
  pair: 'mona_jpy',
  side: 'buy',
  type: 'limit',
  start_amount: '10.00000000',
  remaining_amount: '10.00000000',
  executed_amount: '0.00000000',
  price: '883.0000',
  average_price: '0.0000',
  ordered_at: 1512446114467,
  canceled_at: 1512447370099,
  status: 'CANCELED_UNFILLED' }

その他にもいろんなことができます

その他にも、アカウントが保有している仮想通貨の枚数を取得したり、送金したりなどの操作も可能です。
詳しくは node-bitbankccGithubbitbank.cc API ドキュメント を御覧ください。

さいごに

最後までお読み頂きありがとうございました。
今回使用したライブラリをテクニカル分析的なものを絡めてしっかり実装すれば、儲けられるプログラムを書くことができると思います。
皆さんも node-bitbankcc を触ってみてください!

それでは!

リンク