以下の内容はhttps://blue1st.hateblo.jp/entry/2015/11/29/023850より取得しました。


ビットコイン取引所BTCボックスのAPIを叩くgem作った

ここのところエンジニアっぽいエントリなかったなー&たまにRuby使っとかないと忘れちゃうなーということで。

github.com

最終的には自動取引とかやってみたいけど、ひとまず第一段階として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だともう少し効率的な作りにできそう。

↓また読んでる途中なんだよね・・・

あと引数の取り方なんかももっと工夫の余地がありそうな気がする。

何はともあれ目的は達したので今回はここまで。




以上の内容はhttps://blue1st.hateblo.jp/entry/2015/11/29/023850より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14