MQL – programowanie robotów handlu automatycznego

MQL - roboty inwestycyjne

Chciałbyś inwestować na rynkach finansowych, ale na przykład pracujesz na etacie i najzwyczajniej w świecie brakuje Ci czasu, by na bieżąco śledzić notowania i analizy wykresów? Jeśli lubisz programować, możesz poradzić sobie z tym dylematem. Być może idealnym rozwiązaniem okaże się zatrudnienie robota inwestycyjnego, który będzie handlował zamiast Ciebie? Jak to możliwe? Tutaj z pomocą przychodzi język MQL oraz cały system handlu automatycznego. W ramach tego kursu poznasz możliwości MQL, a ostatecznie stworzysz własnego robota, który bez Twojego udziału będzie potrafił zawierać transakcje inwestycyjne. Gorąco zapraszam do lektury.

Czym właściwie jest handel automatyczny?

Krótko mówiąc, chodzi o program komputerowy osadzony w platformie transakcyjnej, z której pobiera informacje o warunkach panujących w danym momencie na rynku. Na podstawie otrzymywanych danych oraz zaprogramowanej logiki dokładnie odwzorowującej naszą strategię inwestycyjną podejmuje decyzje o otwarciu nowej pozycji czy modyfikacji lub zamknięciu już istniejącej. Takie programy często nazywane są również robotami handlu automatycznego.

Handel automatyczny pozwala wyeliminować dwa bardzo ważne problemy występujące podczas handlu instrumentami finansowymi. Pierwszym z nich są tak zwane przegapione okazje. Robot może analizować rynek oraz dokonywać transakcji 24 godziny na dobę, każdego dnia, kiedy funkcjonuje giełda.

Drugi, bardzo ważny problem, zwłaszcza dla początkujących inwestorów, to uleganie emocjom. Psychika jest największą barierą dla skutecznego tradingu. Robot natomiast nie zawaha przed otwarciem pozycji, gdy nadarzy się okazja, nie zamknie przedwcześnie pozycji z obawy przed stratą wypracowanych zysków, będzie cierpliwie czekał na odpowiednie warunki, by ją zamknąć. Robot nie przetrzyma również stratnej pozycji w nadziei, że może trend się jeszcze odwróci. Zamknie ją bez wahania, gdy tylko na rynku zajdą zaprogramowane w nim warunki.

Oczywiście handel automatyczny posiada również swoje wady. Nie każdą strategię inwestycyjną da radę zamienić na robota handlu automatycznego. Poza tym, by działać, potrzebuje stałego dostępu do sieci. Bardzo ważne jest ponadto monitorowanie działania robota, nie można całkowicie polegać na komputerze. Należy okresowo weryfikować i oceniać wyniki jego pracy. Rynki przecież się zmieniają i z czasem obrana strategia może przestać być skuteczna, a co za tym idzie, może zacząć przynosić straty.

Czym jest MQL?

MQL (MetaQuotes Language) to język programowania stworzony przez firmę MetaQuotes. Służy do automatyzacji handlu poprzez tworzenie programów pozwalających zawierać transakcje inwestycyjne na rynku Forex po spełnieniu przez rynek zaprogramowanych warunków naszej strategii inwestycyjnej.

Gdzie mogę pisać w MQL?

Środowiskiem wykonywalnym programów zaimplementowanych w języku MQL jest platforma handlowa MetaTrader. Natomiast środowiskiem programistycznym służącym do ich tworzenia jest MetaEditor, dostarczany wraz z aplikacją MetaTrader. Przyjrzymy się im nieco w następnych rozdziałach, a dokładniej poznamy je w kolejnych artykułach. Wtedy stworzymy wspólnie kilka przykładowych programów opartych na MQL, a przede wszystkim – własnego robota do handlu automatycznego. Oryginalną wersję MetaTrader’a można ściągnąć z oficjalnej strony producenta: http://www.mql4.com/

