ホーム » ソース共通化 » 日付と時刻 » 時分秒 – 日付と時刻

時分秒 – 日付と時刻

日付と時刻

日付と時刻hour()Min()Seconds()について、MQL4とMQL5のソースコード共通化する方法を説明しています。

関数定義

MQL4の定義

int  Hour();
int  Minute();
int  Seconds();

MQL5の定義

定義なし

MQL5に時、分、秒を求める関数が定義されていません。

共通化方法

ソース共通化

対処方法

共通化するためにMQL5用の定義をします。
#ifdef __MQL5__ ~ #endifを使用することでMQL5のコンパイルにのみ有効となります。
MQL4の場合は「__MQL4__」を使用しますが、今回使用していないためMQL4は既存で組み込まれた組込み関数が利用されます。

#ifdef __MQL5__
///////////////////////////////////////////////////////////////////////////////
// 時
int Hour()
{
	MqlDateTime tm;
	TimeCurrent(tm);
	return (tm.hour);
}
///////////////////////////////////////////////////////////////////////////////
// 分
int Minute()
{
	MqlDateTime tm;
	TimeCurrent(tm);
	return (tm.min);
}
///////////////////////////////////////////////////////////////////////////////
// 秒
int Seconds()
{
	MqlDateTime tm;
	TimeCurrent(tm);
	return (tm.sec);
}
#endif

使用例

年、月、日、曜日を表示します。

int OnInit()
{
#ifdef __MQL5__
	Print("これはMT5で動作しています");
#else	//__MQL4__
	Print("これはMT4で動作しています");
#endif
	return(INIT_SUCCEEDED);
}
void OnTick()
{
	static bool bIsPrint = false;
	if (bIsPrint) {
	} else {
		Print("年:", Year());
		Print("月:", Month());
		Print("日:", Day());
		Print("曜日:", DayOfWeek());
		bIsPrint = true;
	}
}
MT5での実行結果
MT5での実行結果

時、分、秒を順にログに出力します。

MT4での実行結果
MT4での実行結果

余談

ヒナタ
ヒナタ

これもMQL5に組み込んでおいてくれよな

ITサービス屋
ITサービス屋

ちょっと時間取得したいのに数行コード書くの面倒だもんね

ヒナタ
ヒナタ

まあ、自分で準備・・・💤

コメント

タイトルとURLをコピーしました