【仮想通貨の自動売買を目指して】過去チャート取得
2021.09.23
2024.03.24
仮想通貨
CryptowatchPythonイーサリアムビットコイン
はじめに
仮想通貨の自動売買に向けて、まずはとにかくデータを集めます。
今回は過去のチャートを取得し、過去データでのシミュレーションや機械学習モデルの作成などで活用できるようにしたいと思います。
Cryptowatchとは
Cryptowatchとは、複数の仮想通貨取引所のチャートをまとめてみれるサービスになります。APIも提供されていて、無料でも制限がありますが利用可能です。
24時間ごとに10クレジットが付与され、APIごとに使用するクレジットが決まっています。例えば、今回利用するOHLCデータの取得では0.015クレジット消費します。
APIを叩くごとに、レスポンスに以下のような使用クレジットと残りクレジットがわかるようになっています。
1{
2 "allowance": {
3 "cost": 0.003,
4 "remaining": 9.572,
5 "account": "8b095566-51e7-475b-bdf3-4bdb11d56fc1"
6 }
7}
OHLCとは
OHLCとは、Open-High-Low-Closeの略であり、始値、高値、安値、終値を表します。
今回取得するデータは、この始値、高値、安値、終値になります。
OHLCを取得するAPI
Cryptowatchで使えるAPIはいくつかありますが、OHLCを取得するAPIのみ紹介します。
unknown linkエンドポイントの形式は以下になります。
1https://api.cryptowat.ch/markets/:exchange/:pair/ohlc
exchange
: 取引所pair
: 通貨のペア
パラメータは以下の3つを設定できます。
before
: この時間より前を取得(Unix時間)after
: この時間より後を取得(Unix時間)periods
: データの間隔
取得できるデータは、以下の順の値が指定したperiods
をキーとして(1分なら"60")返ってきます。
1[
2 CloseTime,
3 OpenPrice,
4 HighPrice,
5 LowPrice,
6 ClosePrice,
7 Volume,
8 QuoteVolume
9]
具体例
bitFlyerでのビットコイン/円の1時間足を2021/09/16 00:00:00から現在時刻まで
1https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=3600&after=1631718000
bitFlyerでのイーサリアム/円の1日足を2021/04/01 00:00:00から現在時刻まで
1https://api.cryptowat.ch/markets/bitflyer/ethjpy/ohlc?periods=86400&after=1617202800
Pythonでチャート取得とCSV保存
実際にPythonで以下の4つのデータを取得してCSVファイルとして保存してみます。
- bitFlyerでのビットコイン/円の1時間足を2021/09/16 00:00:00から現在時刻まで
- bitFlyerでのビットコイン/円の1日足を2021/04/01 00:00:00から現在時刻まで
- bitFlyerでのイーサリアム/円の1時間足を2021/09/16 00:00:00から現在時刻まで
- bitFlyerでのイーサリアム/円の1日足を2021/04/01 00:00:00から現在時刻まで
CSVファイルの作成はpandas
を利用しています。
1import requests
2import pandas as pd
3
4btc_url = "https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc"
5eth_url = "https://api.cryptowat.ch/markets/bitflyer/ethjpy/ohlc"
6
7hour = "?periods=3600&after=1631718000"
8day = "?periods=86400&after=1617202800"
9
10df_columns = [
11 "CloseTime",
12 "OpenPrice",
13 "HighPrice",
14 "LowPrice",
15 "ClosePrice",
16 "Volume",
17 "QuoteVolume"
18]
19
20
21# btc
22
23# hour
24res = requests.get(btc_url+hour).json()
25df = pd.DataFrame(res['result']['3600'], columns=df_columns)
26df.to_csv('./btnjpy_hour.csv')
27
28# day
29res = requests.get(btc_url+day).json()
30df = pd.DataFrame(res['result']['86400'], columns=df_columns)
31df.to_csv('./btnjpy_day.csv')
32
33
34# eth
35
36# hour
37res = requests.get(eth_url+hour).json()
38df = pd.DataFrame(res['result']['3600'], columns=df_columns)
39df.to_csv('./ethjpy_hour.csv')
40
41# day
42res = requests.get(eth_url+day).json()
43df = pd.DataFrame(res['result']['86400'], columns=df_columns)
44df.to_csv('./ethjpy_day.csv')
参考
Share
関連記事
【仮想通貨の自動売買を目指して】PythonでbitFlyer API
2021.09.28
【仮想通貨の自動売買を目指して】機械学習のための目的関数を計算する
2022.09.01
【仮想通貨の自動売買を目指して】PythonでGMOコイン API
2023.06.04