ZigzagBreakoutEAの「米国雇用統計時のEA停止」に関する訂正・補足
昨日投稿した「【ZigzagBreakoutEA】米国雇用統計(NFP)の時に停止するべきかどうか、バックテストから検証する」という記事ですが、内容の見直し・再検証してみたところ誤りがありましたので、記事を修正しました。
概要をざっくり書きますと、元の記事は「バックテストでも停止した方が良いという結果になった」というものでしたが、実際には「バックテストでは総収益は停止しないほうが良いが、PFでみると停止した方が良い」という結果になっています。
米国雇用統計などの大きな指標発表の時や大きなイベントがある時にはスプレッドの拡大やスリッページの拡大が考えられるため「停止したほうが良い」という内容は変えていません。
再検証で気づいた問題
米国雇用統計を回避するロジックをZigzagBerakoutEAに組み込んでみた所、トレード内容が異なりました。そこで調べてみると、まずFXCalendarCheckerのデータが古いことに気が付きました。
MQL4のfilesにCSVを入れていたのですが、バックテスト時にはデータフォルダ直下のtesterの下のfilesに入れなければならないことを失念していまして、そこに入っていた古いデータでバックテストしていました。このため、直近の情報が反映されないという問題。
さらに私が「海外サイトだから提供されているデータは夏時間が含まれる(夏時間は基準となるGMTOffsetが変化する)」と思い込んでFXCalendarCheckerを作っていまして‥実際には、基準GMTOffsetは変化しない‥つまり、夏時間は日本で見ているカレンダー同様、「1時間早く」なることがわかりました。
これらの間違いを訂正して最適化したところ、結果がかなり異なった‥というわけです。すみません。。
FXCalendarCheckerの方も修正して再アップしています。
ただし、これも完璧ではなく「一律で夏時間の修正」を入れているためサマータイム制度を採用していない日本の発表などがズレてしまいます。
FXDDなどの「夏時間無関係」のヒストリカルデータでバックテストする場合には「あくまでも目安(日本などの指標発表はズレている)」のでご注意下さい。
「夏時間で1時間早くなる」ヒストリカルデータを使用している場合には、FXCalendarChecker.mqhのIsSummerTimeをtrueにしていただければ正確なバックテストができるかと思います。
ZigzagBreakoutEAに米国雇用統計発表回避ロジックを組み込むべきか否か
バックテストで確認した限りは問題無さそう‥というところまでは作ったのですが、これを正式に組み込むべきかどうか?というところで少し悩んでいます。
本来は、米国雇用統計だけでなく危険そうな場合は停止するべきです。(例えば、12/4にはイタリアの国民投票があります。この結果によっては週明けに想定外の相場が展開される可能性もありますから、とりあえず「停止しておく」ほうが無難だと私は思っています。)
しかし、そうやって運用している人の方が(恐らく)少数派で、設定して放置する人の方が多い気がしています‥。
そう考えると、このような機能を組み込んでしまうことで「これで動かしっぱなしでOK」と思われる危険性は無いだろうか・・?と。
少しでも「楽をしたい(楽をさせたい)」という思いが却って悪い方向に向かったりしないかと懸念しています。
※とはいえ、ソースコードを見たい・参考にしたいという人はいると思うので実装・公開しても良いのかな‥と思っていたりします‥。
コメント
私は大きなイベント時は手動で止めているので、自動で止めてくれると、非常に助かります。自動で止めるに1票ということで、ご検討下さい。
私が止めている指標は米雇用統計、FOMC政策金利、FOMC後の議長会見(ある時)、FOMC議事録、ECB政策金利、ECB後の総裁会見で、その他NY市場が休場の時や、米大統領選のような大きなイベントの時は止めています。
ZigzagBreakoutEAを止めるのには、(WeekEndHourではなく)StopHourのパラメーターを使っています。
StopHourを使えば、イベントの直前まで動かしておいて、自動で止めることができるので、重宝しています。
コメントありがとうございます。
あって損のある機能ではないですよね・・
昨日の雇用統計で動作確認もできたので大丈夫かなと‥思います。
来週、公開予定です!