Node.jsで暗号資産アービトラージ

ビットコイントレード中心にNode.jsで実際に作るためのレシピ

Liquid by Quoine APIの使い方(Python3)

※このページは2019/9/4に更新されました。

こんにちは、ケネです。

Liquid by Quoine APIのPython3での基本的な使い方を解説します。

認証が不要なPublic APIおよび認証が必要なAuthenticated APIのサンプルコードも記載しておきます。

初めてAPIを接続したいけど上手くできなくて苦戦している方向けの記事です。

Python3でのLiquid APIでハマりやすいポイントはこちら
Liquid by Quoine APIでエラーが発生する(Python3) - Node.jsで暗号資産アービトラージ

Python3でのLiquid by Quoine APIの使い方

Public APIの利用方法

概要

Liquid by Quoine APIドキュメント(https://developers.liquid.com/)より、Get a Product(https://developers.liquid.com/#get-a-product)の機能を使ってみます。

Public APIに分類される機能は認証が不要なので、登録なしで使用できます。

Get a ProductのAPIドキュメントの右側にGet /products/:idとあるので「Get」メソッドでURL「/products/:id」に接続します。

APIドキュメント

コロン付きの:idは可変項目ですので必要な値を用意します。今回は「5」(BTCJPY)を利用します。

サンプルコード

import requests
import json

path = '/products/5';
query = '';
url = 'https://api.liquid.com' + path + query;

res = requests.get(url)
data = json.loads(res.text)

print(data)

サンプルコード解説

Liquid by QuoineへのGetメソッドはPythonのrequestsモジュールを使用します。

requests.get()の形式で使用します。postの場合はrequests.post()となります。

requests.get()の引数にはLiquid by Quoineのエンドポイント(https://api.liquid.com)に機能のパス(path)をつなげます。

リクエスト時に必須項目でパラメータを付ける必要がある際は?xxx=1&yyy=2の形式でquery部分に設定します。

今回はjson形式でデータを処理していますので、res(レスポンス)はjson.loads()でjsonに変換しています。

Authenticated APIの利用方法

概要

Liquid by Quoine APIドキュメント(https://developers.liquid.com/)より、Create an Order(https://developers.liquid.com/#create-an-order)の機能を使います。

Authenticated APIに分類される機能は認証が必要なので、事前にAPIトークンの作成が必要となります。

APIトークンの作成方法は以下を参照ください。
Liquid by Quoine APIの使い方と注意したいポイント - Node.jsで暗号資産アービトラージ

APIドキュメントの右側にPOST /orders/とあるので「Post」メソッドでURL「/orders/」に接続します。
(後ろにスラッシュ(/)が必要です)

サンプルコード

import requests
import json
import jwt

token = "xxxx"
secret = "yyyy"

path = '/orders/';
query = '';
url = 'https://api.liquid.com' + path + query;

timestamp = datetime.now().timestamp()

payload = {
        "path": '/orders/',
        "nonce": timestamp,
        "token_id": token
}

signature = jwt.encode(payload, secret, algorithm='HS256')

headers = {
            'X-Quoine-API-Version': '2',
            'X-Quoine-Auth': signature,
            'Content-Type' : 'application/json'
}

data = {
    "order":{
        "order_type":"limit",
        "margin_type":"cross",
        "product_id":5,
        "side":"buy",
        "quantity":0.1,
        "price":1000000,
        "leverage_level":2,
        "funding_currency":'JPY',
        "order_direction":"one_direction"
    }
}

json_data = json.dumps(data)

res = requests.post(url, headers=headers, data=json_data)
datas = json.loads(res.text)
print(datas)

サンプルコード解説

Liquid by QuoineではJWT(Json Web Token)という認証を利用しますが、上記のサンプルコードではPyJWTというライブラリを利用しています。

pip install PyJWTでインストールします。(pip install jwtではないので注意)

token = "xxxx"、secret = "yyyy"部分には発行したAPIトークンおよびシークレットキーを設定します。

認証部分はAPIドキュメント(https://developers.liquid.com/#authentication)の仕様に沿って設定します。

payloadにpath、nonce(UNIX TIME形式のタイムスタンプが一般的)、token_idを設定します。

jwt.encode()でpayloadをシークレットキー(secret)を利用して、HMAC-SHA256(HS256)でエンコードします。

encodeしたsignatureをheadersのX-Quoine-Authに設定して、requests.post()の引数に設定します。

注文データはdataに設定した上で、json.dumps()でJSON形式に変換し、requests.post()の引数に設定します。

APIドキュメントのParametersでOptional?(任意)にTrueがついていないものは必須項目なので、忘れずに値を設定します。

まとめ

Liquid by QuoineのAPI(特に認証部分)はサンプルコードもなく、慣れていない人には難しいと思います。

接続ではまってしまった人は参考にしてみてくださいね。

www.kennejs.com