これからLiquid by Quoine APIを使いたい方向けにAPIを使った注文機能の実装例を解説します。
事前にログインしてAPIトークンID、APIシークレットコードを取得する必要があります。
取得方法は以下の記事を参照してください。
Liquid by Quoine APIの使い方と注意したいポイント – Node.jsで暗号資産アービトラージ
Contents
注文のコーディング
解説用に小出しでコードを記載していきます。記事の全コードをコピペすれば動作しますので、手っ取り早く実装したい人は試してみてください。
ライブラリの定義
Node.jsのライブラリrequest(httpで注文を送信する)とjwt(認証する)を利用しますので定義します。
事前にnpmを利用してライブラリをインストールしておいてください。
インストールするコマンドはnpm install requestとnpm install json-web-tokenです。
const request = require('request') const jwt = require('json-web-token');
APIトークンとAPIシークレットコードの定義
事前に取得しておいたAPIトークンとAPIシークレットコードを記載します。
APIトークンIDをxxxxxxに、APIシークレットコードをabcdefghijk1234567890に当てはめてください。
const key = "xxxxxx"; const secret = "abcdefghijk1234567890";
関数の定義
APIドキュメント(注文機能)を参考に注文ロジックをコーディングします。
以下から注文を発注する関数を定義します。引数にside(“buy”または”sell”)、quantity(注文数量)、price(注文したい指値の価格)を設定します。
sendOrder = function(side, quantity, price){
実際の注文リクエストはrequestの箇所で実行しますが、requestの引数となる変数を定義していきます。
ここでは認証情報、注文情報、リクエスト情報に分けて説明します。
API注文で使う認証情報の定義
APIはbase URL(https://api.liquid.com)に各機能のpathをつけて実行していきます。
注文で使うpathは/orders/とAPIドキュメントに記載されているので、pathに/orders/を定義しておきます。
次に一意になるランダムな値をnonceという変数に毎回セットする必要があります。一般的にはtimestamp(日付+時刻)を設定します。
payloadという変数を定義して、path, nonce, token_id(APIトークンID)を以下のサンプルのようなjson形式で定義してください。
json-web-token(以下ではjwt.encode()の部分)にsecret(APIシークレットコード)、payload、コールバック関数(function (err, token))を定義して実行し、署名したキー情報を取得します。
署名したキー情報は変数signatureに入れておきます。
let path = '/orders/'; let timestamp = Date.now().toString(); let payload = { "path": path, "nonce": timestamp, "token_id": key }; let signature = ""; jwt.encode(secret, payload, function (err, res) { if (err) { console.error(err.name, err.message); } else { signature = res; } });
API注文で使う注文情報の定義
続いて注文情報を定義します。orderInfoという変数をJSON形式で定義します。
orderに入れる項目(例:order_type)はAPIドキュメントに定義されているので、全く同じ名前を使用してください。limitは指値注文、marketは成行注文となります。
product_idの設定値がわかりづらいのですが、BTC/JPYの場合、product_idは5を設定します。
product_idは別に取得できるAPIの機能があるので、BTC/JPY以外を使いたい場合はその機能(Get Products)を利用して確認してください。(ここでは割愛します)
sideは”buy”または”sell”でこの例では関数の引数として設定します。quantity、priceも同様。
let orderInfo = JSON.stringify({ "order": { "order_type": "limit", "product_id": 5, "side": side, "quantity": quantity, "price": price } })
API注文で使うリクエスト情報の定義
リクエストに設定するオプション情報を定義します。
urlにはベースURL(’https://api.liquid.com’)に各機能のpathを追加したURLを設定します。
methodはAPIドキュメントより”POST”または”GET”を設定します。(ここでは”POST”)
bodyには注文情報として定義したorderInfoを設定します。
headersには決まり文句で’X-Quoine-API-Version’: ‘2’(固定で必須です)、’X-Quoine-Auth’: signature(上記で署名したキー情報)、’Content-Type’ : ‘application/json’(固定で必須)を設定します。
url、method等の変数名はサンプルと同一の記載をしてください。
let options = { url: 'https://api.liquid.com' + path, method: 'POST', body: orderInfo, headers: { 'X-Quoine-API-Version': '2', 'X-Quoine-Auth': signature, 'Content-Type' : 'application/json' } };
API注文で使うrequestのコーディング
ここまでで定義してきた変数を使って実際にrequestを実行します。
戻り値のコールバック関数(function (err, response, payload))の”payload”にLiquid by Quoineからの結果が設定されます。
JSON.parseでJSON形式に変更することで、res.id(Liquid by QuoineのOrder ID)、res.filled_quantity(約定した数量)、res.status(注文の状態)の形式で戻り値を参照できます。
request(options, function (err, response, payload) { if(err){ systemLogger.info(err) } let res = JSON.parse(payload); console.log(`Order ID:${res.id} Filled Quantity: ${res.filled_quantity} Status:${res.status}`) }) }
関数を呼び出すコード
BTCをJPY建で100000万円の指値で0.01買い注文するコードです。
sendOrderTest("buy",100000,0.01)
始めはなかなかとっつきづらいかもしれませんが、応用は効くしトレードの幅が確実に広がるのでぜひ試してみてください。
おすすめ記事
APIを自作したらVPSで稼働させてみよう。
国内の暗号資産取引所の選び方はこちら
コメントを残す