QUOINE(LIQUID) APIから注文する方法~プログラム例

これまでbitFlyerとcoincheck、ZaifのAPIから注文する方法をご紹介しました。

bitFlyer APIから注文する方法~プログラム例

2018年10月10日

coincheck APIから注文する方法~プログラム例

2018年10月11日

Zaif APIから注文する方法~プログラム例

2018年10月12日

今回はLiquid by Quoine (リキッド)のAPIから注文する
サンプルプログラムをご紹介します。

QUOINEはシステムも安定していて
現物の取引数量も多く
非常に良い取引所ではありますが、
APIのドキュメントが全て英語なので
注意が必要です。

私が実際に使用しているソースコードになります。

QUOINE APIのドキュメントは以下をご参照ください。

QUOINE APIサンプルプログラム

実装したのは、Python 3.6です。

QUOINE APIソースコード

ではさっそくサンプルプログラムです。

import json
import requests
import time
import jwt
import util

class quoineApi:
    def __init__(self):
        self.token_id = 'トークンID'
        self.api_secret = 'シークレットキー'
        self.api_endpoint = 'https://api.liquid.com'

    def get_api_call(self,path):
        timestamp = str(int(time.time()))
        auth_payload = {
                'path': path,
                'nonce': timestamp,
                'token_id': self.token_id
        }
        sign = jwt.encode(auth_payload, self.api_secret, algorithm='HS256')
        request_data=requests.get(
            self.api_endpoint+path
            ,headers = {
                'X-Quoine-API-Version': '2',
                'X-Quoine-Auth': sign,
                'Content-Type': 'application/json'
            })
        return request_data

    def post_api_call(self,path,body):
        body = json.dumps(body)
        timestamp = str(int(time.time()))
        auth_payload = {
                'path': path,
                'nonce': timestamp,
                'token_id': self.token_id
        }
        sign = jwt.encode(auth_payload, self.api_secret, algorithm='HS256')
        request_data=requests.post(
            self.api_endpoint+path
            ,data = body
            ,headers = {
                'X-Quoine-API-Version': '2',
                'X-Quoine-Auth': sign,
                'Content-Type': 'application/json'
            })
        return request_data

    def get_board(self):
        api = quoineApi()
        result = api.get_api_call('/products/5/price_levels').json()
        bids = util.util.list_to_pd(result['buy_price_levels'],'qo',False)
        asks = util.util.list_to_pd(result['sell_price_levels'],'qo',True)
        return bids,asks

    def get_balance(self):
        api = quoineApi()
        result = api.get_api_call('/accounts/balance').json()
        data = {}
        for row in result:
            if (row['currency'] == 'JPY'):
                data['jpy_amount'] = round(float(row['balance']), 2)
                data['jpy_available'] = round(float(row['balance']), 2)
            elif (row['currency'] == 'BTC'):
                data['btc_amount'] = round(float(row['balance']), 8)
                data['btc_available'] = round(float(row['balance']), 8)
        return data
    
    def get_accounts(self):
        api = quoineApi()
        result = api.get_api_call('/trading_accounts').json()
        return result

    def get_account(self, account_id):
        api = quoineApi()
        result = api.get_api_call('/trading_accounts/'+account_id).json()
        return result

    def get_open_positions(self):
        api = quoineApi()
        result = api.get_api_call('/trades?status=open').json()
        return result

    def order(self,data):
        api = quoineApi()
        result = api.post_api_call('/orders/',data).json()
        return result

使用方法

以下のソースをquoine.pyというファイル名で保存します。

APIを呼び出すプログラム例

呼び出すプログラム側で以下のように実装します。

import quoineApi

api = quoineApi.quoineApi()
bids,asks = api.get_board()

これは、板情報を取得する場合です。