こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 仮想通貨のテクニカル分析に興味がある
- 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 = 60 | 1分間隔でデータ取得 |
granularity = 300 | 5分間隔でデータ取得 |
granularity = 900 | 15分間隔でデータ取得 |
granularity = 3600 | 1時間間隔でデータ取得 |
granularity = 21600 | 6時間間隔でデータ取得 |
granularity = 86400 | 1日間隔でデータ取得 |
【参考】仮想通貨のテクニカル分析・自動売買手法のご紹介
仮想通貨データを用いて実現可能な自動売買手法を多数ご紹介しています。その中でも実際にPythonでの自動取引ツールを作成する方法についても言及しています。
今回のデータ取得方法と合わせてご覧いただくことを推奨します。
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
【参考】テクニカル分析採用の自動取引におすすめの暗号資産(仮想通貨)取引所
取引所名 | 最低取引量 | 現物取引手数料*1 | 入金手数料[円] | 入金手数料[BTC] | 出金手数料[円] | 送金手数料[BTC] | 信用取引 | API提供 | ccxt | 自動売買おすすめ |
---|---|---|---|---|---|---|---|---|---|---|
Coincheck | 0.005 BTC | 無料 | 無料 | 無料 | 407円 | 0.0005 BTC | × | ○ | ○ | ★★★★★ |
GMOコイン | 0.0001BTC | Maker:-0.01% Taker:0.05% | 無料 | 無料 | 0円/ 400円(大口出金) | 無料 | ○ | ○ | × | ★★★★☆ |
bitbank | 0.0001BTC | Maker:-0.02% Taker:0.12% | 無料 | 無料 | 550円/ 770円(3万円以上) | 0.0006 BTC | × | ○ | ○ | ★★★★☆ |
BITPOINT | 0.0001 BTC | 無料 | 無料 | 無料 | 330 円 | 無料 | × | ○ | × | ★★★☆☆ |
- 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。
テクニカル分析を活用した自動取引を実践した場合、短期間での暗号資産の取引回数が増加する傾向にあります。さらに、自動取引の期間にデイトレードを採用した場合、なおさら増加すると言えます。
したがって、テクニカルトレードで取引利益を最大化したい場合は「取引手数料が安い取引所を選択する」ことを推奨します。
上記に示した暗号資産(仮想通貨)取引所は全てテクニカルトレードと相性が良いおすすめ取引所です。また、以下には仮想通貨の自動取引を実践する上で必須となるAPI利用方法についても言及しています。
APIの利用方法をマスターすると自動取引で実現できる幅も広がります。是非合わせてご参考下さい。
【仮想通貨・ビットコイン】自動取引実践法・その他優良情報
最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。
取引所別:APIの取得手順と使い方の解説記事
対応言語 | 記事名 |
---|---|
Python | 【GMOコイン】 APIで仮想通貨取引の自動化 |
Python | 【BitTrade】 APIで仮想通貨取引の自動化 |
Python | 【bitbank】 APIで仮想通貨取引の自動化 |
Python | 【Coincheck】APIで仮想通貨取引の自動化 |
Python | 【bitFlyer】APIで仮想通貨取引を自動化 |
Python | 【BITPOINT】APIで仮想通貨取引の自動化 |
機械学習やテクニカル分析を採用した仮想通貨取引の解説記事
対応言語 | 記事名 | 指標 |
---|---|---|
共通 | 自動売買の種類・自作時のポイント | 全て |
Python | リアルタイムチャート分析基礎 | トレンド |
Python | 移動平均線 | トレンド |
Python | ゴールデンクロス・デッドクロス | トレンド |
Python | アービトラージ(裁定取引) | 時間・値幅 |
Python | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら