ここでは、日付と時刻においてMT4用のソースコードとMT5用のソースコードを共通化するための方法について記載します。
日付と時刻関数一覧
MQL4とMQL5での有無を〇(あり)、✕(なし)で示しています。
MQL4、MQL5共に存在するNo1~8についてはそのままの利用で互換性があります。
それ以外の関数については共通化の考慮が必要です。
互換性ありの関数については、本サイトで共通化の解説は行っていません。
| No | 関数 | MQL4有無 | MQL5有無 | 用途 |
|---|---|---|---|---|
| 1 | TimeCurrent() | 〇 | 〇 | 最後に受信したサーバ時間を取得します 互換性あり |
| 3 | TimeLocal() | 〇 | 〇 | コンピュータのローカル時間を取得します 互換性あり |
| 4 | TimeGMT() | 〇 | 〇 | サマータイムを考慮してGMT時間を取得します 互換性あり |
| 5 | TimeDaylightSavings() | 〇 | 〇 | 夏時間への補正を秒単位で返します 互換性あり |
| 6 | TimeGMTOffset() | 〇 | 〇 | コンピュータのローカル時間とサマータイムを考慮したGMT時間との差を秒単位で返します 互換性あり |
| 7 | TimeToStruct() | 〇 | 〇 | datetime型をMqlDateTime構造体型に変換します 互換性あり |
| 8 | StructToTime() | 〇 | 〇 | MqlDateTime構造体型をdatetime型に変換します 互換性あり |
| 9 | Day() | 〇 | ✕ | 最後に受信したサーバ時間の日を取得します |
| 10 | DayOfWeek() | 〇 | ✕ | 最後に受信したサーバ時間の曜日値を取得します |
| 11 | DayOfYear() | 〇 | ✕ | 最後に受信したサーバ時間の経過日数(1年の)を取得します |
| 12 | Hour() | 〇 | ✕ | 最後に受信したサーバ時間の時を取得します |
| 13 | Minute() | 〇 | ✕ | 最後に受信したサーバ時間の分を取得します |
| 14 | Month() | 〇 | ✕ | 最後に受信したサーバ時間の月を取得します |
| 15 | Seconds() | 〇 | ✕ | 最後に受信したサーバ時間の秒を取得します |
| 16 | TimeDay() | 〇 | ✕ | 指定した日付の日を取得します |
| 17 | TimeDayOfWeek() | 〇 | ✕ | 指定した日付の曜日数値を取得します |
| 18 | TimeDayOfYear() | 〇 | ✕ | 指定した日付の経過日数(1年の)を取得します |
| 19 | TimeHour() | 〇 | ✕ | 指定した日付の時を取得します |
| 20 | TimeMinute() | 〇 | ✕ | 指定した日付の分を取得します |
| 21 | TimeMonth() | 〇 | ✕ | 指定した日付の月を取得します |
| 22 | TimeSeconds() | 〇 | ✕ | 指定した日付の秒を取得します |
| 23 | TimeYear() | 〇 | ✕ | 指定した日付の年を取得します |
| 24 | Year() | 〇 | ✕ | 最後に受信したサーバ時間の年を取得します |
余談

ヒナタ
MQL5でかなりの数の関数がなくなってるね

ITサービス屋
無くても自分で何とかなる関数は削除されてるんだよね

ヒナタ
Day()とかHour()って何気にユースケースあるよね

ITサービス屋
わざわざ消さなくてもいい気がするけど、
内部処理作り直しとかでもして途中で嫌になったのかしら?
とても内部処理作り直すほどの処理じゃなさそうだけど・・・

ヒナタ
それって、手〇き・・・💤


コメント