概要
為替のデータをWEBページから取得して、SQLite形式のDBに保存するツールです。
為替データはForexite から取得します。
コマンドラインで使用するツールで、GUI等はありません。
同様のツールに、専用採取ツール(AutoForexite) があります。GUI等が必要な方や、出力がCSV形式がいいという場合は、 こちらを使用することをお勧めします。
Python等のプログラミング言語でシュミレーションをしたいという用途に向いています。
動作環境
Windows XPにて動作することを確認しています。
インストール/アンインストール
ダウンロードしたファイルを解凍して、適当なフォルダに保存してください。
レジストリ等は一切使用していませんので、 フォルダごと削除すれば、アンインストールできます。
使い方
ヘルプ
概要 fxupdater [-p path] [-?] [-t] [-d] [-r] [-c] 詳細 Foxciteから、データをダウンロードして、Sqlite形式のDBにデータを格納する。 出力DBは、以下のとおり <為替データ> EURUSD, GBPUSD, USDCHF, USDJPY, EURGBP, EURCHF, EURJPY, GBPCHF, GBPJPY, CHFJPY, USDCAD, EURCAD, AUDUSD, AUDJPY, NZDUSD, NZDJPY, XAUUSD, XAGUSD <登録情報> REGISTFILE オプション -p path: 作業フォルダ(path)を指定する。 ない場合は実行ファイルがあるフォルダが作業フォルダになる -? : 使用方法出力 (--? と --helpは同じ. -t : 時間計測 -d : ダウンロードのみ実行する -r : 登録のみ実行する -c : 登録後ダウンロードしたZIPファイルを削除する 使用例 1. データをダウンロード・登録する fxupdater 2. 作業フォルダにデータをダウンロードして、登録する fxupdater -p "d:\download" 3. 作業フォルダにデータをダウンロードする。その時間を計測する fxupdater -p "d:\download" -t -d 終了コード 0: 正常終了なお、処理を中断した場合、中断した箇所から作業が再開されます。
自動実行
タスクスケジューラに登録しておけば、自動実行されます。
毎日、実行するようにしておけばDBは、常に最新の状態に保たれます。
私の環境にて、タスクスケジューラはスタートメニューの下記の場所にありました。
「アクセサリ」→「システムツール」→「タスク」
注意事項
初回起動時では、全データをWEBページから採取しますので、 非常に時間がかかります。
私の環境下では、作業終了までに6時間ほどかかりました。
また、データベースのサイズも非常に大きいです。
現時点(2007/9/18)で、すべてのデータをダウンロードすると約5GBになります。 すくなくとも10GB以上の空きスペースが必要です。
免責
このプログラムを使用したことによる、直接あるいは間接的損害に関しての、 一切の責任を負いかねますのでご了承下さい。
著作権・配布・転載
このソフトはフリーソフトウェアです。 配布、転載は原則自由です。 ただし、中身の一部もしくは全部を改変して配布、掲載をする事は禁止します。
ダウンロード
- 2008/01/30: fxupdater.exe ver1.10
- 2008年度に対応
- 元データがGMT+1なのに、GMTとして変換していたので修正
- 2007/09/18: fxupdater.exe ver1.00
- 初版作成
サンプルプログラム
Fxupdaterで作成したデータベースから、4本値を読み出しています。
使用している言語はPythonです。
Pythonの解説はこちらにもあります。あわせてご参照ください。
# coding: utf-8
import sqlite3
import matplotlib.dates as mdates
import datetime
def makeMlibTick(**args):
"""
Tick(matplotlib)を作成する
引数:日時 str型('2007/1/1 12:24:30')
"""
if 'datetime' in args.keys():
date_t = args['datetime'].split(" ")[0]
time_t = args['datetime'].split(" ")[1]
if (('date' in args.keys()) and ('time' in args.keys())):
date_t = args['date']
time_t = args['time']
dt = datetime.datetime(int(date_t.split("/")[0]),
int(date_t.split("/")[1]),
int(date_t.split("/")[2]),
int(time_t.split(":")[0]),
int(time_t.split(":")[1]),
int(time_t.split(":")[2]))
return mdates.date2num(dt)
# 作業ディレクトリに移動
import os
os.chdir("C:\\BigData\\DB")
# DBに接続
con = sqlite3.connect("USDJPY")
# カーソル作成
cur = con.cursor()
# 日付と時刻からTICKを生成
start_tick = makeMlibTick(datetime = "2006/08/01 0:0:0")
end_tick = makeMlibTick(datetime = "2006/08/02 0:0:0")
# SQL文作成
sql = "SELECT * FROM FXDATA WHERE TICK <%f AND TICK >= %f ORDER BY TICK ASC;" \
% (end_tick, start_tick)
# 実行
cur.execute(sql)
# 結果取得
print cur.fetchall()