Dwa tygodnie temu pisaliśmy w tym miejscu o programistycznych możliwościach platformy transakcyjnej Meta Trader. W dzisiejszym i kilku następnych artykułach z cyklu „Profesjonalny inwestor" chcemy rozszerzyć tę tematykę. Przybliżymy więc czytelnikom specyfikę programowania w języku MQL. Pokażemy, z jakich elementów składa się ów język i jak można je łączyć, by budować własne wskaźniki, skrypty lub automaty inwestycyjne. Dziś omówimy typy danych, z których korzystają programy pisane w MQL.
Szufladka na dane
Każdy program, bez względu na to, do czego służy, musi przechowywać rozmaite informacje, czyli dane. W tym celu tworzy się zmienną, czyli coś w rodzaju szufladki o określonej wielkości pamięci, w której owe dane są umieszczane. W przypadku narzędzi inwestycyjnych mogą to być dane dotyczące na przykład odległości zlecenia stop loss od ceny otwarcia pozycji.
Aby budowany przez nas program przechował te dane w pamięci, musimy mu podać dwie kluczowe kwestie. Po pierwsze, nazwę (tzw. identyfikator) owej szufladki (zmiennej), a po drugie, rodzaj przechowywanych informacji, czyli typ danych (na przykład liczba całkowita). Trzymając się przykładu z poziomem stop lossa, moglibyśmy nadać zmiennej nazwę (identyfikator) SL albo stop_loss, albo zlecenie_obronne. Mamy tu spore pole do popisu, ale musimy trzymać się pewnych ograniczeń wynikających ze specyfiki języka programowania. Nazwy zmiennych nie mogą zawierać polskich znaków ani spacji (zamiast odstępu używa się podkreślenia). Dozwolone znaki to: (a..z), (A...Z), podkreślenie ( _ ) i cyfry (0...9). Tutaj należy pamiętać, że zmienne o nazwach ABC i abc to dwa zupełnie różne byty. Co istotne – nazwa zmiennej nie może się zaczynać od liczby, a jej długość nie może przekraczać 31 znaków. Ponadto nie można korzystać z słów zastrzeżonych, które są identyfikatorami wbudowanymi już w MQL i mają przypisaną ściśle określoną funkcję (na przykład operator warunkowy „if").
Jeśli już wymyślimy nazwę zmiennej spełniającą wymienione warunki, musimy jeszcze określić jej typ. Zmienne mogą przechowywać liczby całkowite, liczby rzeczywiste, ciągi znaków, pojedyncze znaki, wartość logiczną prawda lub fałsz, kolor lub datę i godzinę. Poniżej wyjaśnimy szczegółowo wszystkie typy, ale w tym miejscu, nawiązując do przykładu ze stop lossem, podpowiemy tylko, że nasza zmienna byłaby po prostu liczbą całkowitą pokazującą ilość pipsów, o jaką zlecenie oddalone jest od kursu otwarcia pozycji. Ten typ danych ma w MQL swoją nazwę zastrzeżoną „int" od angielskiego „integer".
Warto jeszcze dodać, że tworzenie zmiennej w MQL wygląda następująco: najpierw podajemy typ przechowywanych danych, następnie dajemy odstęp (spację) i wpisujemy nazwę zmiennej. Na koniec dajemy średnik (brak średnika jest bardzo częstym błędem, zwłaszcza u początkujących programistów). W przykładzie ze stop lossem utworzona zmienna wyglądałaby następująco: „int stop_loss;". W fachowym języku takie utworzenie zmiennej to deklaracja. Jeśli przypiszemy zmiennej jakąś wartość początkową (na przykład: int stop_loss=50;), to mówimy już o inicjacji zmiennej. Jakiego typu zmienne możemy wykorzystywać podczas programowania w MQL?