Co to jest zmienna? Pierwsze kroki z programowaniem mql4
Co to jest zmienna? Możemy zacząć się zastanawiać nad tym, przeglądając dokumenty związane z programowaniem. Prawdę mówiąc to „kodując”, w dowolnym języku programowania, natrafiamy na specyficzne określenia. Wśród nich znajdą się takie enigmatyczne nazwy, jak funkcja, pętla oraz zmienna. Dlaczego zaczynam od zmiennej? Ponieważ to na niej zazwyczaj stawiamy pierwszy krok.
Kiedy tworzymy w mql4 linijki kodu, nadajemy wartości poszczególnym danym. To właśnie są zmienne. Czemu nazwane są zmiennymi? Ponieważ, tworząc daną przypisujesz jej wartość i możesz też ją zmieniać. Stąd też pojawia się określenie zmiennej. Natomiast zmienna może mieć przypisaną różną wartość. Od wartości liczbowej, przez wartość tekstową, aż do wartości prawda/fałsz. W ten sposób mamy do czynienia z różnymi typami danych i każdy z nich będzie miał inne zastosowanie.
Zmienna integer – liczby naturalne
Podstawowym typem zmiennej jest integer, która przyjmuje wartości liczb naturalnych. Możemy stworzyć np. zmienną a i przypisać jej wartość 1. Wcześniej jednak musimy oznaczyć ją jako zmienną typu integer, czyli wpisać wartość int przed jej nazwą.
Całość kodu, który umieścimy wewnątrz skryptu, będzie wyglądał w następujący sposób:
void OnStart()
{
int a = 1;
}
Tak jak w języku C++ średnik na końcu jest obowiązkowy 🙂 Gdy mamy stworzoną zmienną, to za każdym razem, gdy będziemy chcieli dokonywać jakichkolwiek obliczeń na niej, czy z nią, to wystarczy że ją wywołamy wpisując a. Przykładowo:
void OnStart()
{
int a = 1;
int b = 2;
int c = a + b;
}
Stworzyliśmy zmienną a, której przypisaliśmy wartość 1. A także zmienną b, której przypisaliśmy wartość 2 oraz zmienną c, której wartość to suma dwóch poprzednich. Zdaję sobie sprawę, że te przykład są banalne, ale głównie ze względu na to by każdy, bez względu na poziom zaawansowania, mógł zrozumieć o co w tym chodzi. Pamiętaj także, że wielkość liter ma znaczenie. Dla mql4 zapis „a”, to zupełnie co innego niż „A”. To teraz do rzeczy.
Do czego mielibyśmy wykorzystać typ zmiennej integer? Do takich zmiennych, którym możemy przypisać wartość liczby naturalnej. Przykładowa funkcja, która korzysta z tego typu danych, to funkcja OrdersTotal(). Funkcja ta, która jest już wbudowana na platformie MetaTrader4, zwraca liczbę otwartych i oczekujących zleceń. Zapewne zgodzisz się ze mną, że bardzo ciężko byłoby otworzyć np. 0.9 zlecenia. Naturalnie możemy nie mieć otwartego żadnego zlecenia (czyli wartość równa 0), bądź 1 zlecenie. Co innego, w przypadku gdybyśmy chcieli użyć funkcji, która zwraca liczbę otwartych lotów. Na rynku cfd możemy otworzyć np. 0.5 lota, czy 3.5 lota. W takim wypadku przyda nam się inny typ danych – double.
Typ zmiennej double – liczby zmiennoprzecinkowe
Gdy chcemy stworzyć zmienną, które miałaby prezentować wartości z dokładnością, np. do kilku miejsc po przecinku, to skorzystamy ze zmiennej double. Przyda się w przypadku zmiennej, która odwołuje się do ceny pary walutowej. Między ceną 1.0000, a 2.0000 głównej pary EURUSD, jest 9999 pipsów do zagospodarowania, więc nie ma co odwoływać się do typu integer. Przykładowy zapis zmiennej typu double prezentuje się tak:
void OnStart()
{
double Z = 1.2564;
}
Można by zacząć się zastanawiać, po co właściwie podział na integer oraz double, skoro można by używać, tylko tego drugiego? Generalnie, warto wiedzieć, że integer zajmuje 4 bajty pamięci, podczas gdy double zajmuje ich 8. Dlatego też korzystanie z double, gdy nie ma takiej potrzeby, obciąża pamięć.
Co to jest zmienna typu prawda/fałsz? Czym jest bool?
Typ boolean (bool) to logiczny typ danych. Przyjmuje on dwie wartości: prawda, albo fałsz. Jeśli stawiasz pierwsze kroki w programowaniu, możesz zacząć się zastanawiać, o co w tym chodzi? O ile zrozumiałe jest przypisywanie wartości liczby naturalnej, czy zmiennoprzecinkowej, to po co miałbym tworzyć zmienną, która jedyne co zwraca to true albo false?
Wyobraźmy sobie następującą sytuację:
Obserwując rynek uznałeś, że w sytuacji, w której zamknięcie sesji ostatniego dnia, miało miejsce powyżej dnia poprzedniego, oznacza trend wzrostowy. Z kolei w przypadku, w którym ostatni dzień zamknął się poniżej dnia poprzedniego, mamy trend spadkowy. Gdy trend się wyklaruje, chcesz podjąć kolejne działania. W takim wypadku możesz stworzyć następujące zmienne – zakładając że skrypt jest implementowany na interwale dziennym:
void OnStart()
{
bool TrendWzrostowy = Close[1]>Close[2];
bool TrendSpadkowy = Close[1]<Close[2];
}
Właśnie stworzyłeś zmienne, które przyjmują wartość prawda, tylko wtedy, gdy zdefiniowany przez Ciebie trend (wzrostowy, bądź spadkowy) zaistnieje. W ten sposób możesz w dalszej części kodu ustalić, co ma się stać, gdy dany trend się wyklaruje (czyt. gdy zmienna bool przyjmuje wartość true). Możesz także stworzyć działanie, gdy nie ma żadnego trendu (gdy zmienna bool przyjmuje wartość false) . Oczywiście możesz przyjąć inne założenia trendu i dowolnie je zmienić. Możesz też stworzyć tak kod, by nie być zależny od tego, na jakim interwale zostanie on włączony. Wszystko zależy od Twojej pomysłowości.
Pozostałe typy zmiennych
Oczywiście podane wcześniej typy nie są jedyne. Jest ich znacznie więcej. Prostym przykładem jest wykorzystanie zmiennej typu datetime, która zwraca wartości daty oraz czasu. Dodatkowo możemy ustawić zmienną typu string, która zwraca nam wartości tekstowe. Obie zmienne będą prezentowały się w następujący sposób:
void OnStart()
{
datetime PoczatekRoku_2021 = D'2021.01.01 00:00';
string Tekst = "Szczęśliwego Nowego Roku";
}
Pamiętaj też, że dane dzielą się na kilka kategorii. Może się okazać, że tworząc kod, zwykły typ int okaże się nie wystarczający i będziesz musiał skorzystać np. z typu long. Ewentualnie może się okazać, że chcąc oszczędzić pamięć wystarczy ci w zupełności char.
Jest wiele typów zmiennych. W związku z tym warto przejrzeć dokumentację, która pomoże Ci odnaleźć się w gąszczu sporej ilości informacji. Dokumentacja ta dostępna jest na platformie MetaTrader4. Trzeba wejść w MetaEditor. Następnie wystarczy wybrać Pomoc -> MQL4 References.