今朝LAS VEGASから帰国
潔癖症が幸いしたのか出国前PCR、出国後PCR共に陰性でした。
さて本題
MT4の時間
一般的なMT4はGMT2/3で動いています。
標準時間(冬)はGMT2 サマータイムはGMT3です。
時間の変更タイミングはNY基準です。
夏時間は3月第2日曜~11月第一日曜までです。
この時間は俗称MT4時間です。
・MT4時間:OANDA、SAXO BANK、FOREX EXCHANGE、EZ Invest、FXTF、外為ファイネスト、楽天、スターリング証券(旧東岳証券)
・GMT0:AVA社はGMT0
・JST(日本時間):FOREX.COMはJST(日本時間)
・不明:DUKAS、JFX(EA使用不可)、外貨ex(EA使用不可・旧YJ)
なぜMT4時間
MT4時間にするとNYクローズが0時になります。
取引時間は月曜日0時から金曜日の23:59まで1週間が5日になります。
MT4時間以外では月曜日は短く、土曜日が少しだけあるために、一週間は6日、1日の長さがバラバラになります。
見た目も悪いのですが4時間足以上のインジケーターを参照した場合や曜日、日にちを参照したEAは狂いがちです。
AVA時間に変換
AVA時間(GMT0)の0時はGMT2(MT4時間冬)の2時、GMT3(MT4時間夏)には3時になります。
MT4時間のEAをAVA時間に変換するに方法
①Hour() の場合
冬Hour()+2、夏Hour()+3にすると時間はあいますが、日、月、年、曜日はずれが出るので要注意です。
②TimeHour(TimeCurrent())の場合
1時間は60分×60秒=3600秒です
冬 TimeHour(TimeCurrent()+3600*2)
夏 TimeHour(TimeCurrent()+3600*3)
TimeDay(datetime)、TimeDayOfWeek(datetime)、TimeMonth(datetime)、TimeYear(datetime)を使えばずれが出ません。
※TimeCurrent()+3600*2は変数に入れたほうが楽です。
※datetimeにはTimeCurrent()-3600*2などを入れてください。
③MqlDateTimeの場合
MqlDateTime mTime;と宣言をすると
mTime.min、mTime.hourといったメンバーができます。
構造体というとややこしそうですが、これは簡単です。
mTime.と入力すると候補が出てきます。
そこにそれぞれに対応した値を入れます。
変数と同じ感覚で使えます。
時間の代入はTimeToStruct(TimeCurrent(),mTime);ですべて一斉にできます。
この場合現在の時間TimeCurrent()を元にmTime.minには分がmTime.hourには時間が自動で入ります。便利です。
冬時間の場合 TimeToStruct(TimeCurrent()+3600*2);
夏時間の場合 TimeToStruct(TimeCurrent()+3600*3);
です。