【Python】仮想通貨・ビットコイン価格の過去データ取得方法2選|ヒストリカルデータ分析に基づく自動売買実現に向けて

こんにちは、Kosei(@kay_diacc2)です!

こんな方におすすめ!
  • 仮想通貨のテクニカル分析に興味がある
  • Pythonで様々な仮想通貨の価格データについて、過去を遡り大量取得する方法が知りたい
目次

【Python】仮想通貨のヒストリカル価格データを取得方法

本記事ではPythonを用いてビットコインを代表とする様々な仮想通貨の過去の価格データを大量取得する方法について解説します。

Pythonを用いた方法を解説する上で、今回下記2つの方法について言及します。

  • Yahoo Financeのパッケージを用いたデータ取得方法
  • Historic-Cryptoのパッケージを用いたデータ取得方法

Yahoo Finance×Python|仮想通貨の価格データ取得方法

Yahoo FinanceのPythonライブラリを用いて仮想通貨の価格データを取得する方法を後述します。

Pythonパッケージのインストール

事前にyfinanceというライブラリをインストールしておきましょう。

pip install yfinance

仮想通貨・ビットコイン過去データの取得

Yahoo Financeのライブラリを用いて仮想通貨の価格データを取得する場合、次のように記述します。

引数に仮想通貨の銘柄データ取得期間を指定しましょう。

import yfinance

# 引数情報
symbol = "BTC-JPY"  # 仮想通貨の銘柄を指定
period = "max"      # データ取得範囲を指定

# データ取得
Ticker = yfinance.Ticker(symbol)
data   = Ticker.history(period=period)
# 出力
print(data)

# データ出力イメージ
# Date          Open(始値)     High(高値)      Low(低値)    Close(終値)                                                               
# 2014-09-17  4.991267e+04  5.019294e+04  4.899278e+04  4.963904e+04   
# 2014-09-18  4.958758e+04  4.956474e+04  4.492919e+04  4.617907e+04   
# 2014-09-19  4.614241e+04  4.671102e+04  4.182939e+04  4.303671e+04   
# 2014-09-20  4.302330e+04  4.614350e+04  4.250114e+04  4.457462e+04   
# 2014-09-21  4.448534e+04  4.495856e+04  4.286066e+04  4.345155e+04   
# ...                  ...           ...           ...           ...   
# 2022-04-08  5.398933e+06  5.459044e+06  5.244437e+06  5.257414e+06   
# 2022-04-09  5.256719e+06  5.319470e+06  5.244432e+06  5.318888e+06   
# 2022-04-10  5.318758e+06  5.381188e+06  5.225232e+06  5.250627e+06   
# 2022-04-11  5.249802e+06  5.290610e+06  4.938846e+06  4.959208e+06   
# 2022-04-13  5.028289e+06  5.041876e+06  4.988700e+06  5.000112e+06   

仮想通貨の通貨レートの指定

上記例ではビットコイン[円/BTC]の価格データを取得しましたが、引数のsymbolを修正いただくことで他の仮想通貨の銘柄データも取得できるようになります。

データの取得期間

データの取得範囲は引数periodを修正いただくことで、柔軟に変更できます。

以下データ取得範囲の記述例をいくつかご紹介します。

period = “1d”直近1日のデータ取得
period = “1mo”直近1ヶ月のデータ取得
period = “5mo”直近5ヶ月のデータ取得
period = “2y”直近2年のデータ取得
period = “max”取得可能は過去データ範囲を全て取得

Historic Crypto×Python|仮想通貨の価格データ取得方法

Historic CryptoというPythonライブラリを用いて仮想通貨の価格データを取得する方法について解説します。

Pythonパッケージのインストール

下記を実行し、必要なライブラリを事前にインストールしておきましょう。

pip install Historic-Crypto

過去データが取得可能な仮想通貨の銘柄を確認

Historic Crytoでデータ取得可能な仮想通貨の銘柄(id)は下記を実行することで確認できます。

from Historic_Crypto import Cryptocurrencies

# 過去データが取得可能な通貨レートを確認
crypto_data = Cryptocurrencies().find_crypto_pairs()
# 出力
print(crypto_data)

#            id display_name  fx_stablecoin max_slippage_percentage    status
# 0     BTC-GBP      BTC/GBP          False              0.03000000    online
# 1     OGN-USD      OGN/USD          False              0.03000000    online
# 2     VGX-USD      VGX/USD          False              0.03000000    online
# 3    KEEP-USD     KEEP/USD          False              0.03000000    online
# 4     GRT-EUR      GRT/EUR          False              0.03000000    online
# ..        ...          ...            ...                     ...       ...
# 462   XRP-USD      XRP/USD          False              0.10000000  delisted
# 463   XRP-BTC      XRP/BTC          False              0.10000000  delisted
# 464   XRP-EUR      XRP/EUR          False              0.10000000  delisted
# 465   XRP-GBP      XRP/GBP          False              0.10000000  delisted
# 466  GNT-USDC     GNT/USDC          False              0.03000000  delisted

