MQL – programowanie robotów handlu automatycznego

MQL

2520
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 jest MQL?

MQL to język programowania, który rozszerza możliwości platformy MetaTrader. Język MQL jest bardzo podobny do innych, powszechnie wykorzystywanych języków programowania, które są podobne do języka C. Ta cecha języka MQL pozwala na jego szybkie opanowanie przez profesjonalnych programistów jak i programistów amatorów. Bez żadnej przesady można powiedzied, że opanowanie języka MQL to kwestia kilku tygodni nawet dla niewprawnego programisty. Co więcej, można napisad prostą (i działającą!) automatyczną strategię inwestycyjną już po pierwszym dniu nauki.

Programowanie MQL

MQL stworzony przez firmę MetaQuotes daje nam ogromne możliwości programistyczne . Dzięki MQL możemy tworzyć tak zwane Roboty Forex jak i rożnego rodzaju wskaźniki, które będą działały na platformie Meta Trader.

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.