Funkcja int iBarShift() zwraca indeks świecy dla odpowiedniego instrumentu finansowego i przedziału czasowego, która pasuje do określonego czasu. Więcej informacji można znaleźć w specyfikacji MQL4.
Skrypt do wyświetlenia indeksu świecy dla bieżącego instrumentu finansowego _Symbol , bieżącego przedziału czasowego PERIOD_CURRENT i czasu, który mieści się w poszukiwanej świecy. Ostatni czwarty parametr funkcji exact ma wartość domyślną false, co oznacza, że jeśli dla określonego czasu nie ma świecy (dziura w historii), funkcja zwróci indeks innej najbliższej świecy. Jeśli exact ustawić jako true, funkcja zwróci -1.
#property strict
void OnStart()
{
//---
string symbolName = _Symbol; // bieżący instrument finansowy
ENUM_TIMEFRAMES timeFrame = PERIOD_CURRENT; // bieżący przedział czasowy
datetime timeFind = D'2016.11.03 12:00'; // czas świecy
bool exact = false; /* sposób informowania, jeśli
świecy nie znaleziono */
//--- znaleźć indeks świecy
int indexBar = iBarShift(symbolName, timeFrame, timeFind, exact);
//--- wyświetlić wynik
Print("Indeks świecy bieżącego symbolu, timeframe-u i czasu 2016.11.03 12:00 = ",indexBar);
}
Rys. 1. Przykład stosowania funkcji iBarShift().
Skrypt do wyświetlenia indeksów świec dla różnych instrumentów finansowych, przedziałów czasowych i czasu.
#property strict
void OnStart()
{
//--- znaleźć indeksy świec
int indexBar_EURUSD_H1_time1 = iBarShift("EURUSD", PERIOD_H1, D'2016.11.03 11:59:59');
int indexBar_EURUSD_H1_time2 = iBarShift("EURUSD", PERIOD_H1, D'2016.11.03 12:00:00');
int indexBar_CADJPY_D1 = iBarShift("CADJPY", PERIOD_D1, D'2016.07.22 00:00');
//--- wyświetlić wyniki
Print("Indeks świecy EURUSD, H1, 2016.11.03 11:59:59 = ",indexBar_EURUSD_H1_time1);
Print("Indeks świecy EURUSD, H1, 2016.11.03 12:00:00 = ",indexBar_EURUSD_H1_time2);
Print("Indeks świecy CADJPY, D1, 2016.07.22 00:00 = ", indexBar_CADJPY_D1);
}
Rys. 2. Przykłady stosowania funkcji iBarShift().