CryptocurrencyPython

Bitbank APIの使い方|Pythonでビットコインの価格を入手&ローソク足チャートの作成方法

Cryptocurrency

はじめに

PythonによるBitbank APIの使い方を解説します。この記事では、以下の方法を解説したいと思います。

  • APIキーの発行方法
  • ビットコインの価格を入手する方法
  • ローソク足チャートの作成方法

この記事のゴール

Bitbank APIを使ってビットコインの価格を入手する方法を知ることができます。

Bitbank APIの使い方

Blockchain, Cryptocurrency, Bitcoin, Exchange, ネットワーク

Bitbank APIキーの発行

Bitbank APIキーの発行には、bitbankで口座開設の必要があります。

まずはbitbankで口座開設ください。

API仕様の確認方法

API仕様の確認方法は以下を参照ください。
ただし、これから解説するパブリックAPIを実施するには、Bitbank APIキーの発行は不要なので、とりあえずやってみたいという方は、このフローを飛ばしても大丈夫です。

Just a moment...

python_bitbankccのインストール

pip install git+https://github.com/bitbankinc/python-bitbankcc.git

python_bitbankccの使い方

インポートする (インストールと違ってモジュール名は - ではなく _ になります)

import python_bitbankcc

パブリックAPIのコード

import python_bitbankcc
import json

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# PUBLIC TEST

value = pub.get_ticker(
    'btc_jpy' # ペア
)
print(json.dumps(value))

value = pub.get_depth(
    'btc_jpy' # ペア
)
print(json.dumps(value))

value = pub.get_transactions(
    'btc_jpy' # ペア
)
print(json.dumps(value))

# 同じメソッドを日にち指定で
value = pub.get_transactions(
    'btc_jpy', # ペア
    '20170313' # YYYYMMDD 型の日付
)
print(json.dumps(value))

value = pub.get_candlestick(
    'btc_jpy', # ペア
    '1hour', # タイプ
    '20170313' # YYYYMMDD 型の日付
)
print(json.dumps(value))

パブリックAPIのコードの解説

get_ticker
  • ティッカー情報の取得。

Parameters:

NameTypeMandatoryDescription
pairstringYES通貨ペア:
 btc_jpyxrp_jpyxrp_btcltc_jpy,
 ltc_btceth_jpyeth_btcmona_jpy,
 mona_btcbcc_jpybcc_btcxlm_jpyxlm_btc

Response:

NameTypeDescription
sellstring現在の売り注文の最安値
buystring現在の買い注文の最高値
highstring過去24時間の最高値取引価格
lowstring過去24時間の最安値取引価格
laststring最新取引価格
volstring過去24時間の出来高
timestampnumber日時(UnixTimeのミリ秒)

レスポンスのフォーマット:

{"{
  "success": 0,
  "data": {
    "sell": "string",
    "buy": "string",
    "high": "string",
    "low": "string",
    "last": "string",
    "vol": "string",
    "timestamp": 0
  }
}tamp": 1610323224008}
get_depth
  • 板情報を取得。

Parameters:

NameTypeMandatoryDescription
pairstringYES通貨ペア:
 btc_jpyxrp_jpyxrp_btcltc_jpy,
 ltc_btceth_jpyeth_btcmona_jpy,
 mona_btcbcc_jpybcc_btcxlm_jpyxlm_btc

Response:

NameTypeDescription
asks[string, string][]売り板 [価格, 数量]
bids[string, string][]買い板 [価格, 数量]

レスポンスのフォーマット例:

{
  "success": 0,
  "data": {
    "asks": [
      [
        "string",  "string"
      ]
    ],
    "bids": [
      [
        "string",  "string"
      ]
    ]
  }
}
get_transactions

[Public API] 指定された日付の全約定履歴を取得。

Parameters:

NameTypeMandatoryDescription
pairstringYES通貨ペア:
 btc_jpyxrp_jpyxrp_btcltc_jpy,
 ltc_btceth_jpyeth_btcmona_jpy,
 mona_btcbcc_jpybcc_btcxlm_jpyxlm_btc
YYYYMMDDstringNOdate formatted as YYYYMMDD

Response:

