R筋

プログラミングと時々育児

【R】bitFlyerのAPIを操作 public API・borad編

ビットコインバブルに乗っかりまして、
仮想通貨取引所でおなじみbitFlyerの、開発者向けAPIを操作して、
億り人を目指します。

bitFlyer Lightning APIでは3種類のAPIが提供されています。
・HTTP Public API
→ログイン不要で、板情報、歩み情報等取引所が公表する値を取得出来ます。
・HTTP Private API
→ログインが必要で、入出金やトレードなど取引が行なえます。
・Realtime API
→板情報をリアルタイムに取得出来ます。

今回はRcurlを使ってPublic APIにアクセスしてみたいと思います。

#使用パッケージをインストール
install.packages("RCurl")
install.packages("rjson")

#ライブラリロード
library(rjson)
library(RCurl)

#エンドポイントを設定
endpoint <- "https://api.bitflyer.jp/v1/"

#パラメータに対応
getboard <- paste(endpoint,"getboard?product_code=BTC_JPY",sep="")

#json→リスト変換
json <-getURL(getboard)
board <- fromJSON(json)

#リストを分割してデータフレームへ
asks <- data.frame(do.call("rbind",board$asks))
bids <- data.frame(do.call("rbind",board$bids))

asks <- data.frame(unlist(asks$price),unlist(asks$size))
bids <- data.frame(unlist(bids$price),unlist(bids$size))

#askは降順
asks <-asks[order(asks$unlist.asks.price.,decreasing = TRUE),]

#それぞれを3列に修正
asks <- data.frame(asks,rep(0,nrow(asks)))
bids <- data.frame(rep(0,nrow(bids)),bids)

#askはpriceとvolmeを入替
asks <- asks[,c(2,1,3)]

#列名を統一
colnames(asks) <- c("ask", "price", "bid")
colnames(bids) <- c("ask", "price", "bid")

#結合
ita <- rbind(asks,bids)

jsonの扱いが初めてだったため、無理やり感が凄いですが、板情報のような形に出来ました。

f:id:anpontan382:20180104225355j:plain

適当に分析します。

 dim(ita)
[1] 5344    3
#約5000行のデータです。

#中値が178万位なので、150万以上200万以下で抽出してみます
sub <- dplyr::filter(ita,ita$price > 1500000 & 2000000 > ita$price )

#askの合計は1281BTC
sum(sub$ask)
[1] 1281.779
#bidの合計は1100BTC
> sum(sub$bid)
[1] 1100.294

売り圧力が強いため、今後の価格は下落方向でしょう!!!(錯乱)