bitbankの取引履歴をAPIを使って一括ダウンロード

年末になり、確定申告を意識する季節になりました。損益を確かめるには取引履歴をダウンロードする必要があります。

bitbank取引所はwebから取引履歴をダウンロードできますが、500件ずつしかダウンロード出来なくて不便です。

pythonを使って、一括ダウンロードするスクリプトを作ったので自由に使って下さい。コードは下にあります。python_bitbankccライブラリを使用するので、使用前にpipコマンドでライブラリをインストールして下さい。


import datetime
import pandas as pd
import python_bitbankcc
import csv

pair = 'btc_jpy'
apiKey = 'your_api_key'
secret = 'your_secret_key'
bitbank = python_bitbankcc.private(apiKey, secret)

def day_to_unixtime(date_str):
    # date_str = '2018-02-01 12:30:00' or date_str = '2018-02-01'
    l = len(date_str.split())
    if l == 1:
        date_str = date_str + ' 00:00:00'
    time = pd.to_datetime(date_str) + datetime.timedelta(hours=-9)
    return int(time.timestamp() * 1000)

def get_trade_history_mod(pair, order_count, order_id = None, since = None, end = None, order = None):
    params = {'pair': pair,'count': order_count}
    if order_id != None: params['order_id'] = order_id
    if since != None: params['since'] = since
    if end != None: params['end'] = end
    if order != None: params['order'] = order
    return bitbank._get_query('/user/spot/trade_history?', params)

def get_trade_history_bitbank(since,end,pair):
    data = []
    time = end
    data.append(['side','amount','price','fee','timestamp','date'])
    total_amount_buy = 0
    total_amount_sell = 0
    total_buy = 0
    total_sell = 0
    total_fee = 0
    while(time>since):
        t = get_trade_history_mod(pair=pair, order_count = '1000', end=str(time))
        trades = t['trades']

        if len(trades)==0:
            break

        for item in trades:
            timestamp = item['executed_at']
            date = datetime.datetime.fromtimestamp(int(item['executed_at'])/1000)
            side = item['side']
            amount = float(item['amount'])
            price = float(item['price'])
            fee = float(item['fee_amount_quote'])
            time = timestamp - 1
            if time<since:
                break
            data.append([side,amount,price,fee,timestamp,date])
            total_fee += fee
            if side=='buy':
                total_amount_buy += amount
                total_buy += round(amount*price,4)
            if side=='sell':
                total_amount_sell += amount
                total_sell += round(amount*price,4)
    print('総購入数量',total_amount_buy)
    print('総売却数量',total_amount_sell)
    print('総購入金額',total_buy)
    print('総売却金額',total_sell)
    print('手数料総額',total_fee)
    
    return data

since = day_to_unixtime(date_str='2022-01-01')
end = day_to_unixtime(date_str='2022-12-31')

data = get_trade_history_bitbank(since,end,pair)

with open('trade_history_'+pair+'.csv', 'w') as f:
    writer = csv.writer(f, lineterminator='\n')
    writer.writerows(data)

apiKey = 'your_api_key'
secret = 'your_secret_key'
にあなたのAPIキーをセットして下さい。
pair = 'btc_jpy'
で通貨ペアを指定します。

since = day_to_unixtime(date_str='2022-01-01')
end = day_to_unixtime(date_str='2022-12-31')
で開始時刻と終了時刻を指定します。

私の使ったバージョンでは
python_bitbankcc.get_trade_history
にバグがあって時刻指定できなかったので、
get_trade_history_mod
メソッドで定義し直して使ってます。

適当に改造して利用してください。


~こんなマガジンやってます~

~広告~

【Bybit】日本人にも人気のある、世界トップレベルの仮想通貨取引所
無料登録はこちら:
https://www.bybit.com/register?affiliate_id=22416&group_id=0&group_type=1
☆高金利ステーキング、USDTステーキング年利最大12%
☆豊富なレバレッジトークンの取り扱い

【Binance】世界最大の仮想通貨取引所
無料登録はこちら
https://accounts.binance.com/en/register?ref=KJWM1JMM
☆上記リンクからの登録で取引手数料10%OFF
☆350種類以上の取扱コイン
☆豊富なセービングとステーキング

この記事が気に入ったらサポートをしてみませんか?