NameTypeDescription
transaction_idnumber取引ID
sidestringbuy または sell
pricestring価格
amountstring数量
executed_atnumber約定日時(UnixTimeのミリ秒)

レスポンスのフォーマット:

{
  "success": 0,
  "data": {
    "transactions": [
      {
        "transaction_id": 0,
        "side": "string",
        "price": "string",
        "amount": "string",
        "executed_at": 0
      }
    ]
  }
}
get_candlestick

[Public API] 指定された日付のロウソク足データを取得。

Parameters:

NameTypeMandatoryDescription
pairstringYES通貨ペア:
 btc_jpyxrp_jpyxrp_btcltc_jpy
ltc_btceth_jpyeth_btcmona_jpy
mona_btcbcc_jpybcc_btcxlm_jpyxlm_btc
candle-typestringYES以下の期間から指定: 1min5min15min30min1hour4hour8hour12hour1day1week1month
YYYYstringYES日付 YYYYMMDD 形式または YYYY を指定
  • YYYY の指定は candle-type によって異なります:
    • YYYYMMDD1min5min15min30min1hour
    • YYYY4hour8hour12hour1day1week1month

Response:

NameTypeDescription
ohlcvstring[][始値, 高値, 安値, 終値, 出来高, UnixTimeのミリ秒]

レスポンスのフォーマット:

{
  "success": 0,
  "data": {
    "candlestick": [
      {
        "type": "string",
        "ohlcv": [
          [
            "string"
          ]
        ]
      }
    ]
  }
}

ローソク足で可視化

暗号通貨, ブロック鎖, Bitcoin, コイン, お金, 電子マネー, 通貨, 模倣, デザイン

読み出した価格をDataFrame化

import python_bitbankcc
import json
import pandas as pd
import matplotlib.pyplot as plt

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

#今年の価格を取得する
value = pub.get_candlestick(
    'btc_jpy', # ペア
    '1day', # タイプ
    '2021' # YYYYMMDD 型の日付
)
#pandasでDataFrame化
df = pd.DataFrame(value["candlestick"][0]["ohlcv"])
df = df.rename(columns={0:"Open",1:"High",2:"Low",3:"Close",4:"Volume",5:"UnixTime"})

日付を定義

取得したチャートの日付を指定する。
今回は、2021年1月1日〜2021年1月11日までのデータを取得したので、その日付を作成します。日付は、取得した日付を正確に記述する必要があるので、注意しましょう。

import datetime

def list_date(start_date='2021-01-01', end_date='2021-01-11'):

    # str型をdatetime型に変換する.
    start_date = datetime.datetime.strptime(start_date, '%Y-%m-%d')
    end_date = datetime.datetime.strptime(end_date, '%Y-%m-%d')

    # 開始日と終了日の間隔を計算する.
    days = (end_date - start_date).days

    # 間隔の分だけfor文を回し,日を追加する.
    tmp_date = start_date
    date = [tmp_date]
    for i in range(days):
        tmp_date += datetime.timedelta(days=1)
        date.append(tmp_date)

    return date

date = list_date()

インデックスをdatetimeに

この後使用するmplfinanceというライブラリの書式通りにする必要があるため以下二点の変換処理をする。

  • indexをdatetimeに変換
  • 価格を浮動小数点数に変換
df.index = date 
df_s= df[["Open","High","Low","Close","Volume"]].astype('float64')

ローソク足チャートの出力

mplfinanceのインストールや使い方は、以下の記事を参照ください。

import mplfinance as mpf
mpf.plot(df_s, type='candle', figratio=(12,4), style='yahoo')

仮想通貨の銘柄のローソク足の表示方法の詳細に関しては、以下の記事を参考にしてみてください。

出力結果

ローソク足チャートが出力されました。

まとめ

PythonによるBitbank APIの使い方を解説し、以下二点の方法を実現することができました。

  • ビットコインの価格を入手する方法
  • ローソク足チャートの作成方法

Pythonをもっと勉強したい、勉強法がわからないという方は以下の記事を参考にしてみてください。

もし、Pythonが難しいと感じている方がいらっしゃったらこちらの記事を参考にしてみてください。

コメント

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