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 platformie (mForex Trader) po spełnieniu przez rynek warunków zaprogramowanych w naszej strategii inwestycyjnej. Składnia języka MQL w wielu kwestiach jest podobna do języka programowania C, jednak posiada własną specyfikę i jest wzbogacona o funkcje “traderskie”.
Gdzie mogę pisać programy w MQL?
Środowiskiem wykonawczym programów w języku MQL jest platforma handlowa mForex Trader. Natomiast środowiskiem programistycznym służącym do ich tworzenia jest MetaEditor, zaimplementowany do aplikacji mForex Trader.
Jakie programy 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. Co zatem dokładnie możemy stworzyć za pomocą języka MQL? To zależy od programu. Upraszczając mamy do czynienia z trzema typami programów.
- skrypt (Script) – krótki program zawierający kilka zdefiniowanych czynności do wykonania, po których skończeniu automatycznie przestaje działać. Czynnościami wykonywanymi przez program mogą być na przykład: jednoczesne zamknięcie wszystkich transakcji lub wszystkich transakcji na określonym instrumencie.
- wskaźnik (Custom Indicator) – program służący do graficznej prezentacji algorytmów analizy technicznej danego instrumentu (np. średnia krocząca, MACD, RSI, inne).
- automatyczna strategia inwestycyjna (Expert Advisor, skrót EA) – zaawansowany program, który obejmuje wszystkie elementy handlu: od analizy wykresu w celu wykrycia sygnału oraz otwarcia pozycji, poprzez prowadzenie pozycji, aż do jej zamknięcia.
Dlaczego moja strategia (EA) nie działa? Nie mogę wysłać zlecenia!
Część dających się znaleźć w Internecie strategii (EA) działa tylko jeżeli tryb realizacji zlecenia zdefiniowany jest przez dom maklerski jako „Egzekucja natychmiastowa”. W powyższym trybie realizacji, charakterystycznym dla domów maklerskich działających w modelu Market Maker, funkcja OrderSend() umożliwia jednoczesne składanie zlecenia i ustawianie wartości ST/TP. Z tego powodu w sieci często napotkać można poniższy kod:
OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, SL, TP, "Moje zlecenie")
Platforma mForex Trader korzysta natomiast z tzw. trybu „Egzekucji rynkowej” w modelu ECN, w którym zlecenia przekazywane są bezpośrednio do dostawców płynności, co jest równoznaczne ze zrealizowaniem transakcji po najlepszych cenach oczekujących zleceń przeciwstawnych. W trybie egzekucji rynkowej parametry SL/TP w funkcji OrderSend() powinny być ustawione na 0. Po złożeniu zlecenia należy je zmodyfikować ustawiając pożądane parametry, co możemy osiągnąć posługując się poniższym kodem:
// Zloz zlecenie I sprawdz czy zostalo poprawnie zrealizowane ticket =OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, 0, 0, "Moje zlecenie"); // orderSend zwraca -1 w przypadku bledu if(ticket >=0) { // Sproboj zaznaczyc zlecenie if(OrderSelect(ticket, SELECT_BY_TICKET)==TRUE) { // Modyfikuj zlecenie i sprawdz, czy modyfikacja zakonczyla sie pomyslnie if(OrderModify(OrderTicket() ,OrderOpenPrice(), SL, TP ,0)==FALSE) { Print("Błąd w modyfikacji zlecenia : ",GetLastError()); } } else { Print(“Błąd w wybieraniu zlecenia : ”, GetLastError()); } } else { Print("Błąd w zleceniu :",GetLastError()); }
Dobrą praktyką jest sprawdzanie zwracanych przez funkcje wartości w celu obsługi ewentualnych błędów.
Gdzie zacząć naukę MQL'a?
- http://book.mql4.com/ - oficjalny kurs MQL firmy Meta Quotes
- http://docs.mql4.com/ - oficjalna dokumentacja języka MQL
- https://www.mql5.com/en/code/mt4/experts/ - przykłady gotowych strategii do MT4
Źródła polskojęzyczne:
- Forum forex-nawigator.biz - dział z programowaniem zawiera kurs MQL'a po polsku dla zalogowanych użytkowników