時間制御系EAって夏でも冬でも正しくバックテスト出来ているの?

autoGMTEA開発日記

特定の時間で動作するEAはいくつも販売されており、特に東京仲値時間帯を狙ったEAは人気です。

これらのEAにはサマータイムの切り替わり時にGMTを切り替える機能があり、

  • 手動でサマータイムを切り替えるタイプ
    (例えば冬時間はGMT+2を入力し、夏時間にGMT+3の入力が必要)

  • 自動でサマータイムを切り替えるタイプ
    (一度設定後はサマータイム切り替わり時にGMT変更が不要)

の2通りがあると思います。



自動でサマータイムを切り替えてくれるタイプ(サマータイム自動補正搭載)が主流です。
しかし、開発者が記述するコード(プログラム)によっては

正しくバックテスト出来ない場合がある

ことをご存じでしょうか?



正しくバックテスト出来ない2つのケースについて共有します。

  • サマータイム自動補正機能が搭載されている場合

  • サマータイム自動補正機能が搭載されていない場合



残念ながらパラメータやバックテスト結果から正しくバックテストが出来ているかどうかを判断することは出来ません。


時間制御するEAをバックテストして意図する結果とならない場合は開発者様に聞くようにしましょう。


「えっ!? これで終わり!!」


という声が聞こえてきそうです。申し訳ございません。


正しくバックテスト出来ないケースとはどういう場合なのかを開発視点で書いております。
私の備忘録となりますのでご容赦ください。

EA利用者様におかれましては何を言っているのか理解出来ないかも知れません。
そんな内容となります。

「Profit Capture Plan」も時間制御系EAとなりますが正しくバックテスト出来ます

ヒストリカルデータのGMTに注意する

お使いのMT4口座のGMTとヒストリカルデータのGMTは合わせる必要があります。

おそらくほとんどの方がヒストリカルデータのGMTなんて気にもされていないのではないでしょうか? 

もちろん私もEAをさわり出した頃なんて何にも知りませんでしたよ。

詳しくは以下の記事を参考にして下さい。

サーバー時間対応表

GMT+2(冬時間)の0時はGMT+9(日本時間)の7時とかの早見表として使えますかね(使わないって?)

私には必須の表です。開発メモなので気にしないでください。

  • サーバー時間の異なるブローカー対応
  • 時間制御への対応
  • 曜日制御への対応
GMT±010111213141516171819202122230123456789
GMT+919202122230123456789101112131415161718
GMT+313141516171819202122230123456789101112
GMT+212131415161718192021222301234567891011

夏でも冬でも同一のサーバ時間でエントリーするEA

例えばGMT+2/+3のヒストリカルデータを使う場合、サーバー時間の0時台にエントリーするEAになります。朝スキャなどがこのタイプでしょうか。

このようなエントリーロジックのEAはサマータイム自動補正が搭載されていると正しくバックテスト出来ない可能性があります。

開発者に聞かないとわかりません。

なぜかは開発メモに書きましたが、ちょっと難しいかも知れません。
上手く説明出来ませんので質問しないでくださいませ。

開発メモ
  • サマータイムによらずに常にサーバー時間の0時台にエントリーするコード(プログラム)にする

  • バックテストで使うヒストリカルデータは日本とのズレは関係なく、常にサーバー時間(MT4時間)でのデータである

  • サーバー時間とのズレが発生するのは、あくまでリアルタイムでのことでバックテストは関係ない(サマータイムはMT4上では関係ない)

  • バックテストでは過去のデータを扱うために日本時間とのズレは関係なく、EAのサマータイム設定がTrueのままでも常にサーバー時間の0時台にエントリーするコード(プログラム)になる

  • リアルではサーバー時間と日本時間のズレが夏時間と冬時間で変わってしまうため、それを補正するために手動でGMTを変更する必要がある

  • 仮にサマータイム自動補正機能を搭載するとバックテストでも自動でGMTが切り替わってしまうため0時台でエントリーすべきところを1時台にエントリーしてしまい正しいバックテストにならなくなる

  • リアルとバックテストでズレが生じないようにするにはサマータイム設定を手動で設定する必要がある

  • もしサマータイム自動補正機能を搭載する場合は、バックテストするときにサマータイム自動補正が作動しないようにコード(プログラム)を書く必要がある

  • サマータイムには英国式と米国式があるのでこれを考慮したコード(プログラム)にする

夏でも冬でも同一の日本時間にエントリーするEA

例えば日本時間の10時台にエントリーするEAになります。仲値などがこのタイプでしょうか。

このようなエントリーロジックのEAはサマータイム自動補正機能が搭載されていないと正しくバックテストが出来ません。

こちらも開発者様に聞かないとわかりません。

ロジックがわからないと何が正しいのかわからないからです。

開発メモ
  • 夏時間と冬時間で1時間ずらすコード(プログラム)にする

  • サマータイム自動補正機能を搭載していない場合、バックテストをすると夏でも冬でも同一のサーバー時間(同一GMT)でバックテストされてしまう

  • サマータイム自動補正機能を搭載していない場合、日本時間の10時台にエントリーすべきところを夏時間だけ9時台にエントリーしているバックテストになってしまう

  • サマータイムには英国式と米国式があるのでこれを考慮したコード(プログラム)にする

さいごに

いかがでしたでしょうか? 難しいですよね?

こんなことが理解できるひとは開発者さんでしょうかね?

今まで汚い開発メモを記事に出来て個人的にはスッキリしました。

ここまで読んで頂きありがとうございました。


コメント

  1. うさこ より:

    初めてコメントさせていただきます。
    記事、読ませていただきました。
    EAのバックテストを取るにあたって、GMTやサマータイム等の時間について、これでいいのかな?と思っていた部分が少し解決した気がします。
    EAの開発者と名乗られてる方で、ここまで詳しく書いて下さる方はなかなかいらっっしゃらなので、すごく助かりました。
    ありがとうございます。

    • kite より:

      うさこさん
      コメントありがとうございます。

      GMTやサマータイム、ヒストリカルデータのズレなど最初はなかなか理解出来ませんでした。
      他の開発者様にしてみれば、当たり前の事なのかなと思いますよ。

      自分用に整理した記事にも関わらずお役に立てたようで良かったです。

error:Content is protected !!
タイトルとURLをコピーしました