スポンサードリンク
Contents
QUOINEのAPIを使ってビットコインの板情報、資産情報を取得
bitFlyer、coincheck、Zaifに引き続いて
QUOINEのAPIを使ってビットコインの
板情報、資産情報を取得、
また新規注文を出す処理を実装してみました。
前回の記事でQUOINEのAPIへの接続が上手くいかないと書きましたが、
本日再度試したところ何事もなく接続できました。
特にソースコードを書き換えることなく
「どういうエラーが出てたっけ?」
ということを確認するために
動かしてみたら接続できてしまったという経緯です。
ということでソースコードです。
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 9 12:00:27 2017
@author: ichizo
"""
import json
import requests
import time
import jwt
import util
class quoineApi:
def __init__(self):
self.token_id = 'トークンID'
self.api_secret = 'APIシークレット'
self.api_endpoint = 'https://api.quoine.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'] = float(row['balance'])
data['jpy_available'] = float(row['balance'])
elif (row['currency'] == 'BTC'):
data['btc_amount'] = float(row['balance'])
data['btc_available'] = float(row['balance'])
return data
def order(self,data):
api = quoineApi()
result = api.post_api_call('/orders/',data).json()
return result