pythonで暗号資産(仮想通貨)の過去のレートを無料で取得する方法

暗号資産の過去レートを取得してバックテストをしたいなど、過去レートの取得方法に困った方もいると思います。

今回は、CoinCheckが提供してくれている過去のレートを検索できる仕組みを使って、Seleniumで自動実行で暗号資産(仮想通貨)の過去レートを取得する方法を説明します。

やっつけで作った部分もありますが、参考にしていただければと思います。

 

利用するサイト

数データだけ欲しいのであれば、以下のサイトから手動で取ってくる方法でも大丈夫です。

対象の通貨と日時を入力するだけでその時点でのレートを表示してくれます。

※5分足の終値が表示されるので、それだけ注意が必要です。

過去のレート検索

 

今回やりたいこと

今回実施したいのは過去レートを上記のサイトから取得したいということです。

自動でCoinCheckのサイトから取得できれば、ちょっと改良して過去nヶ月分のレートをcsvとして保存して処理したり、自前で作ったDBに登録しておくなども簡単にできるかと思います。

 

 

事前準備

今回は、Selenium(ブラウザを自動で操作することができるライブラリ)を使って、CoinCheckのサイトから過去分のレートを取得してきたいと思います。

 

インストール

インストールは以下のコマンドでできます。

pip install selenium

 

Webドライバーの導入

SeleniumではPythonでブラウザを操作する形になります。今回も暗号資産(仮想通貨)の過去レートを取得するために、CoinCheckのサイトをPythonから操作して、検索結果を取得します。

ブラウザを操作するためには、ドライバーの導入が必要です。
今回は、Chromeを例にします。以下の公式サイトからお使いのChromeのバージョンに対応したドライバーのzipファイルをダウンロードして解凍しておいてください。

>> Chrome Webdriver

 

Pythonコードサンプル

実際のPythonのコードサンプルはこちらです。

import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.support.select import Select


target_datatime = datetime(2021, 12, 21, 0, 0, 0, 0)

driver = webdriver.Chrome(executable_path="chromedriver")

# CoinCheckのサイトにアクセスする
driver.get("https://coincheck.com/ja/exchange/rates")

# ETH/JPYを選択
dropdown = driver.find_element_by_css_selector("select")
select = Select(dropdown)
select.select_by_value('1')

target_date = datetime.strftime(target_datatime, '%Y/%m/%d')

# 「対象の日付」をWEBに入力
inputs = driver.find_elements_by_css_selector("input")
inputs[0].send_keys("00" + target_date)

# 「対象の時間」をWEBに入力
target_datatime = datetime.strftime(target_datatime, '%H:%M')
inputs[1].send_keys(target_datatime)

# 「検索」をクリック
button = driver.find_elements_by_tag_name("button")
button[0].click()

time.sleep(3)

# 出力結果を取得
e = driver.find_elements_by_tag_name("span")
print(float(e[44].text.replace(",", "")))

(結果の取得やペアーの選択方法など、)やっつけな部分はありますが、とりあえずレートの取得までできます。日付でループすれば過去のレートの一覧も簡単に取得できます。

簡単に解説していきます。

1 .ブラウザを操作するドライバーを作成します。今回はChromeですが、FIreFoxなどでも同様です。(webdriver.firefoxなどになります。)引数の、executable_pathには、手順でダウンロードして解凍したドライバーのパスを記入します。

driver = webdriver.Chrome(executable_path="chromedriver")

2.CoinCheckのサイトにアクセスします。ブラウザがドライバーによって勝手に開かれます。

driver.get("https://coincheck.com/ja/exchange/rates")

3.入力フォームに各値を入力します。ペアーの部分はドロップダウンになっているので、欲しいペアーの番号を指定します。日時の部分は”00″をつけないとうまく入力できなかったので、固定で”00″をつけています。最後に検索をクリックしています。

# ETH/JPYを選択
dropdown = driver.find_element_by_css_selector("select")
select = Select(dropdown)
select.select_by_value('1')

target_date = datetime.strftime(target_datatime, '%Y/%m/%d')

# 「対象の日付」をWEBに入力
inputs = driver.find_elements_by_css_selector("input")
inputs[0].send_keys("00" + target_date)

# 「対象の時間」をWEBに入力
target_datatime = datetime.strftime(target_datatime, '%H:%M')
inputs[1].send_keys(target_datatime)

# 「検索」をクリック
button = driver.find_elements_by_tag_name("button")
button[0].click()ち

ちなみに、レートのペアーと数字のマッピングは以下の通りです。

4.最後に検索結果を取得しています。やり方はいけてないですが、とりあえず取得はできる状態です。区切り文字が入っているので、システム的に使えるように区切り文字の削除と型の変換をしています。

# 出力結果を取得
e = driver.find_elements_by_tag_name("span") 
print(float(e[44].text.replace(",", "")))

以上

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA