仮想通貨の価格を取得
Pythonで仮想通貨の価格を取得したい人向けの記事になります。自作したコードを公開しますので、GoogleColabにコピペしてそのまま実行できます。
コード
コード全体になります。コードのみで良い方はGoogleColabにコピペして実行することで、仮想通貨の価格を取得し、ファイルに出力できます。パラメータのみを変更して、複数の値を取得することも可能です。
# bitmexのAPIを利用するため、ライブラリをインストール
!pip install ccxt
# coding:utf-8
import ccxt
import pandas as pd
from datetime import datetime, timedelta
import pytz
# ファイルの保存先を指定
file_path = './vc_data.csv'
# 欲しいデータの数
data_volume = 1000
# 取得データの種類と期間、数を指定
vckind = 'BTC/USD'
vcduration = '1d' #'1h','5m','1m'
def get_virtual_currency(file_path,data_volume,vckind,vcduration):
bitmex = ccxt.bitmex()
# bitmexの現在の時間を取得
now_time = bitmex.fetch_ticker(vckind)['timestamp']
# 取得データ数を計算
from_time_difference = 0
if(vcduration == '1d'):
from_time_difference = 24 * 3600 * data_volume
elif(vcduration == '1h'):
from_time_difference = 3600 * data_volume
elif(vcduration == '5m'):
from_time_difference = 60 * 5 * data_volume
elif(vcduration == '1m'):
from_time_difference = 60 * 1 * data_volume
# 取得したいデータ時刻を指定。ミリ秒のため1000倍。
from_time = now_time - from_time_difference * 1000
# データを取得
candles = bitmex.fetch_ohlcv(vckind, timeframe = vcduration, limit=1000,since = from_time)
# データにカラム名を付けて整形(unixtime,open,high,low,close,volume)
res = pd.DataFrame(None)
r = pd.DataFrame(candles)
res['time'] = r[0].apply(lambda d:datetime.fromtimestamp(int(d/1000)))
res['time'] = res['time'].apply(lambda d:pytz.utc.localize(d).astimezone(pytz.timezone("Asia/Tokyo")))
res['time'] = res['time'].apply(lambda d:d.strftime('%Y/%m/%d %H:%M:%S'))
res['open'],res['high'],res['low'],res['close'],res['volume'] = r[1],r[2],r[3],r[4],r[5]
# 整形データをcsvで保存(index情報は不要であるめ除外)
res.to_csv(file_path,index=0)
res = pd.DataFrame(None)
r = pd.DataFrame(None)
# main
# 仮想通過のデータを取得してfile_pathに保存
get_virtual_currency(file_path,data_volume,vckind,vcduration)
# 保存データを読み込みプリント
data = pd.read_csv(file_path)
print(data)
コードの使用方法
9行目から15行目で、取得データのパラメータを指定しています。
このパラメータを変更することで、各種仮想通貨の価格を現在値まで得ることができます。
- file_path: 取得データのcsvの保存先(Google Driveのパスも可能)
- data_volume: 取得するデータの行数
- vckind: 取得するデータの種類
- vcduration: 取得するデータの間隔
このパラメータを引数に55行目で実行するこで 、仮想通貨のデータを取得して、ファイルが出力できます。
get_virtual_currency(file_path,data_volume,vckind,vcduration)
取得可能なデータを全て取得
自動取引でAIを構築するにあたり、データの種類が多い方が良いと思います。自動で取得可能なデータを取得しちゃいましょう。但し、高い頻度でリクエストをするとDDOS攻撃とみなされてエラーとなります。そのため、定期的な間隔でリクエストするようにしています。
import time
# パラメータをまとめて設定
data_volume = 1000
vckind = ['BTC/USD', 'ETH/USD' ,'XRP/USD']
vcduration = ['1d','1h','5m','1m']
# 各パラメータに基くデータ取得
for kind in vckind:
for duration in vcduration:
file_path = './vc_data'+'_'+kind.replace('/','_')+'_'+duration.replace('/','_')+'.csv'
get_virtual_currency(file_path,data_volume,kind,duration)
# 保存データの読み込み
data = pd.read_csv(file_path)
print(file_path)
print(data)
# DDOS攻撃とみなされないようスリープ
time.sleep(1)
time.sleep(10)
終わりに
これで仮想通過のデータを取得することができます。このデータを元にテクニカル分析や機械学習を進めていきたいと思います。