旧MT4では時間関数datetime型関数に限られていたが、新MT4ではMT5と共通の構造体型のMqlDateTime関数が利用できるようになり、EA作成者にはうれしい環境となっている。
例えば、EAの始動開始時間を設定する場合に、開始時間をサーバー時間にて設定するには、
//開始時間(時分単位で設定)
MqlDateTime time;
TimeToStruct(TimeCurrent(), time);
time.hour = BeginHour;
time.min = BiginMin;
time.sec = 0;
datetime BeginTime = StructToTime(time);
これで、サーバー時間での開始時刻が何時何分で設定できる。BeginHourとBeginMinを外部変数にしておけば、この時刻をベースに以後何時間EAを作動させるかとの、命令を出せばよいことになる。
また、TimeToStructの引数TimeCurrent()をTimeLocal()とすれば、サーバー時間ではなく、使用しているパソコンの時刻(日本時間)で設定できるので、サーバー時間を意識することなく使えて便利である。更に、開始時刻のみならず、終了時刻を別途同様に設定すれば、開始時刻と終了時刻とを同時に設定できるようになる。
TimeLocal()は、あくまで 、国内のパソコンやVPSには妥当するが、外国のVPSを利用するには、これをグリニッジ標準時ベースで日本時間に変換する必要がある。こちらも簡単で、TimeGMT()+9とすれば、世界中どこのVPSを使っても、日本時間での時刻設定が可能となる。
構造体とかクラスとかは、筆者も専門家ではないので詳しくはないが、MT4/5で用意されているものが利用できるようになれば十分ではないかと考えている。
※コメント投稿者のブログIDはブログ作成者のみに通知されます