【python】bitbankのAPIを使用して保有資産を取得する

背景

自分の保有資産を一元管理するアプリを作ってみたいと思っているので、
手始めに使用しているbitbankの保有資産をAPIを使って取得してみました。
pythonのライブラリが公式から提供されているようなので、pythonでやってみます。


手順

手順としては下記の通り。

  1. bitbankでAPIキーを発行する
  2. Pythonライブラリのインストール
  3. pythonでコーディング
  4. 資産情報・取引情報などを取得する

bitbankでAPIキーを発行する

まずはBitbankのアプリやサイトからAPIキーを発行します。
キーの発行はbitbank公式サイトを参考にしました。

ラベル名は何でも大丈夫です。
複数キーを発行する場合などに自分が判別しやすい名前を付けるといいと思います。
”参照用”や”取引用”など。

APIを発行する際は、他者にキーを知られないようご注意ください
売買などを行わないのであれば”参照”のみ有効にして発行するのをお勧めいたします。


Pythonライブラリのインストール

pythonでAPIを使用するために必要なライブラリ(python_bitbankcc)をインストールします。
インストールするにはコマンドプロンプトから下記sudoコマンドを実行します。

sudo pip install git+https://github.com/bitbankinc/python-bitbankcc@<commit_hash>\#egg=python-bitbankcc

sudoコマンドを実行するにはシステムから”sudoの有効化”をオンにする必要があります。
windows11でのsudoの有効化手順は下記サイトを参考にさせていただきました。
【Windows11】sudoを有効にする方法


pythonでコーディング

APIキーを取得し、ライブラリをインストールしたら準備完了です。
インストールした”python_bitbankcc”ライブラリをimportし、
APIを使って各銘柄の保有数、最新価格を取得し、保有数が0以上の保有している銘柄のみ
表示するようにしています。
“API_KEY”は表示されるハイフン入りのままコピペすればOKです。

Python
import python_bitbankcc
import pandas as pd

# キー設定
API_KEY = "xxxxx" #取得したAPIキー
API_SECRET = "xxxxx" #取得したAPIシークレット

private_api = python_bitbankcc.private(API_KEY, API_SECRET)
public_api = python_bitbankcc.public()

try:
    assets = private_api.get_asset()
    asset_list = assets["assets"]
    pd.options.display.float_format = '{:,.2f}'.format
    df = pd.DataFrame(asset_list)
    df["onhand_amount"] = df["onhand_amount"].astype(float)
    df_nonzero = df[df["onhand_amount"] > 0].copy()

    prices = {}

    for asset in df_nonzero["asset"]:
        if asset == "jpy":
            prices[asset] = 1.0
            continue

        pair = f"{asset}_jpy"
        ticker = public_api.get_ticker(pair)

        if "last" in ticker:
            last_price = float(ticker["last"])
            prices[asset] = last_price
        else:
            print(f"{pair} の価格情報を取得できませんでした。")
            prices[asset] = 0.0  # エラー時は0円として扱う

    df_nonzero["price_jpy"] = df_nonzero["asset"].apply(lambda a: prices[a])
    df_nonzero["value_jpy"] = df_nonzero["onhand_amount"] * df_nonzero["price_jpy"]

    if df_nonzero.empty:
        print("現在保有している銘柄はありません。")
    else:
        print("保有中の銘柄と評価額一覧(JPY)")
        print(df_nonzero[["asset", "onhand_amount", "price_jpy", "value_jpy"]])
        print("=======================================")
        print(f"合計資産額(推定): {df_nonzero['value_jpy'].sum():,.0f} 円")

except Exception as e:
    print("エラーが発生しました:", e)

実行すると下記の通り保有している銘柄の保有数(onhand_amount)、最新価格(price_jpy)、
保有金額(value_jpy)、合計資産額を表示することができました。


まとめ

今回はbitbankのAPIを使って保有資産額を取得してみました。
冒頭にも書きましたが、保有資産を一元管理するアプリを作ってみたいと思っているので、
他のネット銀行、証券会社などのAPI使用方法や決まった時間にプログラムを実行する方法などを
紹介していけたらと思っています。

コメント

タイトルとURLをコピーしました