【開発の裏側㉒】EAの取引が2回しかなかった。原因は、読み飛ばした警告でした

【開発の裏側㉒】EAの取引が2回しかなかった。原因は、読み飛ばした警告でした

記事
IT・テクノロジー
どうも、FXトレーダー兼システムエンジニアのナオトです。

ダウ理論のインジケーターの矢印で売買するEAを、MT5で作ったときの話です。
最初の版をストラテジーテスターで3年あまり回したら、取引が2回しかありませんでした。



手法としては、もっと入る場面があるはずです。

調べると、EAは確定した足の矢印を探しているつもりで、まだ形成中の足を見ていました。
形成中の足には、矢印はまだ出ていません。だから、ほとんど見つからなかったんです。



原因は、配列の並び順でした。

開発の裏側の11回目で、MQL5では配列の並びが MQL4 と逆になることがあるので、ArraySetAsSeries で並びをそろえている、と書きました。
今回も、そのつもりで掛けていました。

ところが、掛けた先は、大きさを決めて作った配列、静的配列でした。
静的配列には、ArraySetAsSeries が効きません。並びは元のまま、古い足から順に入っています。
それで、1本前の確定した足のつもりで読んだ場所に、形成中の足が入っていました。



コンパイルは通っていました。エラーは0です。
でも、警告は出ていたんです。並びが変わっていないことは、警告の中に表れていました。

エラーではないので、そのまま走らせてしまいました。



直し方は、配列の並びに頼らないことにしました。
足の時刻を iTime で取り、どの足を見ているかを時刻で確かめる形にしています。

直した版を同じ期間で回すと、取引は385回になりました。
2回と385回では、検証の結果がまるで違います。2回のままでは、手法の良し悪しを判断することもできませんでした。



それ以来、コンパイルのログは、エラーの数だけでなく警告の中身まで読むようにしています。
エラーは止めてくれますが、警告は止めてくれません。静かに、違う動きをするプログラムができあがります。

MT4やMT5のEA、インジケーターの制作や、既にあるEAの不具合の調査のご依頼は、こちらで受けています。


最後までお読みいただき、ありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す