読者です 読者をやめる 読者になる 読者になる

FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

JForexのヒストリカルデータをcTrader用に変換する。

cTrader バックテスト

cTraderのバックテストでCSVファイルのヒストリカルデータを選択できるようなのでJForexのヒストリカルデータで試してみました。

JForexでなくてもDukasCopyのサイトに行けば同等のヒストリカルデータを入手できますが、JForexの方が圧倒的に速いのでこちらをおすすめします。

それから、CSVのフォーマットがcTraderのモノと異なる為、SQLiteを使用して変換しました。

f:id:fxborg:20170216011553p:plain

少し長くなりそうですが、手順を書いてみます。

 JForexでヒストリカルデーターを取得

JForexを起動すると下段に「ヒストリカルデーターを取得」というタブがあるのでこちらを開きます。

f:id:fxborg:20170216015631p:plain

次に必要な情報を入力して、CSVファイルを出力します。

f:id:fxborg:20170216015856p:plain

【設定内容】

  1. ・開始と終了日時・・ 任意の範囲を指定。
  2. ・形式・・・・・・・「CSV」を選択。
  3. ・日付形式・・・・・「YYYY-MM-DD HH:MM:SS」を選択。
  4. ・区切り・・・・・・「,」を選択。
  5. ・ビッド/アスク・・「Bid」を選択。
  6. ・データ種類・・・・「分」を選択。
  7. ・値・・・・・・・・「1分」を選択。
  8. ・フィルター・・・・「フラット期間を非表示」を選択。
  9. ・データ出力先・・・ 任意の出力先を選択。
  10. ・銘柄・・・・・・・ 任意の銘柄を選択。

 

この後「開始ボタン」をクリックするとヒストリカルデータのダウンロードが始まります。

DB Browser for Sqlite で整形

次に、このCSVファイルをcTrader用のフォーマットに変換します。これには「DB Browser for SQLite」を使用します。

インストール方法などはこちらのページなどを参考にしてください。

CSVファイルのインポート

「DB Browser for SQLite」を立ち上げて適当に新しいDBを作成します。

次に「File」- 「Import」-「Table From CSV file」メニューを選び、先ほど出力したCSVファイルを選択します。

f:id:fxborg:20170216022615p:plain

CSVの内容が表示されるのでテーブル名だけ適当な名前に変更し「OKボタン」をクリックします。

f:id:fxborg:20170216023013p:plain

CSV形式の変換

インポートが完了したら、もう一つ新規でテーブルを作成します。「Create Table」ボタンから作れます。こちらに変換後のデータが保存されます。

f:id:fxborg:20170216023652p:plain

テーブルのレイアウトは以下のとおりです。

f:id:fxborg:20170216023350p:plain

設定が完了したら「OKボタン」をクリックします。

続いて「Excecute SQL」タブを開いて、以下のSQL文を入力します。

f:id:fxborg:20170216024344p:plain

【SQLの内容】

insert into 「追加先テーブル名」
    (date,time,open,high,low,close,volume)
select
    strftime('%Y.%m.%d', `Time(UTC)`) as d,
    strftime('%H:%M', `Time(UTC)`) as t,
    Open,High,Low,Close,
    cast(cast(Volume as real)*1000 as Integer)as v
from 「元テーブル名」order by `Time(UTC)`;

SQLを入力し、「実行ボタン」をクリックします。

cTrader用CSVファイルの出力

SQLの実行が完了したら、最後に追加先のテーブル上で右クリックをし「Export as CSV file」メニューを選びます。

f:id:fxborg:20170216025245p:plain

エクスポート画面が表示されるので、そのまま「OKボタン」をクリックし、保存先を選択し保存します。

f:id:fxborg:20170216025450p:plain

これでcTrader用のヒストリカルデータが出来上がりました。この後、バックテストの手順が残っていますが、今回はこのくらいで・・・。

最後に 

今回はJForexとSQLiteを使ってヒストリカルデータを移行してみました。ヒストリカルデータは大きなファイルになりがちなので、EXCELなどではうまく編集できません。SQLiteは柔軟な変換が行える上に、CSVの入出力にも対応しているのでこの用途に向いてそうです。NinjaTrader用にも使えそうですね。