通常、我々が仮想通貨の取引を行うとき、どこかの仮想通貨取引所を利用することになる。 日本にはいくつもの仮想通貨取引所があるが、このうちビットバンクに注目したい。
ビットバンクはアルトコインの上場が多く、 また先日行われたFLRのエアドロップにおいても対応が早かった。 まずこの点を評価したい。
ビットバンクは スマホ用アプリも使い勝手がよく、 スマホだけあればアカウント作成から入金から取引まで すべて快適に行うことが出来る。 色々と足りぬ点はあるものの、十分に利用出来る水準にある。 京大の名にかけて、おすすめ出来る取引所だ。
一般的な仮想通貨取引では、チャートを目で見て、買い・売りを入れる。 これで十分に取引出来るのだが、より安定して 資産を増やすためには、システム化し、解析や取引を自動化することが考えられる。 目標は不労所得の獲得、労働からの解放だ。
このために今回はビットバンクのAPIを使うことを考えよう。
ビットバンクのAPIを叩き、チャートの情報を取得し、解析し、 実際に取引を行うプログラムを書くために もっとも大切なことは、そのプログラムにバグがないことだ。 プログラムのミスによって想定しない動作をしてしまったら大損害になるかもしれない。 こういったことは絶対に避けなければいけない。
プログラムに絶対はない。 しかし、バグる確率を極限まで下げるテクニックは存在する。 その一つは型のパワーを利用することだ。 PythonやRubyやJavaScriptのような言語ではなく、 RustやHaskellやScalaのような言語でゴリゴリの型付を行うことで、 バグる確率を下げることが可能となる。 実際、HFTのようなシステムでは、このような手法が採られていると聞く。 個人的には、お金を扱うシステムにおいて動的型付言語を使うのは 論外であるように思う。
ビットバンクは公開APIに対して、 Pythonライブラリを公式にサポートしているが、 上に述べた理由から、これを使うことは出来ない。
Rustだ。Rustしかない。 Rust以外の言語は信用出来ない。 しかし残念ながら、探してみたところまともなRustライブラリは存在しなかった。
そこで、 昨日アマプラでボクシングを見ながら ちまちまと作り上げた。
https://github.com/akiradeveloper/bitbank-api-rs
ボクシングの感想だが、 佐々木尽は本当に強かった。
ビットバンクはWebSocketを利用したストリームも公開しており、 これを扱うコードを書くのには多少苦労したが、それ以外はすんなりいった。 初版はまず、Tickerという一つのデータだけを実装することにしたが、 今後は別のデータも実装していく予定である。 ここらへんはやりたい人が勝手にPRしてくるのを待っていたりもする。 一緒に、仮想通貨を盛り上げていきたい。
また、実際に取引を行うためのプライベートAPIと呼ばれるものも将来的には実装したいと思っている。 これについては、テスト用の仮想アカウントのようなものが作れたら開発はより簡単になるが、 そういったものは提供されておらず、それどころかビットバンクは規約上は複垢を禁止しているようだ。 そのため、この部分が開発のネックになるだろうと思われる。