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 wymyślimy nazwę zmiennej spełniającą wymienione warunki, musimy jeszcze określić jej typ. Zmienne mogą przechowywać liczby całkowite lub rzeczywiste, ciągi znaków, pojedyncze znaki, wartość logiczną prawda lub fałsz, kolor lub datę i godzinę. W dalszej części materiału omówimy wszystkie typy, ale w tym miejscu, nawiązując do przykładu ze stop lossem, podpowiemy tylko, że nasza zmienna byłaby 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".
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.
Typy danych
W języku MQL dostępnych jest siedem typów danych. Omówimy je po kolei. Zacznijmy od już wspomnianego, czyli typu całkowitego, który ma zastrzeżoną nazwę „int". Jest to po prostu liczba całkowita, pochodząca z przedziału (-2147483648, 2147483647). Ten typ zmiennych można wykorzystywać chociażby do oznakowania numeru świecy na wykresie czy liczby otwartych pozycji.
W sytuacji, gdy chcemy korzystać z liczb, które posiadają część ułamkową, musimy wykorzystać typ zmiennoprzecinkowy, który ma zastrzeżoną nazwę „double". Są to liczby z przedziału (-1,7 * E-308 do 1,7 * E308 ). Jest to więc typ danych bardziej precyzyjny od „int", ale za to zajmuje więcej miejsca w pamięci komputera (rezerwowany jest szerszy zakres niż w przypadku liczb całkowitych). Warto dodać, że część dziesiętną oddziela się za pomocą kropki, a nie przecinka. Typ double może być w MQL wykorzystywany chociażby wtedy, gdy zmienną tworzymy na bazie aktualnego kursu walutowego EUR/USD, który podawany jest z precyzją pięciu miejsc po przecinku. Jeśli na przykład zadeklarujemy zmienną poziom_wejścia, która jest równa kursowi otwarcia sesji powiększonemu o aktualną wartość wskaźnika ATR dla 10 sesji, to będziemy musieli użyć zapisu: „double poziom_wejscia;" (do zmiennej poziom_wejścia musiałaby być następnie przypisana odpowiednia wartość będąca sumą ceny otwarcia i ATR).