FXの過去データ(ヒストリカルデータ)をHistData.comから無料でダウンロードする方法を解説します。
HistData.comについて
HistData.comはFXヒストリカルデータを提供するサイトです。登録不要で無料です。有料オプションでFTP/SFTPでダウンロードするサービスもあります。
HistData.com – Free Forex Historical Data
- 通貨ペア: 約60種類 (原油先物、主要な株価指数を含む)
- 時間足: 1分・Tick
- 期間: 2000年~ (通貨ペアにより異なる)
- 更新頻度: 月3回程度
- データのタイムゾーン: 東部標準時 (EST)で夏時間の調整は行われていません。つまり、ニューヨークのローカルタイムそのままの値で、冬季はUTC-5、夏季はUTC-4となります。
Pythonを使った一括ダウンロード
HistData.comの無料サービスではwebからデータをダウンロードすることになりますが、ファイルを1つずつ手動でダウンロードしていくのは大変です。一般的な一括ダウンロードツールではうまくダウンロードできません。そこで、Pythonのhistdataというモジュールを使うことで、簡単に多数のファイルを自動ダウンロードすることができます。
histdataはpipでインストールできます。
pip install histdata
Pythonでは次のコードで簡単にダウンロードできます。
from histdata import download_hist_data as dl
from histdata.api import Platform as P, TimeFrame as TF
dl(year='2020', month='1', pair='usdjpy', platform=P.GENERIC_ASCII, time_frame=TF.TICK_DATA)
上記の例では、2020年1月のUSD/JPYのTICKデータをCSV形式でダウンロードします。year
で年、month
で月、pair
で通貨ペアを指定します。
platform
でダウンロードするデータの形式を指定します。
platform=P.GENERIC_ASCII
GENERIC ASCII (CSV) (1分足・TICK)platform=P.EXCEL
Excel (1分足)platform=P.META_TRADER
MetaTrader 4 / MetaTrader 5 (1分足)platform=P.NINJA_TRADER
NinJaTrader (1分足・1秒足)platform=P.META_STOCK
MetaStock (1分足)
time_frame
で時間足を指定します。
time_frame=TF.ONE_MINUTE
1分足time_frame=TF.TICK_DATA TICK
(platform=P.GENERIC_ASCII
としたときのみ有効)time_frame=TF.TICK_DATA_BID
1秒足 (BID) (platform=P.NINJA_TRADER
としたときのみ有効)time_frame=TF.TICK_DATA_ASK
1秒足 (ASK) (platform=P.NINJA_TRADER
としたときのみ有効)time_frame=TF.TICK_DATA_LAST
1秒足 (LAST) (platform=P.NINJA_TRADER
としたときのみ有効)
ダウンロードしたデータはZIP形式で圧縮されています。この中に、CSV形式のデータファイルと、データギャップが記されたテキストファイルが含まれています。
GENERIC ASCII (CSV)形式で1分足データをダウンロードした場合、ファイル内容は次のようになります。
20210103 174100;0.979650;0.979700;0.979590;0.979600;0 20210103 174200;0.979680;0.979690;0.979590;0.979600;0 20210103 174300;0.979610;0.979720;0.979610;0.979660;0 20210103 174400;0.979660;0.979660;0.979580;0.979590;0 20210103 174500;0.979590;0.979680;0.979580;0.979680;0
それぞれの列の意味は次のようになります。
日時;始値(BID);高値(BID);安値(BID);終値(BID);出来高(通常は0)
GENERIC ASCII (CSV)形式でTICKデータをダウンロードした場合、ファイル内容は次のようになります。
20200202 170001871,108.416000,108.487000,0 20200202 170001972,108.405000,108.487000,0 20200202 170002107,108.406000,108.486000,0 20200202 170002158,108.406000,108.495000,0 20200202 170002283,108.389000,108.494000,0
それぞれの列の意味は次のようになります。
日時(ミリ秒単位),BID,ASK,出来高(通常は0)
コメント