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

前回はbitFlyerのAPIから注文する方法をご紹介しました。

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

2018年10月10日

今回はcoincheckのAPIから注文する
サンプルプログラムをご紹介します。

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

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

coincheck APIサンプルプログラム

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

coincheck APIソースコード

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

import json
import requests
import time
import hmac
import hashlib
import util

class coincheckApi:
    def __init__(self):
        self.api_key = 'APIキー'
        self.api_secret = 'APIシークレットキー'
        self.api_endpoint = 'https://coincheck.com'

    def get_api_call(self,path):
        timestamp = str(int(time.time()*1000))
        text = timestamp + self.api_endpoint + path
        sign = hmac.new(bytes(self.api_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()
        request_data=requests.get(
            self.api_endpoint+path
            ,headers = {
                'ACCESS-KEY': self.api_key,
                'ACCESS-NONCE': timestamp,
                'ACCESS-SIGNATURE': sign,
                'Content-Type': 'application/json'
            })
        return request_data

    def post_api_call(self,path,body):
        body = json.dumps(body)
        timestamp = str(int(time.time()*1000))
        text = timestamp + self.api_endpoint + path + body
        sign = hmac.new(bytes(self.api_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()
        request_data=requests.post(
            self.api_endpoint+path
            ,data= body
            ,headers = {
                'ACCESS-KEY': self.api_key,
                'ACCESS-NONCE': timestamp,
                'ACCESS-SIGNATURE': sign,
                'Content-Type': 'application/json'
            })
        return request_data

    def get_board(self):
        api = coincheckApi()
        result = api.get_api_call('/api/order_books').json()
        bids = util.util.list_to_pd(result['bids'],'cc',False)
        asks = util.util.list_to_pd(result['asks'],'cc',True)
        return bids,asks

    def get_balance(self):
        api = coincheckApi()
        result = api.get_api_call('/api/accounts/balance').json()
        if ('jpy' not in result):
            result['jpy'] = 0
        if ('btc' not in result):
            result['btc'] = 0
        data = {}
        data['jpy_amount'] = round(float(result['jpy']), 2)
        data['jpy_available'] = round(float(result['jpy']) - float(result['jpy_reserved']), 2)
        data['btc_amount'] = round(float(result['btc']), 8)
        data['btc_available'] = round(float(result['btc']) - float(result['btc_reserved']), 8)
        return data

    def get_leverage_balance(self):
        api = coincheckApi()
        result = api.get_api_call('/api/accounts/leverage_balance').json()
        return result

    def get_open_positions(self):
        api = coincheckApi()
        result = api.get_api_call('/api/exchange/leverage/positions?status=open').json()
        return result

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

使用方法

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

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

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

import coincheckApi

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

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