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件) を見る