Funkcja int iHighest() zwraca indeks świecy, która dla odpowiedniego instrumentu finansowego i przedziału czasowego na określonym odcinku ma największą wartość. W przypadku błędu zwraca -1. 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 , która ma najwyższą wartość cen open MODE_OPEN wśród świec na całym wykresie WHOLE_ARRAY począwszy od świecy z indeksem 0.
#property strict
void OnStart()
{
//---
string symbolName = _Symbol; // bieżący instrument finansowy
ENUM_TIMEFRAMES timeFrame = PERIOD_CURRENT; // bieżący przedział czasowy
int typeMode = MODE_OPEN; // typ ceny, open
int count = WHOLE_ARRAY; // zakres, cały wykres
int startPos = 0; // indeks świecy początkowej
//--- znaleźć indeks świecy z najwyższą wartością open
int indexBarHighest = iHighest(symbolName, timeFrame, typeMode, count, startPos);
//--- sprawdzić czy nie wystąpił błąd
if(indexBarHighest == -1)
{
Print("Błąd wywołania iHighest(). Błąd = ",GetLastError());
return;
}
//--- wyświetlić wynik
Print("Od świecy z indeksem ",startPos," wśród wszystkich świec",
" najwyższy open ma świeca z indeksem ",indexBarHighest);
}
Rys. 1. Przykład stosowania funkcji iHighest().
Skrypt do wyświetlenia indeksów świec dla GBPUSD, H1, które mają najwyższe wartości cen open, low, high, close oraz wolumenu tick-owego. Poszukiwania rozpoczynają się od świecy z indeksem 4 wśród kolejnych 20 świec, tj. od indeksu 4 do 23 włącznie.
#property strict
void OnStart()
{
//--- znaleźć indeks świecy z najwyższymi wartościami:
int indexBarHighestOpen = iHighest("GBPUSD", PERIOD_H1, MODE_OPEN, 20, 4); // open
int indexBarHighestLow = iHighest("GBPUSD", PERIOD_H1, MODE_LOW, 20, 4); // low
int indexBarHighestHigh = iHighest("GBPUSD", PERIOD_H1, MODE_HIGH, 20, 4); // high
int indexBarHighestClose = iHighest("GBPUSD", PERIOD_H1, MODE_CLOSE, 20, 4); // close
int indexBarHighestVolume = iHighest("GBPUSD", PERIOD_H1, MODE_VOLUME, 20, 4); // volume
//--- sprawdzić czy nie wystąpił błąd
if(indexBarHighestOpen == -1 ||
indexBarHighestLow == -1 ||
indexBarHighestHigh == -1 ||
indexBarHighestClose == -1 ||
indexBarHighestVolume == -1)
{
Print("Błąd wywołania iHighest(). Błąd = ",GetLastError());
return;
}
//--- wyświetlić wynik
Print("1) Od świecy z indeksem 4 wśród kolejnych 20 dla GBPUSD, H1 najwyższe wartości:");
Print("2) świeca z indeksem ",indexBarHighestOpen," ma najwyższą cenę open.");
Print("3) świeca z indeksem ",indexBarHighestLow," ma najwyższą cen low.");
Print("4) świeca z indeksem ",indexBarHighestHigh," ma najwyższą cen high.");
Print("5) świeca z indeksem ",indexBarHighestClose," ma najwyższą cen close.");
Print("6) świeca z indeksem ",indexBarHighestVolume," ma największy wolumen tick-owy.");
}
Rys. 2. Przykłady stosowania funkcji iHighest().