2017/12/21

2020/05/04

R言語でビットフライヤーのAPIからBTCの情報を取得

R言語入門

ライター:

最近、ビットコイン(BTC)が200万円を突破し、仮想通貨が大変話題になっています。そこで、きっと需要があると思ったので、 R言語を用いてビットコインの価格情報を取得する方法をご紹介することにしました。

当記事で使うのは、ビットフライヤーのAPIを用いた方法です。ビットフライヤーAPIの詳細はこちら→API Documentation

ちなみに、APIというのは、アプリケーションプログラムインターフェース(Application Program Interface)の略で、利用者はそこで提供されている機能を簡単に利用できます。ビットフライヤーはBTCの取引や情報取得の機能を提供してくれているので、今回はそれを使わせていただいて、R言語で情報取得の方法を紹介する、という次第でございます。

R言語について、さらに学びたい方はR言語入門をご覧ください。

最終取引価格を取得するプログラム

最終取引価格を取得するプログラムは次のようになります。

プログラム

library(jsonlite)
lastPrice = fromJSON(“https://api.bitflyer.jp/v1/ticker?product_code=BTC_JPY”)$ltp

2行ですが簡単にプログラムの説明をすると、1行目ではjsonを処理するライブラリとして、「jsonlite」を読み込んでいます。これは、ビットフライヤーのAPIの戻り値がjson形式だからです。

そして、2行目で、lastPriceという変数に「BTC_JPY」の取引における最終価格(ltp)を代入しています。prodect_codeの部分を別のものに書き換えることによって、他の仮想通貨の情報も取得することが可能です。また、「$ltp」の部分を別のものに変えることで、色々な値が取得できます。詳しくはAPI Documentationをご覧ください。

板情報を取得するプログラム

以下のプログラムで板情報を取得できます。

プログラム

board <- fromJSON(“https://api.bitflyer.jp/v1/board?product_code=FX_BTC_JPY”)

これだとあまりにも多くの板の情報が取得されるので、ask,bid共に上位30までにしてみました。

プログラム

board <- fromJSON(“https://api.bitflyer.jp/v1/board?product_code=FX_BTC_JPY”)
asks = board$asks[c(1:30),]
bids = board$bids[c(1:30),]
rownames(asks) = paste(“ask”,rownames(asks),sep=””)
rownames(bids) = paste(“bid”,rownames(bids),sep=””)
boardBind = rbind(asks,bids)

R言語だと、そのままデータフレーム型に直してくれるので非常に便利です。これをcsvファイルなどに書き出して、傾向を分析してみたりするのも面白いかもしれません。

ビットフライヤーのAPIの機能

今回は、情報取得にとどめましたが、APIを使えば実際にトレードすることもできます。APIの他の機能をざっと紹介すると、

  • 入出金
    • 預入用アドレス取得
    • 仮想通貨預入履歴
    • 仮想通貨送付履歴
    • 銀行口座一覧取得
    • 入金履歴
    • 出金
    • 出金履歴
  • トレード
    • 新規注文を出す
    • 注文をキャンセルする
    • 新規の親注文を出す(特殊注文)
    • 親注文をキャンセルする
    • すべての注文をキャンセルする
    • 注文の一覧を取得
    • 親注文の一覧を取得
    • 親注文の詳細を取得
    • 約定の一覧を取得
    • 建玉の一覧を取得
    • 証拠金の変動履歴を取得
    • 取引手数料を取得

とういうような感じでほぼなんでも出来てしまいそうです。アルゴリズムでの自動売買に興味のある方は是非挑戦してみてください!

R言語について、さらに学びたい方はR言語入門をご覧ください。

(totalcount 2,432 回, dailycount 4回 , overallcount 16,613,735 回)

ライター:

R言語入門

single-banner

COMMENT

コメントを残す

メールアドレスが公開されることはありません。
*は必須項目です。




CAPTCHA