プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

BitFlyer PublicAPI Tickerについて

最近は仮想通貨のシステムトレードに興味を持ってまして、
先週あたりから複数業者でtickデータを取り込み始めています。
といっても、API制限があったりして(それも業者毎に異なっていたり)
全Tick収集できるわけでもないですから、10秒に1回の頻度にしてます。

で、その過程でこれは悩む人いるのでは?
と思ったのがBitFlyerさんのAPI

https://lightning.bitflyer.jp/docs?lang=ja&_ga=2.3157363.259268394.1503217679-1068925718.1503217679#ticker

f:id:tos5511:20170902173712p:plain

戻り値としては他の取引所と同様のjson形式でなんら問題はないのですが、
私が悩んだのはvolumeとvolume_by_productの違い。
親切な事に解説が記載されているのはvolumeのみでbyproductの定義はなし。
byproductってくらいなので、通貨ペア単独の出来高の事なんだとは思いますが、
ではvolumeって何の出来高なの?まさかイーサリアムとかも含まれる?

調査すればすぐにわかる事なんですが、なぜ仕様書に2つのvolumeの定義の違いが
記載されてないのか。みりゃーわかるでしょ?みたいなレベルなんでしょうかw
とても親切です。問い合わせしても返信は今のところなし。ggrksって事なんでしょう。
ということで、volumeとvolume_by_productが何を指しているのか、調べてみました。


わかりやすいようにキャプチャを取得していきます。


まずはTickerで得られる戻り値
f:id:tos5511:20170902174100p:plain
ここでは各volumeの値は以下となります。
volume:217652.11957087
volume_by_product:16447.51661226

完全同時刻ではありませんが、その時に取得した取引画面上の出来高が以下キャプチャ。

f:id:tos5511:20170902174949p:plain

どうやら、volume_by_productはtickerで呼び出している銘柄(この場合BTCJPYの現物)
volumeは現物、FX、先物の合計のようです。さすがにETH/BTCなどは含まない。

つか、FXのvolume半端ないな。bitflyerのFXは常に1万円くらいレートが高いので
どうかなと思っていましたがこんなに出来高が多いとは。。レバレッジ効果すごいです。
まあレバレッジ聞いていようが、取引は取引ですし、他の取引所のAPIで返却される
volumeもおそらくレバレッジボリュームを含んでいると思わる為、
DBに格納する値にはvolumeを採用しました。


細かいところなんですが、同じ疑問をもった方の参考になれば幸いです。

仮想通貨対応システムプロトタイプその2

f:id:tos5511:20170825003657p:plain
BitFlyerを追加してみたりしてます。

でもapiから取得するdepthが深すぎるため、ネットワーク負荷が・・
depthの実際の取得量はラベルの右に付けてます。
しかしdepthを取得しないとvwap出せないし。。
平日の夜、こんなことを悩んでいて今週は寝不足気味です。

ビットフライヤーさん、仮にこの記事に辿りつくことがありましたら、
apiのoptionで取得するdepth量を調整できるよう検討していただけたら幸いです。

仮想通貨対応システムプロトタイプ構築完了

f:id:tos5511:20170820022651p:plain

とりあえずzaifとcoincheckに対応しました。
しかし組んでみてわかったけど、zaifとか現物もってないと
APIでは売りから入れないんだなぁ・・(方法あるけど見逃してる?)

時間みながら対応業者増やしていくか、てか自作めんどくさ