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

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

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

2018年10月10日

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

2018年10月11日

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

ただ、Zaifはビットコインの流出事件の影響で
運営会社のテックビューロが解散することになりました。

Zaifに不正アクセスで67億円の仮想通貨が流出(Zaif流出事件)

2018年9月20日

仮想通貨取引所の事業はフィスコに
譲渡されることになるそうですが、
未だ状況は不透明ですのでご注意ください。

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

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

Zaif APIサンプルプログラム

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

Zaif APIソースコード

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

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

class zaifApi:
    def __init__(self):
        self.api_key = 'APIキー'
        self.api_secret = 'APIシークレットキー'
        self.api_get_endpoint = 'https://api.zaif.jp/api/1/'
        self.api_endpoint = 'https://api.zaif.jp/tapi'

    def get_api_call(self,method,path=''):
        url = self.api_get_endpoint + method
        if (path != ''):
            url = url  + '/' + path
        request_data = requests.get(url)
        return request_data

    def post_api_call(self,method,req={}):
        #body = json.dumps(body)
        req['method'] = method
        req['nonce'] = int(time.time())
        post_data = urllib.parse.urlencode(req).encode()
        sign = hmac.new(str.encode(self.api_secret), post_data, hashlib.sha512).hexdigest()
        #sign = hmac.new(bytes(self.api_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha512).hexdigest()
        request_data=requests.post(
            self.api_endpoint
            ,data= post_data
            ,headers = {
                'key': self.api_key,
                'sign': sign,
            })
        return request_data

    def get_board(self):
        zaif = zaifApi()
        result = zaif.get_api_call('depth','btc_jpy').json()
        bids = util.util.list_to_pd(result['bids'],'zf',False)
        asks = util.util.list_to_pd(result['asks'],'zf',True)
        return bids,asks

    def get_balance(self):
        zaif = zaifApi()
        result = zaif.post_api_call('get_info').json()
        data = {}
        funds = result['return']['funds']
        deposit = result['return']['deposit']

        data['jpy_amount'] = round(float(funds['jpy']), 2)
        data['jpy_available'] = round(float(deposit['jpy']), 2)
        data['btc_amount'] = round(float(funds['btc']), 8)
        data['btc_available'] = round(float(deposit['btc']), 8)
        return data

    def order(self,data):
        zaif = zaifApi()
        result = zaif.post_api_call('trade',data).json()
        return result

使用方法

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

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

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

import zaifApi

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

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