Bitcoinの価格情報を格納するテーブルのデザイン

各ビットコイン業者の価格取得APIのフォーマット

bitflyerなどのAPIで所得したデータを、データベースのテーブルに格納しようと思います。
そのために、

  1. 格納したいビットコイン業者のAPIのフォーマとを調べる
  2. それらのデータを格納できるテーブルの構成を考える

の手順で作業したいと思います。

bitFlyerのAPIフォーマット

今回使用する、国内ビットコイン業者の1つがで取引量が最大のbitFlyerです。

bitFlyer(ビットフライヤー)- 仮想通貨の購入/販売所/取引所
bitFlyer(ビットフライヤー)では仮想通貨ビットコインを透明な価格で簡単に取引することができます。チャートで相場確認も可能。bitFlyer(ビットフライヤー)は皆様のビットコインに関するあらゆる取引をサポートし、ビットコインの普及に貢献します。

bitFlyerのAPIのTicker(価格情報)APIの取得する値の形式である、JSONフォーマットは以下です。

{
  "product_code": "BTC_JPY",
  "timestamp": "2015-07-08T02:50:59.97",
  "tick_id": 3579,
  "best_bid": 30000,
  "best_ask": 36640,
  "best_bid_size": 0.1,
  "best_ask_size": 5,
  "total_bid_depth": 15.13,
  "total_ask_depth": 20,
  "ltp": 31690,
  "volume": 16819.26,
  "volume_by_product": 6819.26
}
ビットコイン取引所【bitFlyer Lightning】
bitFlyer Lightning は、ビットコインの取引所です。お客様同士の需要と供給から価格が決定されます。円を売ってビットコインを買う、反対にビットコインを売って円に替えることもできます。FX(外国為替証拠金取引)での取引と似ています。

ZaifのAPIフォーマット

そして今回、アービトラージの対象としてbitFlyerとの価格差を見ようとしているのが、最近は国内ビットコンイ業者で取引量が第2位Zaifです。

Zaif(ザイフ)は仮想通貨取引所です。Bitcoin(ビットコイン/BTC)やNEM(ネム/XEM)日本産の仮想通貨MONAcoin(モナコイン/MONA)の取り扱いもあり、売買や決済サービスなど様々な新機能や、仮想通貨を利用した新たな試みをしてる成長型の取引所です。
仮想通貨取引所Zaif(ザイフ)

ZaifのAPIのTicker(価格情報)APIの取得する値の形式である、JSONフォーマットは以下です。

{
"last": 913505,
"high": 932000,
"low": 852000,
"vwap": 879332.3921,
"volume": 15877.3327,
"bid": 913605,
"ask": 913650
}

出典

Zaif Exchange APIドキュメント
お知らせ Zaif APIのドキュメントを見やすくリニューアルいたしました。 下記URLから最新のZaif APIをご確認いただけます。

JSONフォーマットからテーブル項目をデザイン

差し当たり売値と買値のみを格納

まずは、素直にこれをテーブル形式にしたいと思います。アービトラージのために最小限必要な情報は、売値と買値だけですので、それをテーブル項目(列名)にします。

列名 意味 データ型 値サンプル
bid 売値 数値 913605
ask 買値 数値 913650

複数の会社のデータを比較できるようにフィールドを追加

それに以下の列を加え、2つ合わせて主キー(複合キー)ます。

company_id

ビットコイン取引業者ID

数値

001
※ bitFlyerを001、Zaifを002とする

api_call_time 価格取得APIをコールした日時 日付時刻 201807212255

参考

主キー(primary key)を複数のカラムに、その名は複合主キー(composite primary key ) - ts0818のブログ
これまで、主キー(Primary key)は、テーブルに1つしか存在しないと思っていたのですが、SQL Serverで1つのテーブルに2つのPRキーが存在してるじゃないですか!と思って職場の先輩にお聞きしたところ、「複数カラムの組で主キーを構成している」ということでした。 テーブルに主キー(Primary key)は1...

コメント