yuki さんが書きました:
Auto UTC OFFSET機能ですが、いつも週明けにうまく機能しないようです。
"Error UTC-OFFSET is illegal. It must be within 11 hours"と表示され、EAがストップしたままとなります。
トレード時間中にEAをスタートさせるとAuto UTC OFFSET機能が機能しないとengineeeerさんが以前書かれていましたが
毎週週明けはデフォルトの稼働時間中にあたるため、この機能が働かないものと思われます。
週をまたいでEAを稼働させっぱなしにするためには、Auto UTC OFFSETをfalseにしてトレード時間を手動で指定するしか
ないのでしょうか?
どこかで、そう書きましたでしょうか?そうであれば記述ミスです。訂正します。
パラメータ説明書をお読みいただけましたでしょうか?
説明書に”サーバー取引時間外にEAを導入した場合は正しい数値を得られないため、通常はfalseにして、下の手動でのオフセットでの稼動をお勧めする。”
と書きました。それが正解です。
そのエラーは、土日にMT4を再起動したり、パラメータ変更などによりEAの読み直しをMT4にさせたときに起き得ます。
というのは、AUTOでオフセット値を計算するには、PC内部のUTC時間と、ブローカーサーバの時間(気配値表示の右側に表示されている)との差を計算します。しかし、土日はブローカーサーバの時間は大概19:59:59でとまったままになり、そしてブローカーによっては土日もセンター自体へのコネクションは確立されるとことがあるため、EAが走り間違った差を求めます。
普通は、ブローカーの取引時間は金曜20:00:00~日曜20:59:59が休みです。また、イレギュラーでの休みもあります。プログラムで前者を対応させようと思えば出来ますが、いくつか問題や不安があるのです。
ひとつに、
対応策で日曜21:00:00の週明け取引開始時刻にオフセットを計算しなおす、もしくはTICK毎に計算するということがあげられます。そうすると、使用者によっては、週明け取引開始時間近くにトレード時間を設定している人はもしかしたら修正前のオフセットを使用してひょっとしたら間違ってエントリーするかもしれません。またTick毎に取得すると、WindouwsのDLLを使用してますので、動作が重くなる示唆と、ブローカーにはまったく依存してないものに対して毎Tick使用して比較するといったことになるため「~だろう」という不確定な判断が常に付きまとうのであまりしたくないのです。実際にTick毎取得のEAを複数起動していると、システムエラーや動作の遅延に繋がっていそうな状況を体験しました。
ひとつに、
また、通常この時間はスプレッドが広がっていることや、さまざまな諸条件で極端に乖離した状態から始まること、が多いですのでそもそもトレード時間にはしないというのが短期EA使用のセオリーでしょうけども、私の作成しているEAの中には長期足のEAもありまして、それは週末週明け問わずトレードをするようにもパラメータを調整する必要があります。
ひとつに、
さらに、プログラムをする人であれば共感いただけることではありますが、ライブラリの共通使いまわしを常に意識しているという勝手な理由からこの部分のパラメータは手動でという風にお願いしています。
このような感じです。
また、
yuki さんが書きました:
毎週週明けはデフォルトの稼働時間中にあたるため、この機能が働かないものと思われます。
とありますが、それは間違いです。
StartDayOfTheWeek 1 //週明けトレード開始曜日設定。(0-6 0は日曜日 UTCでの曜日)次のStartingHourOfWeekと併用。
StartingHourOfWeek 3 //週明けトレード開始時間設定。(単位:UTC時間)
とデフォルトではなっているはずです。トレード時間ではありません。稼働時間中にこの機能が働かないわけではなく、EAの起動時にこの機能が働きます。
要望が多ければ週明けトレードは絶対にあり得ないというEAには24時間完全自動で調整するように改造しようと思います。無料で配布している以上条件と限界があることをご理解ください(>_<)。