DEVGRU

プログラミングと競馬予想について書きます

bitbank から 約定履歴を取得する

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を作ることができる。

参考:

docs.bitbank.cc

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

  • 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
  • 出版社/メーカー: 日経BP社
  • 発売日: 2018/02/24
  • メディア: 単行本
  • この商品を含むブログを見る

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

bitbankの取引履歴が取り出せないのでサポートに問い合わせてみた

確定申告に必要なbitbankの取引履歴が取り出せないので、サポートに聞いてみた。

bitbankは負荷を理由にCSVダウンロードの日時指定やAPIの機能停止をアナウンスしていたが、 流石に確定申告に間に合わないので、何時頃再開になるか問い合わせてみた。

問い合わせの文章はこんなかんじ。

確定申告に必要な取引履歴データですが、現在はAPI停止、CSVダウンロードは直近500件までとされていて、データ取得ができないようです。

何時頃再開されますでしょうか?

日曜の夜にしてはレスポンスが早く、こんな内容だった。

お問い合わせ頂きまして誠に有難うございます。 ビットバンクサポートチームです。

現在、取引履歴のダウンロードの制限について社内で検討中でございます。

2017年のお取引履歴につきましては、こちらでご用意させていただきご提供いたします。 少々おまちくださいませ。

尚、確定申告の申告方法につきましては、お客様ご自身で税理士や税務署へご確認くだいませ。 今後とも何卒宜しくお願い致します。

特にこちらでは言及していないが、2017年分の取引履歴を出してくれるようだ。 結局欲しいのはそれなので、先を読んだ対応で悪くない。

申告方法云々に関してはよく損じあげているので余計なお世話感は無くはないが。

結論、問い合わせればくれるんじゃん、ということだった。

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

プラットフォーム革命――経済を支配するビジネスモデルはどう機能し、どう作られるのか

プラットフォーム革命――経済を支配するビジネスモデルはどう機能し、どう作られるのか

マンガでわかる ビットコインと仮想通貨 (池田書店)

マンガでわかる ビットコインと仮想通貨 (池田書店)

いつでも、何度でも稼げる!  IPOセカンダリー株投資

いつでも、何度でも稼げる! IPOセカンダリー株投資

Coursera の Machine Learning course を修了した

昨年の12月から受講していた Cousera の Machine Learning course を修了した。

www.coursera.org

以下、簡単に感想

  • この界隈では受講必須
  • パラメータチューニングやサンプル追加の効果の判断など、アルゴリズムよりも重要な点について教えてくれる
    • ライブラリしか使わない、という人にも有用
  • プログラミングはOctaveだが、行列演算がとても書きやすくてよい

学習当初は相場の予測に使おうと思っていたが、軒並み仮想通貨が暴落したのでちょっと迷っている...

仕事ではじめる機械学習

仕事ではじめる機械学習

データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング

データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

  • 作者: Sebastian Raschka,Vahid Mirjalili,福島真太朗,株式会社クイープ
  • 出版社/メーカー: インプレス
  • 発売日: 2018/03/16
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