bitbank の APIを眺めていたら、任意の日付から約定履歴を取得することができることに気づいた。 無限に見られるわけではないみたいだが、cyrptowatch よりも長い期間のOHLCが取得できそうなので頑張ってみた。
こんなスクリプト(batch.py)を書く。
#!usr/bin/env python
from datetime import date, datetime, timedelta
import requests
start = date(2018, 1, 1)
end = date(2018, 4, 11)
markets = [
"btc_jpy",
"xrp_jpy",
"eth_btc",
"ltc_btc",
"mona_jpy",
"mona_btc",
"bcc_jpy",
"bcc_btc",
]
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S.%f'
for market in markets:
start_format = (start + timedelta(hours=9)).strftime(DATETIME_FORMAT)
end_format = (end + timedelta(days=1, hours=9)).strftime(DATETIME_FORMAT)
print(f"DELETE from executions WHERE market = 'bitbank_{market}' AND '{start_format}' <= timestamp AND timestamp < '{end_format}';")
day = start
while day <= end:
day_format = day.strftime('%Y%m%d')
url = f'https://public.bitbank.cc/{market}/transactions/{day_format}'
response = requests.get(url)
while response.status_code != 200:
response = requests.get(url)
assert response.json()['success'] == 1
data = [{'price': float(transaction['price']),
'size': float(transaction['amount']),
'timestamp': datetime.fromtimestamp(transaction['executed_at'] / 1000).strftime(DATETIME_FORMAT)
} for transaction in response.json()['data']['transactions']]
print('INSERT INTO executions (timestamp, market, price, size) VALUES' + \
', '.join(f"('{d['timestamp']}', 'bitbank_{market}', '{d['price']}', '{d['size']}')" for d in data) + ';')
day += timedelta(days=1)
sleep(1)
print()
こんな感じで実行する。
pip install requests python batch.py > batch.sql
PostgreSQLに突っ込むには、以下のコマンドを用いる(その前にテーブル作成が必要)。
psql -f /batch.sql
以下のスキーマで予めテーブルを作成しておく。
CREATE TABLE IF NOT EXISTS executions ( id SERIAL PRIMARY KEY, timestamp TIMESTAMP, market CHARACTER VARYING, price DOUBLE PRECISION, size DOUBLE PRECISION ); CREATE INDEX ON executions (timestamp, market);
これでPostgreSQLに一定期間分の約定履歴が入るので、ここからOHLCを作ることができる。
参考:

独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログを見る

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-
- 作者: 加藤耕太
- 出版社/メーカー: 技術評論社
- 発売日: 2016/12/16
- メディア: 大型本
- この商品を含むブログ (3件) を見る