EAの最適化のためではなく、最近は相場の分析をするために、評価用EAのバックテストをすることが増えてきました。
しかし!!!
バックテストには非常に時間がかかります。
私のローカルPCはこんなスペック(静音仕様)なのですが、まだまだ不足しています。
ノートPCでバックテストすると夜が明けそうになりますw
対策で一番単純なのは、テスト用パラメータを減らすことですが、やり過ぎると本来の目的から逸れてしまいそうです。
そこで、不要なパラメータをスキップする処理を考えてみました。
例えば、移動平均線の期間に幅を持たせようとすると、短期線>長期線のケースが出てきたりします。
そういうケースを事前にチェックしてスキップする作戦です。
- OnInit関数で、INIT_FAILEDを返してテストを終わる
- OnInit関数で、TerminalClose()を呼んでテストを終わる
- OnTick関数の最初に、処理なしで抜ける
試してみましたが、1と2はスキップしたケースが全てエラーとしてログに出力されてしまいました。
大事なログを見落としかねません。
実測結果は以下の通り(1と2は同じとして2で計測)
計測条件
期間:2週間
組み合わせパターン:37,856
テストケース | 終了までの時間 |
通常 | 2時間8分50秒 |
ケース2 | 1時間13分24秒 |
ケース3 | 1時間53分15秒 |
ケース3のOnTickの頭で処理を飛ばすだけだと、あまり効果はなさそうです。
ケース2が一番早いのですが、ログが流れてしまう(ファイルには残っている)が難点です
エラーログを吐かずに早くする方法は無いものでしょうか・・・