Tydzień temu pisaliśmy w tym miejscu, że programowanie można porównać do tworzenia przepisu na ciasto. Musimy podać rodzaj i ilość składników, a następnie pokazać instrukcje ich łączenia. Składniki to w programowaniu zmienne, czyli dane o różnych typach, które omówiliśmy w poprzednim odcinku tego cyklu. Dziś pójdziemy krok dalej i pokażemy kolejne elementy składni MQL, które pozwalają przeprowadzać na zmiennych odpowiednie operacje.
Zmienna tablicowa
Na początek, celem uzupełnienia poprzedniego materiału, chcieliśmy dodać, że zmienna nie musi przechowywać tylko jednej wartości. Tydzień temu pisaliśmy bowiem, że deklarując zmienną całkowitą STOP_LOSS, możemy za pomocą operatora przypisania „=" nadać jej wartość na przykład 50 pipsów (wówczas wyglądałoby to tak: int STOP_LOSS=50;). Jak jednak postąpić, gdy chcielibyśmy, aby zmienna przechowywała jednocześnie 10 wartości zlecenia? Można oczywiście stworzyć 10 zmiennych: STOP_LOSS1, STOP_LOSS2...STOP_LOSS10, i do każdej przypisać konkretną wartość. Będzie to jednak czasochłonne i niepotrzebnie rozbuduje kod. Wyjściem jest wykorzystanie tzw. tablicy. Jest to zmienna, która może przechowywać wiele wartości naraz, każdej nadając unikatowy indeks (numer). Tak jak zwykłą zmienną porównywaliśmy do pojedynczej szufladki na dane, tak tablicę można porównać do dużego mebla, który ma wiele ponumerowanych szufladek. Tablice deklaruje się podobnie do zwykłej zmiennej, tzn. na początek dajemy typ przechowywanej zmiennej, następne nazwę tablicy, liczbę rezerwowanych szufladek (liczba musi być w nawiasach kwadratowych) i na końcu dajemy średnik. Trzymając się przykładu ze stop lossem o 10 wartościach, tablica wyglądałaby następująco: int STOP_LOSS[10];. Warto tutaj pamiętać, że program numeruje szufladki od 0. Także pierwsza szufladka będzie miała indeks 0, a dziesiąta indeks 9. Dla lepszego zrozumienia działania tablic odsyłamy do pierwszej części podlinkowanego w nawiasie filmu (http://miroslawzelent.pl/kurs-c++/tablice-w-c++/).
Operacje logiczne i relacji
Budując w MQL strategie, będziemy musieli tworzyć odpowiednie instrukcje, mówiące komputerowi, jak ma postępować na rynku. W tym celu wykorzystuje się operacje różnego typu. Jednym z rodzajów, bardzo ważnym i dość intuicyjnym, są operacje logiczne, które pozwalają sprawdzić, czy dany warunek jest spełniony czy nie. Za pomocą właśnie tych operacji pokazujemy programowi, jakie decyzje ma podejmować. Załóżmy na przykład, że chcemy, by program kupował tylko wtedy, gdy wskaźnik RSI(14) jest poniżej 20 pkt i jednocześnie ADX(14) jest powyżej 15 pkt. W tym celu musimy wykorzystać operację logiczną „AND" (oraz), czyli iloczyn logiczny, który zwraca prawdę tylko wtedy, gdy oba warunki są spełnione. W MQL operatorem logicznym dla operacji „AND" jest „&&". Zapis warunku z przykładu wyglądałby więc mniej więcej tak: RSI(14)15.
Ponadto istnieją jeszcze dwie operacje logiczne. Pierwsza to „OR" (lub), czyli suma logiczna, która zwraca prawdę, gdy jeden z podanych warunków jest prawdziwy. Operatorem w MQL jest znak „||". Drugą operacją jest negacja, która zwraca wartość przeciwną do negowanej. Operatorem w MQL jest znak „!".
W sprawdzaniu warunków logicznych często będziemy korzystać z operacji relacji, które pozwalają porównać do siebie zmienne. Mowa tutaj o następujących relacjach: równa się (operator „=="), różne od („!="), mniejsze od („"), mniejsze lub równe („="). Wynikiem operacji relacji jest zawsze prawda lub fałsz, reprezentowane przez liczby całkowite odpowiednio 1 i 0. Tak jak we wcześniejszym przykładzie z RSI i ADX program musiał sprawdzić, czy oba wskaźniki przyjmują odpowiednie wartości, uprawniające do zajęcia odpowiedniej pozycji na rynku.