Expert Advisor (EA) to program uruchamiany w MetaTraderze, który może analizować dane i wykonywać operacje według zapisanej logiki. Może obsługiwać całą strategię albo tylko pomagać w ustawianiu zleceń. Automatyzacja zwiększa powtarzalność wykonania reguł, ale nie potwierdza ich opłacalności. Oceniaj osobno pomysł inwestycyjny, poprawność programu i warunki jego działania.
Czym EA jest, a czym nie musi być
Dla MT4 programy powstają w MQL4, a dla MT5 w MQL5. Plik EX4 nie działa bezpośrednio w MT5. Przeniesienie wymaga odpowiedniej wersji programu, sprawdzenia modelu rachunku i ponownych testów. Podobna nazwa robota w obu platformach nie dowodzi, że kod oraz sposób wykonania zleceń są identyczne.
EA może reagować na notowania, zdarzenia czasowe i inne zdarzenia dostępne w danej platformie. Nie każdy program składa nową transakcję przy każdym ticku. Może też być narzędziem półautomatycznym, np. wyliczać wolumen i czekać na decyzję użytkownika. Sam skrót EA nie określa strategii ani jej ryzyka.
Nie należy również twierdzić, że robot z definicji nie może używać uczenia maszynowego. MQL5 obsługuje m.in. modele ONNX. Obecność modelu AI nie zastępuje jednak testów danych, kosztów i zachowania w sytuacjach, których trening nie obejmował. Ocenie podlega to, co program robi, a nie etykieta w reklamie.
Gdzie program działa i co zostaje po jego zatrzymaniu
EA wykonuje się w uruchomionym środowisku terminala, lokalnym lub zdalnym. Po zamknięciu tej kopii programu nie będzie z niej nowych decyzji. Wysłanie zlecenia wymaga także połączenia, odpowiednich uprawnień i akceptacji przez brokera. Sam brak komunikatu błędu na wykresie nie dowodzi, że zlecenie zostało przyjęte.
Wcześniej przyjęte zlecenia oczekujące oraz SL i TP mogą pozostać na serwerze. Wyłączenie EA nie oznacza zamknięcia jego pozycji ani anulowania wszystkich dyspozycji. Jeżeli robot używa ukrytego stopa, który dopiero po spełnieniu warunku wysyła zamknięcie, utrata działania programu ma inne skutki niż przy zwykłym SL zapisanym u brokera.
VPS ogranicza zależność od domowego komputera, lecz wymaga nadzoru nad procesem, siecią i restartami. Przy przenoszeniu robota sprawdź, czy nie pracują równocześnie dwie kopie. Wbudowany hosting MetaQuotes ma własne zasady migracji i uprawnień, różne od zwykłego zdalnego Windows. Szczegóły porządkuje poradnik działania SL, TP i EA po wyłączeniu terminala.
95% wygranych może nadal oznaczać stratę
Skuteczność mówi, jaka część transakcji była zyskowna. Nie mówi, ile program traci podczas pozostałych operacji. Poniżej hipotetyczne 100 zamkniętych transakcji. Wyniki liczymy przed dodatkowymi kosztami; to przykład arytmetyczny, a nie statystyka konkretnego robota.
| Wariant | 95 wygranych po 10 USD | 5 przegranych | Łącznie przed kosztami |
|---|---|---|---|
| Mniejsza średnia strata | +950 USD | 5 × −100 USD = −500 USD | +450 USD |
| Większa średnia strata | +950 USD | 5 × −250 USD = −1 250 USD | −300 USD |
W obu wariantach wygranych jest 95%, a znak wyniku jest przeciwny. Sprawdź też otwarte pozycje: rosnące saldo zamkniętych transakcji może współistnieć z dużą niezrealizowaną stratą. Potrzebujesz krzywej Equity, obsunięć, ekspozycji i zasad powiększania pozycji, nie tylko procentu trafień.
Przykład podwajania wielkości po stracie pokazuje drugi problem. Kolejne jednostki 1, 2, 4, 8, 16 i 32 sumują się do 63. Program może długo pokazywać niewielkie wygrane, a następnie wymagać ekspozycji nieporównywalnej z początkową. Grid lub martingale trzeba analizować przez łączną pozycję i scenariusz graniczny, a nie przez wygląd typowego dnia.
OnTick nie musi wykonać się dla każdego otrzymanego ticka
Dokumentacja MQL5 podaje, że nowy NewTick nie trafia do kolejki programu, jeśli wcześniejszy jest już w kolejce albo właśnie przetwarzany. Długa obsługa zdarzenia może zatem zmienić obserwacje dostępne logice EA, nawet przy działającym połączeniu.
W kontrolowanym modelu obsługa trwa dokładnie 12 ms; kolejne notowania przychodzą w chwilach 0, 5, 10, 15 i 20 ms. Ceny to odpowiednio 1,1000; 1,1010; 1,1000; 1,1000; 1,1000. Program bada próg ≥ 1,1010 wyłącznie na cenie odczytanej na początku obsługi.
| Początek obsługi | Koniec obsługi | Odczytana cena |
|---|---|---|
| 0 ms | 12 ms | 1,1000 |
| 15 ms | 27 ms | 1,1000 |
Pięć otrzymanych notowań daje dwa wywołania i zero wykryć progu, choć jeden tick spełniał warunek. To nie oznacza automatycznie utraty tego ticka z całej historii terminala: kolejka wywołań i magazyn danych są różnymi rzeczami. Model nie uwzględnia innych zdarzeń ani dodatkowego pobierania historii.
Jeżeli reguła wymaga wychwycenia każdej krótkiej zmiany, samo zwiększenie częstości notowań jej nie zapewni. Zmierz czas obsługi i sprawdź, czy program odczytuje tylko bieżącą cenę, czy także uzupełnia zdarzenia z historii.
Jak testować: logika, koszty i dane niewidziane wcześniej
Zacznij od sprawdzenia poprawności: czy wejście i wyjście odpowiadają opisowi, czy lot jest dobrze obliczony oraz czy program reaguje na odrzucenie zlecenia. Potem badaj wynik strategii. Użyj danych i modelu odpowiednich do mechaniki systemu. Strategia działająca wewnątrz świecy wymaga innej dokładności niż model podejmujący decyzję wyłącznie po zamknięciu dnia.
MT5 pozwala testować na rzeczywistych tickach i symulować opóźnienie dyspozycji. Nadal sprawdź dostępność historii, prowizje, spread, finansowanie i specyfikację symbolu. Tryb „real ticks” nie jest kopią przyszłej płynności. Program MQL4 testuj w zgodnym środowisku; nie wystarczy wybrać tester MT5 bez przeniesienia kodu.
Oddziel okres dobierania parametrów od danych wykorzystanych do późniejszej oceny. Jeżeli po obejrzeniu tego wyniku ponownie zmienisz parametry, wykorzystałeś już ten okres do nauki. Wielokrotne przeszukiwanie wariantów zwiększa ryzyko znalezienia przypadkowo dobrego wyniku — problem opisany w badaniach nad przeuczeniem testów historycznych.
Sprawdzenie sąsiednich wartości parametrów to test wrażliwości. Walk-forward polega na kolejnych etapach dopasowania na wcześniejszym oknie i oceny na późniejszym, bez używania jego przyszłych danych do dopasowania. Te czynności uzupełniają się, ale nie są tym samym. Ani jedna nie gwarantuje zysku.
Na demo oceń zachowanie na bieżących danych, restart, zmianę dnia i reakcję na utratę połączenia. Nie ma uniwersalnej liczby miesięcy, po której robot staje się sprawdzony. Dziesięć transakcji w pół roku może mówić mniej o rzadkim ryzyku niż dłuższa, zróżnicowana próba. O kryteriach zakończenia testu zdecyduj przed poznaniem wyniku.
Jak czytać ofertę sprzedawcy
Poproś o opis reguł ryzyka, rodzaj rachunku, pełny okres wyników, otwarte pozycje i sposób uwzględnienia kosztów. Ustal, czy prezentowana historia jest rzeczywista, demonstracyjna czy historycznie symulowana. Zrzut rosnącego wykresu bez tych informacji nie pozwala porównać produktów.
Regulamin MQL5 Market przewiduje automatyczne testy produktów, ale wyraźnie nie gwarantuje rentowności EA ani bezbłędnego działania zakupionego programu. Nie traktuj obecności w sklepie jako certyfikatu bezpieczeństwa strategii. Sprawdź licencję, zgodność wersji, ograniczenia aktywacji, wymagane uprawnienia i procedurę wsparcia.
Wiarygodna historia rzeczywista też nie wystarcza do obietnicy przyszłego wyniku. Mogła obejmować korzystny okres lub inne warunki brokera. Wysoki odsetek wygranych sam w sobie nie dowodzi oszustwa ani przeuczenia; jest powodem, by obejrzeć rozkład zysków, strat i ukrytej ekspozycji.
Własny program: co zapisać przed kodowaniem
Nie musisz najpierw ręcznie handlować przez ustaloną liczbę miesięcy. Potrzebujesz natomiast sprawdzalnych reguł: danych wejściowych, sygnału, warunku wyjścia, wielkości pozycji i limitów. Część strategii z definicji wymaga automatyzacji, ale ich logikę i ryzyko nadal trzeba umieć wyjaśnić.
Do specyfikacji dodaj zachowanie przy ponownym uruchomieniu, częściowym wykonaniu i nieznanej odpowiedzi serwera. Określ, jak robot rozpozna własne pozycje i uniknie zdublowania dyspozycji. Zdecyduj też, czy zatrzymanie programu ma tylko wstrzymać nowe wejścia, czy uruchomić kontrolowane zamykanie. To różne polecenia.
Pozycja na tym symbolu nie musi należeć do robota
Testuj nie tylko warunek wejścia robota, lecz także granice jego uprawnień. Wspólny symbol jest zbyt małą informacją do przypisania pozycji.
Przesuń diagram w bok, aby zobaczyć całość
Założenia: Jeden fikcyjny rachunek MT5 w trybie hedgingowym, trzy odrębne pozycje kupna EUR/USD, ten sam rodzaj kontraktu i jednostka wolumenu. P1: ręczna 0,10 lota; P2: EA A 0,20; P3: EA B 0,05. Własny rejestr przypisuje A tylko P2. W chwili odczytu nie ma innych pozycji, oczekujących zleceń ani zmian listy. P1/P2/P3 są umownymi nazwami, nie rzeczywistymi ticketami.
Rachunek jest hedgingowy: mamy trzy osobne pozycje kupna tego samego symbolu. Suma wolumenu wynosi 0,10 + 0,20 + 0,05 = 0,35 lota. Umowa naszego modelu daje EA A uprawnienie wyłącznie do P2: 0,20 lota. Pozostałe 0,15 lota znajduje się na tym samym symbolu, ale poza jego zakresem. Samo sprawdzenie „EUR/USD” nie wystarczy.
W specyfikacji własnego robota zapisz regułę wyboru pozycji: właściwy rachunek, symbol, identyfikator pozycji i uzgodnione oznaczenie strategii. W tym przykładzie prowadzimy jednoznaczny rejestr właścicieli P1/P2/P3. Nie zakładamy, że samo pole magic number automatycznie uniemożliwi innym programom użycie tego samego numeru. ORDER_MAGIC służy identyfikacji robota, ale konwencję unikatowych wartości trzeba ustalić.
Zasady MT5 opisują możliwość wielu pozycji tego samego symbolu w hedgingu. Właściwości pozycji udostępniają m.in. identyfikator, oznaczenie, symbol i wolumen; PositionGetTicket pozwala przejść po liście pozycji. Kontrola nie polega więc na zatrzymaniu się na pierwszym pasującym symbolu. Nasz przykład dotyczy wyboru zakresu, nie instrukcji zamykania, sposobu wyliczenia depozytu ani rachunku nettingowego.
Warunki przed użyciem prawdziwych pieniędzy
- Zapisz mierzalne kryteria testu oraz maksymalne akceptowane ryzyko.
- Sprawdź wyniki po kosztach i na danych niewykorzystanych do dopasowania.
- Przetestuj obsługę błędów, restart oraz awaryjne zatrzymanie.
- Jeśli rozważasz handel rzeczywisty, policz stratę w walucie konta i łączną ekspozycję. 0,01 lota nie jest uniwersalnym minimum ani symbolicznym ryzykiem.
- Określ sygnały wstrzymania strategii i sposób regularnego nadzoru.
Dalsze ćwiczenia opisuje poradnik walk-forward. Dodatni test jest materiałem do oceny, a nie obowiązkiem uruchomienia robota lub zwiększenia kapitału.
Sprawdź, czy rozumiesz
Jedno krótkie ćwiczenie
Około 2 min · możesz spróbować ponownie
EA A ma zgodnie z własnym rejestrem zarządzać tylko P2. P1 ma 0,10, P2 0,20, P3 0,05 lota EUR/USD. Jaki wolumen jest w zakresie A?
- 0,35 lota, bo każda pozycja ma ten sam symbol.
- 0,20 lota.
- 0,15 lota, bo to suma pozostałych pozycji.
Sprawdź odpowiedź i wyjaśnienie
0,20 lota.
P2 ma 0,20 lota i jest jedyną pozycją przypisaną A. Dwie pozostałe razem 0,15 lota są poza zakresem.
Jeszcze jedno ćwiczenie
Robot zamknął 95 zysków po 10 USD i 5 strat po 250 USD. Ile zarobił przed kosztami?
Sprawdź odpowiedź
Stracił 300 USD: 950 USD zysków minus 1 250 USD strat. Sama skuteczność 95% nie potwierdza dodatniej wartości oczekiwanej.

