EAの最適化のためではなく、最近は相場の分析をするために、評価用EAのバックテストをすることが増えてきました。

しかし!!!

バックテストには非常に時間がかかります。

私のローカルPCはこんなスペック(静音仕様)なのですが、まだまだ不足しています。
ノートPCでバックテストすると夜が明けそうになりますw

対策で一番単純なのは、テスト用パラメータを減らすことですが、やり過ぎると本来の目的から逸れてしまいそうです。
そこで、不要なパラメータをスキップする処理を考えてみました。
例えば、移動平均線の期間に幅を持たせようとすると、短期線>長期線のケースが出てきたりします。
そういうケースを事前にチェックしてスキップする作戦です。

  1. OnInit関数で、INIT_FAILEDを返してテストを終わる
  2. OnInit関数で、TerminalClose()を呼んでテストを終わる
  3. OnTick関数の最初に、処理なしで抜ける

試してみましたが、1と2はスキップしたケースが全てエラーとしてログに出力されてしまいました。
大事なログを見落としかねません。

実測結果は以下の通り(1と2は同じとして2で計測)

計測条件
期間:2週間
組み合わせパターン:37,856

テストケース 終了までの時間
通常 2時間8分50秒
ケース2 1時間13分24秒
ケース3 1時間53分15秒

ケース3のOnTickの頭で処理を飛ばすだけだと、あまり効果はなさそうです。

ケース2が一番早いのですが、ログが流れてしまう(ファイルには残っている)が難点です

エラーログを吐かずに早くする方法は無いものでしょうか・・・


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です