Poszukując w sieci szczegółowych informacji na temat handlu automatycznego, MQL czy generalnie inwestowania na rynkach finansowych za pośrednictwem MetaTradera, na pewno natkniesz się na oznaczenie MT4. Jest to po prostu skrócona nazwa platformy MetaTrader opartej na MQL w wersji 4. Ja również w wielu miejscach tego artykułu będę stosował zamiennie tę nazwę.

Aktualnie silnie rozwijana jest wersja MQL 5, jednak w Polsce jeszcze niewielu brokerów ma w swojej ofercie platformę MT5 (MetaTrader oparty na MQL 5). Dlatego właśnie przedstawię w ramch tej serii przykłady zbudowane na MQL 4 oraz prezentowane w MT4.

Jeśli interesuje Cię MQL 5, zapraszam na oficjalną stronę tej wersji http://www.mql5.com/. Można tam również pobrać MT5 w wersji desktopowej oraz mobilnej. Czy MetaTrader zadziała na Macu? Podobno tak, ale osobiście nie sprawdzałem. Niemniej istnieją w sieci artykuły opisujące jego instalację na Mac OS. Niektórzy brokerzy udostępniają platformy dedykowane pod poszczególne systemy operacyjne.

Co mogę napisać w MQL?

Język MQL nie służy jedynie do handlu automatycznego. Jego możliwości równie dobrze da się wykorzystać w codziennym handlu bez użycia robotów. Co zatem dokładnie możemy stworzyć za pomocą języka MQL? To zależy od programu. Generalnie mamy do czynienia z trzema ich typami.

  • skrypt (Script) – krótki program zawierający kilka zdefiniowanych czynności do wykonania, po których skończeniu automatycznie przestaje działać. Aby ponownie uruchomić skrypt, wymagana jest ingerencja użytkownika.  Czynnościami wykonywanymi przez program mogą być na przykład operacje na otwartych pozycjach, takie jak zamknięcie pozycji, ustawienie albo przesunięcie stop loss lub take profit. Skrypty mogą być pomocne zwłaszcza przy niektórych powtarzalnych i monotonnych czynnościach, które nie wymagają dodatkowych procesów decyzyjnych.
  • wskaźnik (Custom Indicator) – program służący do graficznej prezentacji zaimplementowanych algorytmów analizy technicznej danego instrumentu. Wyniki takich obliczeń można umieścić na wykresie ceny (tak jak np. średnia krocząca) lub w oddzielnym oknie (jak np. oscylator stochastyczny).
  • automatyczna strategia inwestycyjna (Expert Advisor, w skrócie EA) – najbardziej zaawansowany program, który obejmuje wszystkie elementy handlu na rynku Forex: od analizy wykresu w celu wykrycia sygnału oraz otwarcia pozycji, poprzez prowadzenie pozycji, aż do jej zamknięcia.

Czasami można spotkać pojęcie półautomatycznej strategii inwestycyjnej. Polega ona na tym, że program analizuje wykres w poszukiwaniu sygnału otwarcia pozycji, jednak nie zawiera faktycznej transakcji. Gdy na rynku zaistnieją warunki zaprogramowanej strategii, program alarmuje o tym użytkownika, by ten mógl zweryfikować sytuację i samodzielnie podjąć decyzję o zajęciu pozycji lub o jej odrzuceniu.

Jak wygląda język MQL?

MQL w wielu kwestiach jest podobny do C, zatem jeśli znasz jego podstawy, nie będziesz mieć problemów z nauką opisywanego tutaj języka. Aby poznać składnię MQL, najlepiej skorzystać z dokumentacji. API MQL dostarcza większość podstawowych funkcji analizy technicznej, takich jak  MACD, RSI, STS, które możemy wykorzystać w swojej strategii inwestycyjnej. Warto wspomnieć tutaj również o trzech specjalnych funkcjach init(), deinit() oraz start(), które są podstawowymi elementami każdego programu pisanego w MQL.

W funkcji init() dokonujemy inicjacji zmiennych. Wywoływana jest ona przy uruchomieniu skryptu, wskaźnika lub strategii oraz po każdej zmianie instrumentu finansowego lub interwału czasowego.

