2021年11月19日金曜日

MT4時間をAVA時間に変換しよう 【備忘メモ】

 今朝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);


です。






0 件のコメント:

コメントを投稿