2015年6月18日木曜日

Gewinn2だけじゃなくすべてのEAでパソコン時間は重要です。時刻同期の注意点

220px-BahnhofsuhrZuerich_RZ.jpg

Gewinn2では、内部でTimeGMT()というMQL4関数を使用しています。
TimeGMT()標準時を取得する関数です。
Gewinn2では、アメリカ夏時間等は自動判断して、雇用統計タイミングを避けたりしています。
また週末ポジションをクローズする際も使用しています。

この関数、どうやって標準時を取得しているかというと、動作しているPCのタイムゾーンと現在時刻から取得しています。

ですので、正しくPCの時間を設定しないと、動作がおかしくなります。Gewinn2では5分以上ずれるとポジションが取れなかったり、おかしな時間にクローズします。

TimeGMT関数ですが、EAではかなりよく使われる関数と思われます。そのためGewinn2だけではなく、EAを動かす場合、PCの時間が正しいか注意しましょう。また、インターネット時刻サーバと同期しているかも確認しましょう。

次はMicrosoftのインターネット時刻サーバーと同期するヘルプから抜粋しました。
http://windows.microsoft.com/ja-jp/windows/set-clock#1TC=windows-7


インターネット時刻サーバーと同期する
コンピューターの内部時計をインターネット時刻サーバーと同期することができます。つまり、時刻サーバーの時計に合わせてコンピューターの内部時計を更新し、コンピューターの内部時計を正確に維持できます。通常、コンピューターの内部時計は 1 週間に一度更新され、同期を実行するためにインターネットに接続する必要があります。


コンピューターがドメイン上にある場合は、内部時計をインターネット時刻サーバーと同期させることはできません。

[日付と時刻] を開くには、[スタート] ボタン [スタート] ボタンの画像、[コントロール パネル]、[時計、言語、および地域]、[日付と時刻] の順にクリックします。

[インターネット時刻] タブをクリックし、[設定の変更] をクリックします。 管理者のアクセス許可が必要です 管理者のパスワードまたは確認を求められた場合は、パスワードを入力するか、確認情報を提供します。

[インターネット時刻サーバーと同期する] の横にあるチェック ボックスをオンにし、時刻サーバーを選択して、[OK] をクリックします。



通常はデフォルトでONになっているかと思います。しかしこの同期、問題があります。なんと日曜日の夜にしか確認を行いません。日曜日も含めて稼働している場合にはあまり問題になりませんが、日曜日はサーバを止めている場合などはじわじわと時計がずれていくことになります。

そこで、時計の更新タイミングを毎日1回に変更する方法です。
Windows7以降で有効です。

��.タスクスケジューラを起動します。スタートメニューのプログラムとファイルの検索に「タスク」と打つと出てきます。
タスクスケジューラ1.PNG

��.SynchronizeTimeタスクを選択します。
Microsoft→Time Synchronizationフォルダ内に含まれています。
タスクスケジューラ2.PNG
タスクスケジューラ3.PNG

��.プロパティを開き、トリガータブの編集ボタンを押します。
タスクスケジューラ4.PNG
タスクスケジューラ5.PNG

��.毎日を選択して、あとはOKボタンを押してプロパティを閉じます。
タスクスケジューラ6.PNG
一定時間しかPCを起動しない場合などは、起動している時間帯に時間を変更しておきましょう。

Windows7より前のOSはWindowsTimeサービスによる更新となっています。Windows7から常駐サービスではなくて、定期起動のタスクとなりました。メモリ節約の為です。WindowsTimeサービスを起動する設定に戻す方法もありますが、普段は無駄なため、タスクの起動時間を短くした方が良いでしょう。

 ドメイン環境下の場合、時計はドメインサーバに依存します。時間がずれている場合はドメインサーバの時刻を正しく取るようサーバ管理者にお願いしてください。弊社みたいにEAのテストを自社サーバでも行っているような場合ですねー。

では皆様良いEAライフを! 最後に宣伝です!