FX・ビットコイン・オプションのシステムトレード開発と取引録

FXとビットコインのシステムトレードの開発録、オプション取引の履歴を書き連ねています。MT4, Pythonで開発しています。

FX Python システムトレード

FX自動取引プログラムを開発する~準備編~ヒストリカルデータを登録する

スポンサードリンク

今回は、「FX自動取引プログラムを開発する~準備編~ヒストリカルデータを集める」で
集めたヒストリカルデータをデータベースに登録します。

データベースはSqliteを使用することにします。
ダウンロードしたデータは全て「historicaldata」ディレクトリに保存しているという前提です。

では、プログラムのソースコードです。

CSVファイルの読み込みにはglobを使用します。

という形で正規表現でファイルの一覧を取得できるためです。

CSVファイルの読み込みはその名もずばり「csv」を使用して
以下で行っています。

まずは、

します。

そして各ファイルごとにread_fileを実行し、
読み込んだ内容をdatalistにセットして返しています。

datalistメソッドで行っている処理内容は、

でファイルを開き、

でファイル内容をdatasに取り込みます。

で、1行ずつループを回し、読み込んだ内容をdatalistに追加していきます。
ファイルを最後まで読み込んだらdatalistを返します。

次のcreate_sqlでは、CSVファイルから読み込んだデータを元に
SQL文を生成しています。

FOREXITEからダウンロードしたファイルを確認すると、
CSVファイルは、
,,

TICKERは、「EURUSD」や「USDJPY」等の通貨名、
DTYYYYMMDDは日付、
TIMEは時間、
OPEN、HIGH、LOW、CLOSEはそれぞれの価格です。

時間はどうやって保存しようかと思いましたが、
Sqliteは型がないようなので、
DTYYYYMMDDとTIMEをそのまま引っ付けて登録することにしました。

これらのデータを元にINSERT文を生成し返すということをこのメソッドでやっています。

メイン部分は以下になります。

最初の4行でデータベースに接続し、oneminというテーブルを作成するSQLを実行するというところまでやっています。

続いてget_filelist()を呼び出してファイル別にループ処理を行います。
read_file()でそのファイルの内容を読み込み、
create_sql()でINSERT文を生成し、
SQL1行ごとにループ処理を行い、
cur.execute(sql)でINSERTを実行します。

ループ終了後にcommitし、接続をcloseして終了です。

以上でFOREXITEからダウンロードしたデータをデータベースに登録することができました。

スポンサードリンク
スポンサードリンク

-FX, Python, システムトレード
-, , ,