仮想通貨・ビットコイン過去データの取得

Histoc Cryptoのライブラリを用いて仮想通貨の価格データを取得する場合、次のように記述します。

残念ながらHistoric Cryptoの仮想通貨の対応銘柄には、BTC-JPY[円/BTC]が含まれていないため、今回は代わりにBTC-USDを指定することとします。

Historic Cryptoの最大のメリットはデータ取得範囲と取得間隔を柔軟に調整できる点にあります。

from Historic_Crypto import HistoricalData

# 引数情報
symbol      = 'BTC-USD'          # 通貨レート
granularity = 86400              # 何秒置きにデータを取得するか(60, 300, 900, 3600, 21600, 86400) が指定可能
start_date  = '2022-01-01-00-00' # データ取得範囲:開始日
end_date    = '2022-04-01-00-00' # データ取得範囲:終了日

# データ取得
data = HistoricalData(symbol,granularity,start_date,end_date).retrieve_data()
# 出力
print(data)

# 出力イメージ
# time             low      high      open     close        volume                                                          
# 2022-01-01  46205.00  47967.12  46211.24  47733.43   9463.661711
# 2022-01-02  46633.36  47990.00  47733.43  47299.07   6833.498455
# 2022-01-03  45700.00  47583.33  47299.06  46459.56  10841.810205
# 2022-01-04  45515.00  47532.89  46459.57  45814.61  16320.327129
# 2022-01-05  42500.00  47076.55  45817.13  43436.04  25067.674768
# ...              ...       ...       ...       ...           ...
# 2022-03-28  46662.28  48240.00  46850.01  47144.92  18787.663187
# 2022-03-29  46589.00  48124.94  47146.92  47454.19  15776.651086
# 2022-03-30  46544.89  47717.01  47448.41  47078.03  12672.445847
# 2022-03-31  45211.00  47624.09  47078.02  45528.45  17454.791443
# 2022-04-01  44232.86  46739.24  45525.25  46296.34  18111.135980

引数情報

データ取得範囲は、start_dateおよびend_dateを修正することで調節できます。

データ取得間隔はgranularityを用いて調整します。以下指定可能な取得間隔の記述例を示します。

granularity = 601分間隔でデータ取得
granularity = 3005分間隔でデータ取得
granularity = 90015分間隔でデータ取得
granularity = 36001時間間隔でデータ取得
granularity = 216006時間間隔でデータ取得
granularity = 864001日間隔でデータ取得

【参考】仮想通貨のテクニカル分析・自動売買手法のご紹介

仮想通貨データを用いて実現可能な自動売買手法を多数ご紹介しています。その中でも実際にPythonでの自動取引ツールを作成する方法についても言及しています。

今回のデータ取得方法と合わせてご覧いただくことを推奨します。

【参考】テクニカル分析採用の自動取引におすすめの暗号資産(仮想通貨)取引所

スクロールできます
取引所名最低取引量現物取引手数料*1入金手数料[円]入金手数料[BTC]出金手数料[円]送金手数料[BTC]信用取引API提供ccxt自動売買おすすめ
0.0001BTCMaker:-0.01%
Taker:0.05%
無料無料0円/
400円(大口出金)
無料×★★★★★
0.0001BTCMaker:-0.02%
Taker:0.12%
無料無料550円/
770円(3万円以上)
0.0006 BTC×★★★★☆
bitFlyer*20.001 BTC0.01〜0.15%0〜330 円無料220〜770 円0.0004 BTC★★★★☆
0.0001 BTC無料無料無料330 円無料××★★★★☆
0.0001 BTC無料無料無料330 円0.0005 BTC★★★★★
0.005 BTC無料無料無料407円0.0005 BTC×★★★★★
表:暗号資産取引所の比較表(最低取引量の単位はBTCで記載)
補足
  1. 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。
  2. bitFlyerの取引手数料はLightningBTC現物の手数料を表示
  3. 期間限定で4/22〜6/30に口座開設&72時間以内入金を行うと、対象者全員に2,500円相当のビットコインプレゼントとのこと!

テクニカル分析を活用した自動取引を実践した場合、短期間での暗号資産の取引回数が増加する傾向にあります。さらに、自動取引の期間にデイトレードを採用した場合、なおさら増加すると言えます。

したがって、テクニカルトレードで取引利益を最大化したい場合は「取引手数料が安い取引所を選択する」ことを推奨します。

上記に示した暗号資産(仮想通貨)取引所は全てテクニカルトレードと相性が良いおすすめ取引所です。また、以下には仮想通貨の自動取引を実践する上で必須となるAPI利用方法についても言及しています。

APIの利用方法をマスターすると自動取引で実現できる幅も広がります。是非合わせてご参考下さい。

スクロールできます
API利用手順確認API利用手順確認API利用手順確認API利用手順確認API利用手順確認

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【Huobi Japan】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

テクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる