W ostatnich kilku odcinkach cyklu poświęconego automatyzacji handlu opisaliśmy budowę składni języka MQL. Pokazaliśmy, czym są i do czego służą zmienne, operatory, instrukcje warunkowe, pętle oraz funkcje. Za pomocą tych elementów możemy budować wskaźniki, skrypty oraz strategie inwestycyjne. Dziś pokażemy, jak napisać prostą strategię, wykorzystując to, o czym dotychczas pisaliśmy. Od razu zaznaczmy, że nie będzie to zaawansowany automat zarabiający pieniądze. Jego celem jest tylko pokazanie, jak tworzyć kod programu. Będzie to prosty model bazujący na wyglądzie ostatniej świecy.
Tworzymy nowy EA
Budowanie automatu transakcyjnego zaczynamy oczywiście od uruchomienia Meta Editora, który kryje się w górnym pasku menu Meta Tradera, pod ikonką przypominającą książkę. Po otwarciu edytora należy wybrać „Plik", a następnie „Nowy". Wówczas pojawi nam się okno, w którym możemy wybrać, jaki rodzaj narzędzi będziemy tworzyć. Nas interesuje EA, czyli z ang. Expert Advisor, w wolnym tłumaczeniu oznaczający automatyczną strategię inwestycyjną. Kiedy klikniemy „Dalej", pokaże nam się okno kreatora, w którym możemy zdefiniować nazwę EA, podać autora oraz zdefiniować niektóre zmienne wejściowe, jak na przykład poziom stop loss i take profit. Nie musimy tego robić tutaj, będziemy mieć na to mnóstwo miejsca po otwarciu edytora kodu.
Po kliknięciu „Zakończ" otworzy nam się okno Meta Editora z wygenerowanym kodem startowym. Na obrazku obok jest pokazany przykład takiego kodu wraz z opisem poszczególnych elementów. U samej góry mamy tzw. dyrektywy preprocesora. Od innych elementów kodu odróżnia je to, że zaczynają się od znaku „#". Jak czytamy na stronach Bossafx.pl, „preprocessor jest to specjalny podprogram kompilatora MQL4, uruchamiany tylko podczas kompilacji kodu źródłowego mq4 do kodu wykonywalnego ex4". Na potrzeby tego odcinka nie musimy specjalnie zagłębiać się w ten temat.
Oprócz dyrektyw w kodzie startowym mamy również trzy funkcje specjalne, opisywane w poprzednim odcinku: OnInit() (odpowiedzialna za inicjalizację EA), OnDeinit() (odpowiedzialną za zakończenie działania EA) oraz OnTick() (używana tylko dla EA, by aktualizować działanie EA po każdym nowym ticku na wykresie).
Miejsce pomiędzy dyrektywami oraz funkcjami specjalnymi to przestrzeń globalna, w której będziemy deklarować zmienne i tworzyć własne funkcje. Istnieje niepisana zasada, że zmienne deklarujemy na górze (nad OnInit), a funkcje na dole (pod OnTick).