W chwili uruchomienia w MetaTrader 4 programu MQL4 (skryptu, wskaźnika lub strategii automatycznej) w pamięci komputera automatycznie tworzą się pewne predefiniowane zmienne i predefiniowane tablice. Na przykład, predefiniowana zmienna _Symbol przechowuje nazwę finansowego instrumentu tego okna notowań, na którym został uruchomiony program MQL4. Z kolei predefiniowana zmienna _Digits przechowuje ilość znaków po przecinku, które określają dokładność pomiaru ceny tegoż finansowego instrumentu (symbolu).
W utworzonym wcześniej skrypcie o nazwie Test, wpisz następujący kod:
#property strict
void OnStart()
{
//---
Alert("Symbol = " , _Symbol ,
". Dokładność pomiaru ceny = " , _Digits , " znaków.");
}
Skompiluj skrypt, a następnie w MetaTrader 4 uruchom go na przykład na EURUSD.
Rys. 1. Okienko komunikatu Alert.
Widzisz, nigdzie w kodzie (kod 1) nie zadeklarowaliśmy ani _Symbol ani _Digits, a jednak skrypt poprawnie określił nazwę finansowego instrumentu (EURUSD) oraz ilość znaków po przecinku (5). Dzięki temu, że programy przygotowane w MQL4 potrafią samodzielnie tworzyć pewne zmienne, ułatwia to pracę programisty. Istnieje wiele takich predefiniowanych zmiennych i myślę, że w chwili jak twoje programy zaczną być coraz większe, docenisz ich przydatność.
Dla lepszego zrozumienia predefiniowanych tablic, przypomnijmy sobie jaką informację zawierają świece, z których są tworzone wykresy notowań. Najedź myszką na prawą świecę dla dowolnego symbolu (na poniższym rysunku 2 jest to GBPUSD, przedział czasowy 30 minut (M30)), tak aby pojawiła się podpowiedź.
Rys. 2. Dane notowań świecy.
Widzimy tu sześć wartości: czas utworzenia świecy (Time), cenę jej otwarcia (Open), najwyższą cenę (High), najniższą cenę (Low), cenę zamknięcia (Close) oraz ilość tików (Volume). Jak uzyskać te dane za pomocą MQL4? Są one przechowywane w następujących predefiniowanych tablicach: Time[], Open[], High[], Low[], Close[] oraz Volume[].
W rozdziale poświęconym tablicom podkreśliłem, że indeksacja elementów tablic rozpoczyna się od zera [0]. W przypadku notowań bieżąca świeca, tj. pierwsza z prawej strony, ma indeks 0. Po lewej stronie od niej ma indeks 1 itd. Popatrz na poniższy rysunek.
Rys. 3. Indeksacja świec na wykresie notowań.
Niżej przygotowałem skrypt, który pokaże nam ceny Open, High, Low i Close świecy z indeksem 3.
#property strict
void OnStart()
{
//---
Alert("Świeca z indeksem " , 3,
" ma cenę Open = " , Open[3],
" High = " , High[3],
" Low = " , Low[3],
" Close = " , Close[3]);
}
Po uruchomieniu tego skryptu w oknie notowań, najedź myszką na świecę z indeksem 3 (rys. 3), tak aby pojawiła się informacja o właściwościach tej świecy (rys. 2) i porównaj je z danymi w okienku komunikatu. Uruchom skrypt na innych symbolach (instrumentach finansowych), np. USDJPY, AUDUSD przy różnych ustawieniach przedziału czasowego, np. M30, H4 i porównaj uzyskane dane.