Funkcja deinit() wywoływana jest automatycznie w przypadku zakończenia działania programu, zamknięcia okna wykresu, zmiany symbolu finansowego, zmiany przedziału czasowego wykresu lub zamknięcia MetaTradera.

Funkcja start() to najbardziej interesująca nas funkcja, która wywoływana jest za każdym razem, gdy podawany jest nowy poziom ceny danego instrumentu. Jej implementacja zajmie nam najwięcej czasu, ponieważ to w niej zawrzemy całą logikę naszej strategii. Funkcja start() nie występuje w skryptach.

Dokładniej przyjrzymy się tym funkcjom oraz poznamy kolejne elementy MQL podczas pisania poszczególnych rodzajów programów.

Pierwszy rzut oka na środowisko MetaEditor

Zanim zaczniemy programować, przyjrzyjmy się krótko najpierw samemu środowisku pracy. Możemy bezpośrednio uruchomić MetaEditor znajdujący się w katalogu instalacji MetaTradera albo uruchomić MT4 i dopiero z tego poziomu przejść do środowiska programistycznego. Da się to zrobić na trzy różne sposoby:

  1. klikając ikonkę mql_2_1 na pasku narzędzi,
  2. wybierając z menu „Narzędzia” -> „MetaQuotes Language Editor” (screen poniżej),
  3. wciskając klawisz F4.

mql_6

 

scr_011

W porównaniu do innych IDE, spotykanych często w pracy deweloperskiej, MetaEditor wygląda niesamowicie skromnie. Można wyodrębnić w nim cztery główne obszary. Pasek narzędzi znajdujący się na górze platformy, który dostarcza kilka podstawowych funkcjonalności, a najważniejsze i najczęściej używane z nich, to „Kompiluj” oraz „Terminal”.

scr_007

Pierwszy pozwala skompilować nasz program do pliku wykonywalnego, zrozumiałego dla platformy handlowej. Drugi natomiast pozwala uruchomić MetaTradera.

Centralną część MetaEditora stanowi okno edytora, czyli główne miejsce naszej pracy. To tu implementujemy programy handlu automatycznego oraz skrypty wspierające nas w czynnościach tradingowych.

Dalej po prawej stronie mamy panel Nawigatora. Tutaj widzimy pewną strukturę plików. Nie jest to jednak nasza struktura projektu, ale znajdują się tam wszystkie programy dostępne dla platformy transakcyjnej, które możemy tutaj edytować. W zakładce Słownik nawigatora mamy dostęp do całej dokumentacji języka MQL.

scr_010
scr_009

Wreszcie na samym dole znajduje się  panel, gdzie środowisko pokaże nam listę błędów wykrytych w naszym kodzie. W zakładce Pomoc wyświetli podgląd dokumentacji z wybranego w nawigatorze tematu.

scr_008

Podsumowanie

Szczerze odradzam stosowania nieznanych robotów inwestycyjnych, których w sieci można znaleźć całe mnóstwo. Musisz dokładnie wiedzieć, jak działa program, który będzie obracał Twoimi pieniędzmi. Przede wszystkim musisz dokładnie znać strategię, według której on działa, wiedzieć, przy jakich warunkach otwiera pozycję oraz przy jakich ją zamyka. Musisz ponadto umieć zastosować ją skutecznie w handlu manualnym. Moim zdaniem dopiero wtedy możesz zatrudnić takiego robota do ciężkiej pracy inwestycyjnej na rynkach finansowych.

Mam nadzieję, że udało mi się zainteresować Cię możliwościami języka MQL. W drugiej części tego kursu stworzymy swój pierwszy wskaźnik analizy technicznej i poznamy kilka niesamowicie ciekawych funkcjonalności tego języka. Serdecznie zapraszam.

Uwaga

Przedstawione wiadomości i przykłady w powyższym artykule oraz w kolejnych z tej serii stanowią wyłącznie materiał edukacyjny i nie można ich w żaden sposób wykorzystywać na realnym rachunku. Inwestowanie na rynkach finansowych wiąże się z dużym ryzykiem.

Źródła

http://book.mql4.com/ – oficjalny kurs MQL
http://docs.mql4.com/ – oficjalna dokumentacja

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *