MT4でソ-スプログラムを作成し、コンパイルも異常なく終了した。動作確認のため、バックテストを行ってみたところ、テストは順調に進んでいる様子、ピーという終了音とともにレポートタブを開くと、結果はなんと何もなく、ただただ各数値にゼロが並んでいる。
理由は直ぐに判明した。(TestGenerator: unmatched data error (volume limit 34403 at 2019.08.16 12:00 exceeded)というエラーメッセージがあふれていたからだ。その他にもある足の価格データが合致しない旨の表示がある場合もあった。(TestGenerator: unmatched data error (high value 1.21910 at 2019.08.30 08:00 is not reached from the least timeframe, high price 1.21900 mismatches)
エラーの発生原因は、『ヒストリカルデータにおいて、どこかの足のデータが抜けていたり、不正な値になっていたりするため』とされているが、筆者の感覚では、理由はそれだけではないように思える。なぜなら、同じEAのテストでもある時は何事もなく終了したものが、別の機会ではエラーの症状となることもあるからである。更に、エントリー条件に新たな条件を追加すると、追加以前では正常に終了したのに対して、追加後はエラーとなるケースも見られた。
問題はヒストリーセンターばかりにあるのではないようだ。こちら側のパソコンの処理能力も関係しているのではなかろうか。エントリー条件が複雑になったり、トレイリングストップを多用したりするとパソコンに対する荷重が数倍化する。そのためにヒストリカルデータをすべて正しく処理することができなかったと思われるのである。
一方、同じ論理式で作成したMT5 EAを同じようにバックテストに掛けると、こちらは何の問題もなくスムーズにテストが完了する。MT5の開発思想が「実行速度の迅速化」に重きを置いたといわれるから、自動売買の環境としてはMT5のほうが一歩進んでいるようである。
MT5で首尾よくテストを通過すれば、MT4でもトレードでは正しく作動する。通常のMT4自動取引では、バックテストのスピードは必要ではないからである。
筆者としての対策は二つに一つ。パソコンを最新鋭のものに買い替えるか、バックテストはMT5で行うかのいずれかのいずれかである。
ハードやソフトに詳しい方のご意見をお伺いしたいものである。