はじめに
PythonによるBitbank APIの使い方を解説します。この記事では、以下の方法を解説したいと思います。
- APIキーの発行方法
- ビットコインの価格を入手する方法
- ローソク足チャートの作成方法
この記事のゴール
Bitbank APIを使ってビットコインの価格を入手する方法を知ることができます。
Bitbank APIの使い方
Bitbank APIキーの発行
Bitbank APIキーの発行には、bitbankで口座開設の必要があります。
まずはbitbankで口座開設ください。
API仕様の確認方法
API仕様の確認方法は以下を参照ください。
ただし、これから解説するパブリックAPIを実施するには、Bitbank APIキーの発行は不要なので、とりあえずやってみたいという方は、このフローを飛ばしても大丈夫です。
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:
Name | Type | Mandatory | Description |
---|---|---|---|
pair | string | YES | 通貨ペア:btc_jpy , xrp_jpy , xrp_btc , ltc_jpy ,ltc_btc , eth_jpy , eth_btc , mona_jpy ,mona_btc , bcc_jpy , bcc_btc , xlm_jpy , xlm_btc |
Response:
Name | Type | Description |
---|---|---|
sell | string | 現在の売り注文の最安値 |
buy | string | 現在の買い注文の最高値 |
high | string | 過去24時間の最高値取引価格 |
low | string | 過去24時間の最安値取引価格 |
last | string | 最新取引価格 |
vol | string | 過去24時間の出来高 |
timestamp | number | 日時(UnixTimeのミリ秒) |
レスポンスのフォーマット:
{"{
"success": 0,
"data": {
"sell": "string",
"buy": "string",
"high": "string",
"low": "string",
"last": "string",
"vol": "string",
"timestamp": 0
}
}tamp": 1610323224008}
get_depth
- 板情報を取得。
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
pair | string | YES | 通貨ペア:btc_jpy , xrp_jpy , xrp_btc , ltc_jpy ,ltc_btc , eth_jpy , eth_btc , mona_jpy ,mona_btc , bcc_jpy , bcc_btc , xlm_jpy , xlm_btc |
Response:
Name | Type | Description |
---|---|---|
asks | [string, string][] | 売り板 [価格, 数量] |
bids | [string, string][] | 買い板 [価格, 数量] |
レスポンスのフォーマット例:
{
"success": 0,
"data": {
"asks": [
[
"string", "string"
]
],
"bids": [
[
"string", "string"
]
]
}
}
get_transactions
[Public API] 指定された日付の全約定履歴を取得。
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
pair | string | YES | 通貨ペア:btc_jpy , xrp_jpy , xrp_btc , ltc_jpy ,ltc_btc , eth_jpy , eth_btc , mona_jpy ,mona_btc , bcc_jpy , bcc_btc , xlm_jpy , xlm_btc |
YYYYMMDD | string | NO | date formatted as YYYYMMDD |
Response:
Name | Type | Description |
---|---|---|
transaction_id | number | 取引ID |
side | string | buy または sell |
price | string | 価格 |
amount | string | 数量 |
executed_at | number | 約定日時(UnixTimeのミリ秒) |
レスポンスのフォーマット:
{
"success": 0,
"data": {
"transactions": [
{
"transaction_id": 0,
"side": "string",
"price": "string",
"amount": "string",
"executed_at": 0
}
]
}
}
get_candlestick
[Public API] 指定された日付のロウソク足データを取得。
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
pair | string | YES | 通貨ペア:btc_jpy , xrp_jpy , xrp_btc , ltc_jpy , ltc_btc , eth_jpy , eth_btc , mona_jpy , mona_btc , bcc_jpy , bcc_btc , xlm_jpy , xlm_btc |
candle-type | string | YES | 以下の期間から指定: 1min , 5min , 15min , 30min , 1hour , 4hour , 8hour , 12hour , 1day , 1week , 1month |
YYYY | string | YES | 日付 YYYYMMDD 形式または YYYY を指定 |
- YYYY の指定は candle-type によって異なります:
YYYYMMDD
:1min
,5min
,15min
,30min
,1hour
YYYY
:4hour
,8hour
,12hour
,1day
,1week
,1month
Response:
Name | Type | Description |
---|---|---|
ohlcv | string[] | [始値, 高値, 安値, 終値, 出来高, UnixTimeのミリ秒] |
レスポンスのフォーマット:
{
"success": 0,
"data": {
"candlestick": [
{
"type": "string",
"ohlcv": [
[
"string"
]
]
}
]
}
}
ローソク足で可視化
読み出した価格を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が難しいと感じている方がいらっしゃったらこちらの記事を参考にしてみてください。
コメント