Liquid by Quoine APIを利用するための手順を紹介します。
基本的にはLiquid by Quoine APIドキュメントを参照してコーディングする流れになります。
ただ、公式サイトだとサンプルプログラムがrubyしかないので、ここではNode.js(Javacript)のコード例を交えて解説します。
Node.jsでの解説となりますが、Python等の他言語でもポイントは同じですので目を通してみてください。
Python3での使い方はこちら
https://kennejs.com/entry/liquid-api-python
Contents
事前準備
APIには認証が不要なPublic APIと認証が必要なAuthenticated APIがあります。
取引や残高確認のようなアカウントに紐づく操作は認証が必要なためログインしてAPIトークンとシークレットコードを取得します。
1. ログイン後画面から右上のメニューマークを押して、設定 > APIトークンをクリック
2. 「APIトークンを新規作成する」ボタンを押して、APIトークンを作成する。
セキュリティ上、権限は最小減にしてください。
2段階認証コードを入力して、確認をクリックします。
[Liquid by Quoine]API接続のサンプルコード
ここではサンプルを載せていますので参照してください。
以下の記事で詳細な使い方を解説しています。
https://kennejs.com/entry/2019/04/18/001955
Public APIサンプル
Public APIは認証不要です。板の価格取得などアカウントに紐づかない操作が可能です。
//getPrice functionで価格(Last Price, Bid, Ask)を取得 const request = require('request'); let path = '/products/5'; let query = ''; let url = 'https://api.liquid.com' + path + query; request(url, function (err, response, payload) { let body = JSON.parse(payload); console.log(body.last_traded_price,body.market_bid,body.market_ask) });
Authenticated APIサンプル
Authenticated APIは認証が必要です。認証がjson-web-tokenを使っており、慣れていないとハマりやすいポイントです。
const request = require('request'); const fs = require('fs'); const jwt = require('json-web-token'); //LiquidのAPI画面から取得したTOKEN ID、User Secretを設定 let token_id = xxx; let user_secret = yyy; let path = '/accounts/balance'; let query = ''; let auth_payload = { "path": '/accounts/balance', "nonce": Date.now().toString(), "token_id": token_id }; jwt.encode(user_secret, auth_payload, function (err, token) { if (err) { console.error(err.name, err.message); } else { signature = token; } }); let options = { url: 'https://api.liquid.com' + path, method: 'GET', headers: { 'X-Quoine-API-Version': '2', 'X-Quoine-Auth': signature } }; request(options, function (err, response, payload) { let body = JSON.parse(payload); let jpy = body[1].balance; let btc = body[3].balance; console.log(jpy, btc) });
発注可能チェック
2019/4/16追記
これまでは契約書面の更新通知がかなり急なスケジュール(当日中とか)で来ていたんですが、最近は事前に来るようになりました。
そのため以下のようなチェックロジック実装の優先度はやや下がっています。
Liquid by Quoineで一番やっかいなのが、不定期で急に契約書面の更新に同意が必要な場合があることです。
契約書面の更新に同意していないと「契約書面の同意が必要です」のエラーが発生しAPIが使えなくなります。
アービトラージで片側だけ発注できなくなると悲惨なことになるので、発注直前に注文チェックを行う必要があります。
以下は意図的にエラーとなる注文を送信して、任意のエラーコードが返ってくることを確認します。
自分の保有しているBTCを大きく超える数量の売りを入れると”not_enough_free_balance”が返却されるので、not_enough_free_balance以外のメッセージが返ってきた場合は注文が発注できていないと判断して以降の処理を中断します。
~~~省略~~~ //optionsに保有量を上回るBTCを指定して売り注文を発注 request(options, function (err, response, payload) { let res = JSON.parse(payload); let stopFlg = ""; //エラーメッセージがnot_enough_free_balanceでなかった場合にstopFlg = "1"を設定 if(res.errors.user[0]!=="not_enough_free_balance"){ stopFlg = "1"; } //stopFlgを呼び出し元に戻して処理を続行/中止させる callback(stopFlg) }
https://kennejs.com/entry/2019/04/18/001955
おすすめ記事
APIを自作したらVPSで稼働させてみよう。
国内の暗号資産取引所の選び方はこちら
コメントを残す