Dostęp do danych historycznych:   iHighest()

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.


Przykład 1

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().


Przykład 2

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_CLOSE20, 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().