ビットコインやらイーサリアムなど仮想通貨の過去レートをスクレイピングする方法

2018年6月27日

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

こんばんは、新米データサイエンティスト(@algon_fx)です。今日も仕事の合間をぬってジムに走りに行ってきました。やっぱ適度の運動は本当に必要だと思う今日この頃です。

最近、継続して続いていた特徴量としてのテクニカル指標シリーズですが、毎日テクニカル指標と戯れるのも飽きてしまうので、今日は少し別なことをやりました。

タイトルに出てますが、今日は仮想通貨の過去レートをスクレイピングしてデータフレームまたはCSVファイルへ吐き出す方法をまとめたいと思います。

参考までにですが、個人的には仮想通貨には興味はありません。ただし、チェーンブロックには大いなる将来性を感じています。本と論文をいくつか読んで勉強しました。現在の電気消費量とProof of Workの方法が改善されれば、色々なことが劇的に変わるのではと予測しています。

と、前置きが長くなりました!では、早速、仮想通貨の過去レートをPythonを使ってスクレイピングしてみましょう。

【人気記事】

私の機械学習の開発環境&トレード環境を解説

スクレイピングの方法と概要

仮想通貨の過去レートですが、色々な方法で取得が可能です。日本のbitFlyerでもAPIを提供しているらしく、そちらで取引なども可能な模様。

ただ、仮想通貨取引には興味が現状はないが、練習用の過去レートとしてデータは欲しい。APIなど口座開設やら登録が面倒なので、可能であれば、さっくりスクレイピングできるともっと嬉しい。

本記事で使うバージョンとライブラリ

  • Python 3.6
  • Pandas

スクレイピングする仮想通貨の種類

  • ビットコイン
  • イーサリアム
  • リップル
  • ライトコイン
  • ネム
  • テザー

スクレイピング可能な過去レートの項目

  • データは基本1日ごと(Tickや1時間などなし)
  • 始値、高値、底値、終値、取引量、時価総額

coinmarketcap.comとの出会い

上記が私が今回やりたい概要なんですが、それを念頭に調べてみると、coinmarketcap.comという素晴らしいサイトと出会いました。マジで神サイトです。

何とこちらのサイトですが、上記で私が記したメジャーな仮想通貨の過去価格に加えて、な、なんと!大小のアルトコインを含む1565通貨のデータを提供しています。

また仮想通貨取引所の情報も提供しており、その数何と10191件。もう仮想通貨の過去データといえば、このサイトで決定ですね。

ただ不便な点も。まず各仮想通貨の提供データが1日のみ。これは少し残念。せめて1時間毎のデータが揃っていれば嬉しい。2つ目はサイトが少し重い。おそらくこれは、様々なサイトがスクレイピング/クローリングしているのも影響しているのかと。

ちなみにAPIも提供しているらしい。インストールが面倒なので今回はスルーしますが、また機会があれば、このAPIも使って見たいと思う。

提供している仮想通貨のデータ種類が多いのが特徴!時価総額やら取引ボリュームなどが含まれているのは嬉しい。

では、実際にビットコインからやって見ましょう。

必要なライブラリのインポート

先に書きましたが、Pythonのデータフレームライブラリ「Pandas」を使ってスクレイピングします。インストールされていない方は、インストールが必要です。これでスクレイピングからCSVへの出力もできる優れものです。

Matplotlibというグラフ描写をするライブラリも使っています。これはレートのグラフを描写するだけなので、データだけ必要な人は不要です。

ビッココインの過去レート取得

ではまずは仮想通貨の王様ビットコインから。Pandasの read_html を使って過去価格一覧ページの日程パラメーターを指定してからスクレイピングしています。日付と取引量(Volume)を少し処理。

参考までにですが、スクレイピング先の下記のURLの日程部分を変更してあげると、好きな期間のビットコイン価格データが取得できます。今回は2016年1月1にから今日までのレートをとりました。

/historical-data/?start=●●●●&end=●●●●

ちゃんとデータが取れていますね。coinmarketcapの嬉しいところが、FAQを読んだのですが、原則としてスクレイピングも容認しています。また、面倒な会員登録やAPIキーなどの取得もなくできるのが嬉しい。

では、せっかくビットコインのレートを取得したので、Matplotlibを使ってプロッティングして見ましょう。

こう見ると、本当にバブルみたいに値上がりしていた時期が恐ろしいですね。では、他のあるとコインの過去レートも取得して見ましょう。

アルトコインの過去レートの取得

基本的にはスクレイピング先のURLの通貨部分を変更するだけで大丈夫なようです。なんてスクレイピングフレンドリー何でしょうw

これで、それぞれのアルトコインの過去レートがPandasのデータフレムとしてローカルに取得されているはずです。超絶便利。

取得した過去レートをCSVへ

では、最後に取得したレートをCSVで吐き出してあげましょう。データがバラバラとすると面倒なのでdataというフォルダーを作成して、そちらに吐き出します。

念のためdataのフォルダーをのぞいて見ると…

うむ。ちゃんとCSVファイルができてますね。

まとめと次の課題

今日は仮想通貨の過去レートをPandasでスクレイピングしてCSVへ吐き出すまでをやりました。coinmarketcap様に感謝ですね。こんなさっくりデータが拝借できるなんて、本当にありがとうございます。

次への課題としては、やっぱりAPIの方も使って見たいですね。仮想通貨の機械学習予測モデルをやるつもりはないですし、取引もしたいと思っていませんが…何となくAPIと聞くと触りたくなってしまう。(サガ)

ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

2018年6月27日FX 機械学習

Posted by algon