これは、バックテスト時に1分足のデータはあるが、EAやインジケータが内部で参照しているほかの足のデータがないときに、ジェネレータが作動して足データを作りながらバックテストが進行していくことでインジケータの読み直しが生じてこうなります。
こうなってしまうと、バックテストにものすごい時間がかかります。私の公開EAのサンプルをお出ししますと、Clab_EURGBPの3ヶ月EveryTickバックテストで正常なら90秒くらいです。バックテスト時間には自信があります。
バックテストを行う際は、テスターは使用しているサーバー毎に保存されたhistoryからデータを抽出します。テスト用に抽出したデータは /tester/history/の中に保存されます。期間やEAが変わった場合、過去2回までのテスト用ヒストリーデータが保存されます。同じEA・同じ期間でパラメータだけを変更してバックテストするとき2回目以降はバーが動き出すまでの時間が短縮されるのはこのためです。多通貨でバックテストを頻繁に行う方はこのフォルダ内に膨大のデータが溜まっていくので注意が必要です。使用しない通貨ペアのバックテスト用ヒストリーデータは削除しましょう。
MySpreadExcutionの説明書にも、オフラインする前に同期間で一度バックテストをすすめているのはこういった理由なのです。
一番賢い対処
1.1分足のデータが信頼のおけるものであれば、MetaTraderを終了させた状態で、/history/ フォルダ(テスターのではない)内にある、該当通貨ペアの5分足以上のヒストリーデータをすべて削除する。
2.オフラインで立ち上げます。
3.PeriodConverterを利用して(Blog記事参考)、5分足以降のデータを作成する。
4.一度再起動する。
5.テスターを走らせる。(パラメータはどうでもよい)
===スプレッドを固定する場合は、このあとで、MySpreadExecutionの説明書どおり行ってください。===
nks さんが書きました:
そうですか..これで正常なんですか。
ということで、まったく正常ではありませんよ!!