改めて前回の内容をおさらいをしておくと、
- Color(カラー)型とは、色に関するデータを格納する変数を用意を用意する時に使われるデータ型である。
- 基本的にはカラー定数型を使っていけば問題ない。
ということをお伝えしました。
そして、何より大事なことは、
Color(カラー)型のことはあまり考えすぎないこと
です。
Color(カラー)型の変数は、主にMT5のチャート上に表示する対象物を、プログラムを介して彩ることを目的に使われるので、直接的に売買に関わるような働きをすることは基本的にありません。
「こんなのもあるんだ~( ゚Д゚)」
ぐらいに気軽に考えてください。
今回はdatetime型 というデータ型について解説していきたいと思います。
※MQL5で自動売買プログラム作るにあたっては、MT5・メタエディター5がお使いのパソコンにインストールされている必要があります。
もし、まだMT5のダウンロードが完了していない方は、
こちらからデモ口座の開設とMT5のダウンロード・インストールを完了して頂ければと思います。
datetime型とは何か?
日付・日時に関するデータを格納する変数を用意するためのデータ型
です。
datetime型を理解し、使いこなせるようになる事のメリット
datetime型を理解し使いこなすことは、EA開発スキルの向上に大いに役立ちます。
たとえば、特定の時間に発生した市場の変動を分析したり、特定の時間帯にのみトレードを実行する戦略を開発する場合、datetime型を適切に扱う能力が不可欠です。
datetime型を使えば、過去のデータを特定の時間範囲でフィルタリングしたり、特定のイベントに対してアラートを設定することができます。
これにより、より洗練されたトレーディング戦略の開発が可能になり、市場の動きに合わせて迅速かつ効果的に対応できるようになります。
またMT5のバックテスト機能を特定の期間にわたる市場の動向を分析し、それを基に戦略の強度をテストする際には、正確な時間管理が求められます。
datetime型を理解する事で、過去のデータを正確に扱い、より信頼性の高いバックテスト結果を得ることもできるでしょう。
上記はあくまで一例ですが、datetime型を学ぶことで、これだけの事が可能になるんだ!というイメージに心を躍らせながら是非楽しんでお読みいただければ、と思います。
※バックテストについては↓の記事をご参照ください。
datetime型の使い方
datetime型を使うには、
のようにdatetimeを書いた後、半角スペース一個分以上スペースをあけて、変数名を入力し、最後にセミコロンをつけます。
次のセクションでは、datetime型の変数を用意した後、そこに代入する為に日付・日時データをどう表現したらいいか?ということについて解説します。
日付・日時に関するデータの表し方
日付・日時データの表し方にはいくつか種類があります。
順にみていきましょう。
まずは基本形です↓
void OnStart()
{
//変数「varDate」に2022年6月23日午前6時というデータを代入する
datetime varDate=D'2022.06.23 06:00:00';
//コメント出力をする
Comment(varDate);
}
↑のような形ですね。
- 大文字アルファベットの「D」を書く。
- 年、月、日の順に、ピリオドで区切る形で記述する。
- 日の後に、半角スペースを開けてから時間、分、秒の順にコロンで区切る形で記述する。
- 大文字アルファベットのD以降の記述内容をシングルクォーテーション(‘)で挟む
以上の手順を踏むことによって
日付・日時データをdatetime型の変数に格納することができます。
MQL5 Program Fileを実行してみましょう。
※MQL5 Program File実行方法についてはコチラ
記述した日付・日時がチャート上に表示されました。
大文字アルファベット記入→情報の両端をシングルクォーテーションで挟む
という工程はカラー型の時と同じですね。
このコード例では、「年・月・日・時・分・秒」を漏れなく記述しましたが、日付・日時データの一部を省略することもできます。
例えば↓こんな感じで「秒」の部分を省略すると
void OnStart()
{
//「秒」の部分は省略する
datetime varDate=D'2022.06.23 06:00';
//コメント出力をする
Comment(varDate);
}
実行してみましょう。
最初と同じ結果ですね。
コンパイル時に「秒に関するデータ」を明示しないと自動的に00秒となるということですね。
「分」に関しても同じです。
void OnStart()
{
//「秒」と「分」の部分を省略する
datetime varDate=D'2022.06.23 06';
//コメント出力をする
Comment(varDate);
}
実行してみましょう。↓
コンパイル時に「分に関するデータ」を明示しなかったので、自動的に00分となりました。
「時間」も削ってみましょう。要は年と日付だけ記述する、ということですね。
void OnStart()
{
//「秒」と「分」と「時」の部分を省略する
datetime varDate=D'2022.6.23';
//コメント出力をする
Comment(varDate);
}
実行してみましょう。
コンパイル時に「時に関するデータ」を明示しなかったので、自動的に00時となりました。
ここまでは、何となく想像できたのではないかな、と思います。
では、年~月~日、という年や日付を省略するとどうなるでしょうか?
void OnStart()
{
//日付・日時を全て省略する
datetime varDate=D'';
//コメント出力をする
Comment(varDate);
}
実行してみましょう。
日付がい今までと違い「6.24」になっていますね。
これを見てわかるように、
日付・日時データを全て省略した場合、コンパイルした時点での日付が変数に格納されます。
(今回プログラムファイルをコンパイルしたのが、2022/6/24でした)
次は時間だけ指定して、年や月日は明示しないパターンを見てみます。
void OnStart()
{
//時間だけ指定して、他は省略する
datetime varDate=D'8:00';
//コメント出力をする
Comment(varDate);
}
実行してみましょう。
時間に関しては、指定した時間が表示され、それ以外の日付データはコンパイルした時点での日付データが反映されます。
MQL5が事前に定義しているdatetime型の定数について
日付・日時データの表し方に、MQL5が事前に定義しているdatetime型の定数を使うという手段もあります。
定数→定まった数→決まっている、変わらない数
のことです。
MQL5が事前に定義しているdatetime型の定数というのは
「日付・日時データを使いたいんだったら、こういう記述をするよいいよー ^^) _旦~~」
というのをMQL5側が、事前に用意してくれている書き方のことだと思ってください。
詳しく先に知りたい方は↓の記事をご覧ください。
例えば
void OnStart()
{
//定数__DATE__の日付データを代入する
datetime varDate=__DATE__;
//コメント出力をする
Comment(varDate);
}
__DATE__という定数(正確には定義済みマクロと言いますが今は細かい事は気にしないでください)を使うと、
コンパイルした時点での日付(時刻は含まない)データを取得出来ます。
MQL5 Program Fileを実行してみましょう。
コンパイルした時点での日付(時刻は含まない)データをコメントに反映させることができました。
時刻を含めたコンパイルした時点での日付・日時データを取得できる定数もあります。
void OnStart()
{
//定数__DATETIME__の日付・日時データを代入する
datetime varDate=__DATETIME__;
//コメント出力をする
Comment(varDate);
}
このように定数「__DATETIME__」を使うと、時刻を含めたコンパイルした時点での日付・日時データを取得できます。実行してみましょう。
↑時刻を含めたコンパイルした時点での日付・日時データをコメントに反映させることができました。
datetime型に関しては、今後口座を進めていく中で、実際のEAを作る過程で再度登場予定です。
その際にさらに突っ込んだ解説をすることになるかと思いますのでお待ちください。<m(__)m>
まとめ
今回はdatetime型についての解説をしました。
今回の記事では以下のことを学びました。
- 日付・日時データは以下のプロセスを経て表現できる↓
- 大文字アルファベットのDを書く。
- 年、月、日の順に、ピリオドで区切る形で記述する。
- 日の後に、半角スペースを開けてから時間、分、秒の順にコロンで区切る形で記述する。
- 大文字アルファベットのD以降の記述内容をシングルクォーテーション(‘)で挟む
最後までお読みいただきありがとうございました<m(__)m>
<参照>
コメント