これから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で稼働させてみよう。
国内の暗号資産取引所の選び方はこちら
コメントを残す