ここのところエンジニアっぽいエントリなかったなー&たまにRuby使っとかないと忘れちゃうなーということで。
最終的には自動取引とかやってみたいけど、ひとまず第一段階としてAPIを一通り叩けるもの作ってみた。
導入
色々Rubyの作法わかってないとかテスト書いてないとか英語が不自由とかの事情があってRubygemsに登録するのは心苦しかったのでとりあえずGithubにだけ。
specific_installを使ってインストールする。
$ gem install specific_install $ gem specific_install -l "https://github.com/blue1st/btcbox.git"
API
やりたいことに応じて必要なAPIキーをあらかじめ取得しておく。
ログイン後に「財産センター」内の「APIキーの取得」ページから取得できる。
https://www.btcbox.co.jp/api/secret/keys/
API | 概要 | APIキー |
---|---|---|
Ticker | 売り気配・買い気配・24時間での出来高など | 不要 |
Depth | 注文量 | 不要 |
Orders | オーダーブック | 不要 |
Blance | アカウントの情報 | 読み出しのみ |
Wallet | 口座のアドレス | 読み出しのみ |
Trade List | 注文一覧 | 読み出しのみ |
Trade View | 注文の詳細 | 読み出しのみ |
Trade Cancel | 注文のキャンセル | 読み書き |
Trade Add | 注文の追加 | 読み書き |
使い方
オブジェクト生成時に必要に応じてAPIキーをつっこんでおく。
第一引数でコインの種類を指定(デフォルトはBitCoin)、あとはAPIに応じて指定する感じ。
require 'btcbox' btc = Btcbox::Client.new(PUBLIC_KEY, SECRET_KEY) btc.ticker(["btc"|"ltc"|"doge"]) btc.depth(["btc"|"ltc"|"doge"]) btc.orders(["btc"|"ltc"|"doge"]) btc.balance() btc.wallet(["btc"|"ltc"|"doge"]) btc.trade_list(["btc"|"ltc"|"doge"], [since], ["open"|"all"] ) #第二引数としてunixtimeを入れると、その時点以降の一覧となる #第三引数は"open"を指定すると未完了の注文のみ、"all"だと完了したものやキャンセルしたものを含めた一覧が返る btc.trade_view(["btc"|"ltc"|"doge"], id) #第二引数にtrade_listなどで取得したidを指定する btc.trade_cancel(["btc"|"ltc"|"doge"], id) #第二引数にtrade_listなどで取得したidを指定する btc.trade_add(["btc"|"ltc"|"doge"], amount, price, ["buy"|"sell"]) #第二引数に個数、第三引数価格、第四引数に売買のいずれかを指定する
みたいな感じ。
戻り値の子細は公式のドキュメントを見るとよい。
https://www.btcbox.co.jp/help/api.html
ワンライナーではこんな感じ。
$ ruby -rbtcbox -e'b=Btcbox::Client.new();cnt=0;b.orders.each{|o|cnt+=1;puts "#{cnt},#{Time.at(o["date"].to_i)},#{o["price"]},#{o["amount"]}"}' 1,2015-12-13 14:49:33 +0900,52973,0.808 2,2015-12-13 14:50:43 +0900,52926,0.4235 3,2015-12-13 14:51:39 +0900,52952,2.7395 … 97,2015-12-13 15:54:25 +0900,52813,0.52 98,2015-12-13 15:54:57 +0900,52832,0.254 99,2015-12-13 15:55:53 +0900,52815,0.2655 100,2015-12-13 15:56:23 +0900,52802,0.34
今回はAPIごとにわざわざ関数を用意するベタな実装をしちゃったけど、Rubyだともう少し効率的な作りにできそう。
↓また読んでる途中なんだよね・・・
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (2件) を見る
あと引数の取り方なんかももっと工夫の余地がありそうな気がする。
何はともあれ目的は達したので今回はここまで。