FXの過去データ(ヒストリカルデータ)をDukascopyから無料でダウンロードする方法を解説します。
Dukascopyについて
Dukascopyはパソコンやモバイル上で外国通貨取引や、貴金属取引、バイナリー、ネットバンキングなどのサービスを提供しているスイスのオンライン銀行です。FX、コモディティ、CFDの過去データを無料で提供しています。webからのダウンロードにはアカウントの作成が必要ですが、後述するBirt’s PHP Scriptを使用する場合にはアカウントは不要です。
- 通貨ペア: 約60種類 (他にコモディティ、指数、世界各国の株式市場の主要銘柄、仮想通貨等も提供)
- 時間足: Tick・秒・分・時・日・週・月
- 期間: 2007年頃~
- 更新頻度: 約1時間ごとに更新
- タイムゾーン: GMT (変更可)
Birt’s PHP Scriptで一括ダウンロードする
大量のファイルを1つずつ手動でダウンロードしていくのは大変です。PHPを使える環境では、Birt’s PHP Scriptを使うことで、Tickデータを一括ダウンロードし、csv形式に変換することができます。
Birt’s PHP Scriptは現在はメンテナンスされていませんが、2021年6月現在も一部を修正することで動作します。
Git を使える環境では以下のようにしてファイル一式を入手できます。
git clone https://github.com/FX31337/Birt-Dukascopy.git
また、Gitを使えない環境では、”Code” をクリックして、”Download Zip” を選択することで、ファイル一式をダウンロードできます。
ファイル名 | 説明 |
COPYING | ライセンスファイル |
download_dukascopy_data.php | ファイルをダウンロードするプログラム |
process_dukascopy_data.php | ダウンロードされたバイナリファイルをcsvに変換するプログラム |
process.bat | process_dukascopy_data.php を実行するためのバッチファイル (Windows用) |
process.sh | process_dukascopy_data.php を実行するためのシェルスクリプト (PC Unix用) |
process_dukascopy_data.php を実行するには、Unix系環境では xz または lzma、Windowsでは 7-zipが必要になるのであらかじめインストールしておく必要があります。
Redhat系OS(Fedora, CentOS等)では yum install xz
、Debian系OS (Ubuntu等)では apt install lzma
でインストールできます。
次に、download_dukascopy_data.php を編集します。以下の部分で、ダウンロードする通貨ペアを設定します。//
から始まる行はコメントで、無視されます。
// 変更前
$download = array("EURUSD", "USDJPY", "USDCHF", "USDCAD", "GBPUSD", "GBPJPY", "NZDUSD",
// "AUDNZD", "AUDUSD", "AUDJPY", "EURCHF", "EURGBP", "EURJPY", "GBPCHF",
);
例えば、EURUSD, USDJPY, EURJPY のみ必要な場合は以下のように変更します。
// 変更後
$download = array("EURUSD", "USDJPY", "EURJPY");
また、Ducascopyのサーバー名を変更する必要があります。
// 変更前
$url = "http://www.dukascopy.com/datafeed/$symbol/$year/$month/$day/{$hour}h_ticks.bi5";
// 変更後
$url = "http://datafeed.dukascopy.com/datafeed/$symbol/$year/$month/$day/{$hour}h_ticks.bi5";
これで、データをダウンロードできます!ダウンロードには相当な時間がかかります。
$ php download_dukascopy_data.php
Info: Downloading EURUSD starting with 03/30/07 16:00:00
(以下略)
ダウンロードしたデータは、lzma で圧縮されたバイナリファイル(拡張子 bi5)で、<通貨名>/<年(4桁)>/<月(2桁)>/<日(2桁)>/<時(2桁)>_h_ticks.bi5
という名前になります (例: EURUSD/2008/00/01/19h_ticks.bi5
)。注意点として、月は0から始まります。つまり1月が00、2月が01のようになります。
process_dukascopy_data.php
を使うことで csv ファイルに変換できます。次に例では、2008年1月から2009年12月のデータをcsvファイルに変換します。
php process_dukascopy_data.php EURUSD 200801 201001 EURUSD.csv
process_dukascopy_data.php
が出力する csv ファイルの内容は次のようになっています。
2011.01.02 22:00:26.739,1.33436,1.33466,1.50,1.50 2011.01.02 22:00:27.825,1.33424,1.3348,2.70,1.50 2011.01.02 22:00:37.751,1.33432,1.33474,1.50,1.50 2011.01.02 22:01:36.260,1.33448,1.3346,1.13,1.13 2011.01.02 22:01:36.369,1.33453,1.33469,1.13,1.13
それぞれの列の意味は次のようになります。
日時(ミリ秒単位),BID,ASK,BID Volume,ASK Volume
コメント