【MQL4テクニック】ローソク足のオープン時間を取得する方法。Time[]とiTime()の違いとは?
ローソク足のオープン時間(足形成の開始時間)を取得するための、2種類の方法を紹介します。
Time[]を使用する
Time[]
は、各ローソク足のオープン時間を格納している定義済み配列です。
ローソク足のシフト数をTime[]
のインデックスに指定することで、シフト数に対するオープン時間を取得することが出来ます。
サンプルコード
//今足のオープン時間
datetime nowBar = Time[0];
//N本前のローソク足のオープン時間
int shift = 1; //今回の取得するローソク足は1本前のものです。
datetime oldBar = Time[shift];
//一番古いローソク足のオープン時間
datetime oldestBar = Time[Bars - 1];
Barsには、チャートに表示されているローソク足の数が格納されています。
よってBars – 1をインデックス番号に指定することで、一番古いローソク足のオープン時間を取得することもできます。
iTime関数を使用する
iTime()
関数は、指定したシフト数に対するローソク足のオープン時間を返します。
Time[]
とは違い、通貨ペアと時間足を指定することが可能です。
datetime iTime(string symbol, int timeframe, int shift);
引数の意味は以下です。
引数名 | 詳細 |
---|---|
symbol | 通貨ペア名を指定します。 適用したチャートの通貨ペアは、NULLまたはSymbol()と指定します。 |
timeframe | 時間足を指定します。 指定できる時間足はこちら 適用したチャートの時間足は、0またはPeriod()と指定します。 |
shift | ローソク足のシフト数を指定します。 |
サンプルコード
//チャートに表示されている今足のオープン時間を取得します
datetime barTime1 = iTime(Symbol(), Period(), 0);
//通貨ペア:USDJPY 時間足:1H N本前のローソク足のオープン時間を取得します。
int shift = 1; //今回の取得するローソク足は1本前のものです。
datetime barTime2 = iTime("EURPY", PERIOD_H1, shift);
Time[]とiTime()の使い分け
int shift = 0; //シフト数は任意
datetime barTime1 = Time[shift];
datetime barTime2 = iTime(Symbol(), Period(), shift);
上記二つは同じ結果を得られるので、「同じものでは?」「どうやって使い分けるの?」と思う方もいるかもしれません。
EAやインジケータを適用したチャートに表示されている、通貨ペアや時間足をそのまま指定したい場合はTime[]
で問題ありません。
しかし、「チャートの時間足を切り替えても、常に4時間足のオープン時間を取得したい!」という場合には、iTime()
関数を使用して引数に「PERIOD_H4」を渡してあげる必要があります。
また、EAやインジを適用したチャートの通貨ペアはUSD/JPYだが、取得したい情報がEUR/JPYのものである場合でもiTime()
関数が活躍します。
- チャートの通貨ペア・時間軸のまま取得したいときはTime[]
- それ以外の情報を取得したい・常に同じ情報を取得したい場合はiTime()関数
と使い分けましょう。