bitFlyer LightningのAPIをRから使う
"何でもRでやるおじさん日本代表(タヒチ在住)"として、いい加減書いておかねばならないと思った。
まずは、APIキーを頑張って以下から取得してください。
そして、その情報とbitFlyerのURLをなんでもいいんだけど適当な変数に入れておく。
BITFLYER_KEY <- "<your key>" BITFLYER_SECRET <- "<your secret>" BITFLYER_URL <- "https://api.bitflyer.jp"
で、早速データを取得する。
まず、PublicのAPIの場合だが、この場合、APIキーの情報はいらない。
例えばBitcoinの板情報はこんな感じで取得+Rっぽく処理しておくといいだろう。
必要になるhttr, dplyr, purrrパッケージは適当にインストールしておいてください。
> content <- httr::content(httr::GET(paste0(BITFLYER_URL, "/v1/board"))) > dfl <- purrr::map(content[-1], ~ dplyr::bind_rows(.x)) > dfl $bids # A tibble: 3,387 x 2 price size <dbl> <dbl> 1 1974375 0.0060 2 1974370 1.0013 3 1974020 0.3000 4 1974000 0.1090 5 1973982 0.0010 6 1973981 0.0010 7 1973825 1.5000 8 1973557 0.0020 9 1973100 0.0100 10 1973010 0.2000 # ... with 3,377 more rows $asks # A tibble: 1,686 x 2 price size <dbl> <dbl> 1 1975486 0.0090000 2 1975490 0.2390648 3 1975491 1.4850191 4 1976989 0.0010000 5 1977000 1.0549186 6 1977003 0.3000000 7 1977781 2.0000000 8 1978000 0.1999200 9 1978100 0.6500000 10 1978117 1.1134800 # ... with 1,676 more rows
ちょっと面倒なのはPrivate APIで、これは公式ドキュメントに以下のようにせにゃならんと書いてある。
公式サンプルがNode.jsだったので、これをRで書き直した。
以下の例だと自分の口座情報が取得できます。
digestパッケージはまた別途入れておいてください。
# APIのパス path <- "/v1/me/getbalance" # unix time stamp timestamp <- as.numeric(Sys.time()) # 作れと言われてるSign sign <- digest::hmac(paste0(timestamp, "GET", path), key=BITFLYER_SECRET, algo="sha256", serialize=FALSE) # ヘッダーに突っ込んでおくる header <- httr::add_headers( `ACCESS-KEY`=BITFLYER_KEY, `ACCESS-TIMESTAMP`=timestamp, `ACCESS-SIGN`=sign, `Content-Type`="application/json" ) httr::content(httr::GET(paste0(BITFLYER_URL, path), header))
次は発注すっか。