仮想通貨時価総額を掲載しているコインマーケットキャプが提供しているAPIを使ってみました。
https://coinmarketcap.com/api
アクセス回数などの制限はありますが、無料で使用できます。
ここではRStudioを使ってデータの取得からグラフ描画までやってみました。
きっかけは、最近ブロックチェーン技術の学習を進めていく上で、各プロジェクトで使われるコインの価値について比較したくなったことからです。仮想通貨全体に影響を受けてしまうような市場の動向をできるだけ排除して比較するためには、チャートを目で見ていてはわからないので、このようなAPIを使うことにしました。
データの取得
curl -H “X-CMC_PRO_API_KEY: ******** ” -H “Accept: application/json” -d “start=1&limit=200&convert=JPY” -G https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest >
date "+%Y%m%d-%H%M%S"
.json
API_KEYは登録すると取得できます。(定期的に取得。今回は10分間隔で実行した)
Rで解析するためにcsvに変換
cat *.json | jq -r ‘.data[] | [.symbol, .id, .name, .quote.JPY.price, .quote.JPY.volume_24h, .quote.JPY.market_cap, .quote.JPY.last_updated] | @csv’ > data.csv
RでBTCとETHのデータを抽出(lt-が化けるので表示上=にした)
> df = read.csv(“data.csv”, header=F, sep=”,”)
> colnames(df) = c(“a”,”b”,”c”,”d”,”e”,”f”,”g”)
> btc = df[df$a==”BTC”,][c(4,7)]
> eth = df[df$a==”ETH”,][c(4,7)]
> plot(as.POSIXct(btc$g, format = “%Y-%m-%dT%H:%M:%S”), btc$d, type=”l”, col=rgb(0,0,1))
> par(new=T)
> plot(as.POSIXct(eth$g, format = “%Y-%m-%dT%H:%M:%S”), eth$d, type=”l”, col=rgb(1,0,0))
プロット結果(4時間ほどのデータ。縦軸の値はあえてそろえず)
データ数は少ないですが、だいたいうまく取得できているようです。
個人的に興味深いデータであることと、動きが適度にあることからデータサンプルとしてもってこいの素材かもしれません。