iBarShift()関数は、指定した通貨ペア・時間軸・日時におけるバーの位置を取得するために使用します。
iBarShift()関数は、以下のように定義されています。
int iBarShift(
string symbol,
int timeframe,
datetime time,
bool exact
);
各引数の意味は、以下のとおりです。
- string symbol
指定した日時におけるバーの位置を取得したい通貨ペア名を指定します。
通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアの指定した日時におけるバーの位置を取得したい場合は、「NULL」と記述します。 - int timeframe
以下の表に従って、指定した日時におけるバーの位置を取得したい時間軸を指定します。timeframeの種類
種 類 定 数 内 容 PERIOD_CURRENT 0 現在の時間足 PERIOD_M1 1 1分足 PERIOD_M5 5 5分足 PERIOD_M15 15 15分足 PERIOD_M30 30 30分足 PERIOD_H1 60 1時間足 PERIOD_H4 240 4時間足 PERIOD_D1 1440 日 足 PERIOD_W1 10080 週 足 PERIOD_MN1 43200 月 足 - datetime time
バーの位置を取得したい日時を指定します。 - bool exact
指定した日時におけるバーが存在しない場合に返される値を指定します。
「false」と指定した場合は、指定した日時に最も近いバーの位置を返します。
「true」と指定した場合は、「-1」を返します。
戻り値
指定した通貨ペア・時間軸・日時におけるバーの位置を返します。
バーの位置は、指定した日時が現在のバーに相当する場合は「0」、1本前のバーに相当する場合は「1」、2本前のバーに相当する場合は「2」……と表されます。
指定した通貨ペア・日時におけるバーが存在しない場合は、第4引数の指定に従って、指定した日時に最も近いバーの位置、又は「-1」が返されます。
具体例
「ドル/円」の1時間足チャートにおける「2015/06/15 12:00」時点のバーの位置を取得したい場合は、以下のように記述します。
datetime sometime = D’2015.06.15 12:00′;
int shift =
iBarShift(“USDJPY”,PERIOD_H1,sometime,false);
Print(“Index of the bar for the time “,
TimeToStr(somtime),” is “,shift);