FXの過去データをダウンロードする② (Dukascopy)

テクニカル分析

FXの過去データ(ヒストリカルデータ)をDukascopyから無料でダウンロードする方法を解説します。

Dukascopyについて

Dukascopyはパソコンやモバイル上で外国通貨取引や、貴金属取引、バイナリー、ネットバンキングなどのサービスを提供しているスイスのオンライン銀行です。FX、コモディティ、CFDの過去データを無料で提供しています。webからのダウンロードにはアカウントの作成が必要ですが、後述するBirt’s PHP Scriptを使用する場合にはアカウントは不要です。

Historical Data Feed :: Dukascopy Bank SA | Swiss Forex Bank | ECN Broker | Managed accounts | Swiss FX trading platform
Forex trading, online day trading system, introducing Forex Brokers, and other stock related services provided online by Dukascopy.com
  • 通貨ペア: 約60種類 (他にコモディティ、指数、世界各国の株式市場の主要銘柄、仮想通貨等も提供)
  • 時間足: Tick・秒・分・時・日・週・月
  • 期間: 2007年頃~
  • 更新頻度: 約1時間ごとに更新
  • タイムゾーン: GMT (変更可)

Birt’s PHP Scriptで一括ダウンロードする

大量のファイルを1つずつ手動でダウンロードしていくのは大変です。PHPを使える環境では、Birt’s PHP Scriptを使うことで、Tickデータを一括ダウンロードし、csv形式に変換することができます。

GitHub - FX31337/Birt-Dukascopy: PHP scripts for downloading Dukascopy tick data.
PHP scripts for downloading Dukascopy tick data. Contribute to FX31337/Birt-Dukascopy development by creating an account on GitHub.

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.batprocess_dukascopy_data.php を実行するためのバッチファイル (Windows用)
process.shprocess_dukascopy_data.php を実行するためのシェルスクリプト (PC Unix用)

process_dukascopy_data.php を実行するには、Unix系環境では xz または lzma、Windowsでは 7-zipが必要になるのであらかじめインストールしておく必要があります。

XZ Utils
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

本サイトの内容は、投資の勧誘を目的としたものではなく、本サイト内の情報に基づいて行った取引の損失について、本サイトは一切の責を負いかねます。当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。免責事項もご覧ください。

テクニカル分析
AIでFX

コメント