EN
Artykuły / 13.3 AI w tradingu
AI w tradinguszkic

Agent AI uruchamia testy w MT5: jak sprawdzić, czy test się naprawdę wykonał

14.11.20264 min czytania

W skrócie: agent AI potrafi skompilować bota, odpalić Strategy Tester bez okna i wyciągnąć wynik. Problem zaczyna się, gdy test się nie wykonał, a agent i tak coś raportuje: stare dane z poprzedniego przebiegu albo pusty raport. Dlatego każdy krok dostaje weryfikację, a nie zaufanie do komunikatu “OK”.

Najgorszy błąd to ten, którego nie widać

Człowiek, który klika w Testerze, widzi, że test się nie włączył. Agent widzi tylko kod wyjścia i pliki. W moich notatkach są trzy przypadki, w których wszystko wyglądało dobrze, a wynik był nieprawdziwy:

Sytuacja Co widział agent Co się naprawdę stało
Terminal w trakcie testu pobrał nową wersję wynik w pliku test się nie wykonał, skrypt wziął stary wynik
Brak zapisanego hasła do konta firmy komunikat OK, nowy wiersz w tabeli Tester nie wystartował, bo nie miał konta; wiersz był pusty
Wiele testów tego samego dnia statystyki z logu log jest wspólny dla całego dnia, liczby z kilku przebiegów się zsumowały

Ostatni przypadek policzyłem na własnej skórze: maksymalny drawdown z “całego logu” wyszedł 66% zamiast prawdziwych 6%. Wynik wyglądał na wiarygodny, bo był liczbą, a nie błędem.

Co zrobiłem, żeby agent nie mógł się pomylić po cichu

Zamiast prosić agenta o ostrożność, wbudowałem kontrole w skrypt, który uruchamia test. Agent woła skrypt, a skrypt się broni:

  • Twarda odmowa zamiast ostrzeżenia. Jeśli skompilowany plik bota nie istnieje albo jest starszy od kodu źródłowego, skrypt przerywa pracę. Ostrzeżenie w logu agent potrafi przeoczyć, wyjątek nie.
  • Sprawdzenie konta po teście. Skrypt porównuje, z jakim kontem faktycznie działał Tester, z tym, które miał mieć. Niezgodność to błąd i wpis o niej w tabeli wyników, a nie wynik.
  • Odrzucanie pustych raportów. Raport z zerem transakcji i okresem z roku 1970 to dla skryptu błąd, nie “test bez transakcji”.
  • Brak odpalenia, gdy terminal jest zajęty. Gdy w tym samym folderze działa terminal, który otworzyłem ja, skrypt odmawia startu. Nie zamyka niczego na siłę.
  • Limit czasu na przebieg. Skrypt ubija tylko własny proces, gdy test trwa za długo. Bez tego jeden zawieszony terminal potrafi stać pół godziny po zapisaniu raportu.

Dopiero tę ochronę rozszerzyłem po incydencie z aktualizatorem terminala (opisuję go w osobnym artykule): zamiast testu startowało okno aktualizacji i agent dokładał kolejne.

Jak agent ma czytać wynik, gdy raportu nie ma

Jeśli test dał log, ale nie dał raportu, agent nie liczy statystyk z całego pliku. Wycina fragment ostatniego przebiegu, od ostatniej linii z depozytem początkowym do końca testu, i dopiero z niego liczy transakcje, saldo końcowe i zdarzenia zarządzania pozycją. Maksymalny drawdown z takiego logu to tylko przybliżenie z próbek co godzinę, więc agent musi to napisać w odpowiedzi. Twarda liczba pochodzi z raportu, nie z logu.

Zgoda: kiedy agent w ogóle może uruchomić Tester

Uruchamianie testów to czas, zasoby i czasem moje własne okno Testera, które akurat używam. Dlatego zasada jest prosta: agent nie odpala Testera sam z siebie. Zgodą jest moje wywołanie konkretnej komendy (skilla) dla jednego bota. Każda następna seria testów, optymalizacja albo duży przesiew to znowu pytanie. Brief dla innej sesji agenta też nie jest zgodą.

Druga zasada: test regresji po każdej zmianie wspólnego kodu

Gdy zmieniam klasę używaną przez kilka botów, agent powinien udowodnić, że bez zmiany logiki wynik jest taki sam co do grosza: ta sama liczba transakcji, ten sam wynik, ta sama lista. To prosty sposób wyłapania błędu, którego sam kod nie pokazuje. Opisuję go w artykule o liście transakcji zamiast sumy.

Przy siatkach parametrów obowiązuje jeszcze jedna kontrola: jeśli wszystkie wyniki są identyczne, funkcja albo nie działa, albo nie wiąże w tej strategii. Taki wynik agent zgłasza zamiast go interpretować.

Co zostaje po stronie człowieka

Agent nie zastąpi decyzji, czy wynik ma sens. Kryteria (progi zysku, liczba transakcji, PASS i FAIL na prop ON) mam zapisane w osobnej checkliście i agent ma ich używać, a nie wymyślać własnych. Liczby, które trafiają do bazy wyników, przeglądam i zatwierdzam ja.

[DO UZUPEŁNIENIA: ile przebiegów z ostatnich tygodni agent zgłosił jako błędne, zanim trafiły do bazy; jeden konkretny przypadek z ostatnich dni]

Checklista

  • skrypt przerywa, gdy plik bota jest nieaktualny albo go brak,
  • po teście sprawdzone, na jakim koncie i serwerze test faktycznie się odbył,
  • pusty raport i okres 1970 traktowane jako błąd,
  • statystyki z logu liczone tylko z ostatniego przebiegu,
  • drawdown z logu oznaczony jako przybliżony,
  • limit czasu na przebieg i zabijanie tylko własnego procesu,
  • test regresji po zmianie wspólnej klasy,
  • identyczne wyniki całej siatki = podejrzenie, nie wniosek,
  • zgoda na Tester przy każdej serii osobno.

Powiązane

Ostrzeżenie: handel CFD i forex wiąże się z wysokim ryzykiem utraty kapitału. Artykuł ma charakter edukacyjny i nie jest rekomendacją inwestycyjną.

Dalej w rozdziale

164

MCP w MT5: asystent AI może zamknąć pozycję nawet przy wyłączonym Algo

Build 6316 terminala MT5 ma wbudowany serwer MCP z ponad 100 narzędziami, w tym handlem. Sprawdziłem na demo, co może zamknąć pozycje przy wyłączonym Algo Trading i jakie ustawienie to pilnuje.

314

AI pisze bota w MQL5: co działa, a co trzeba pilnować

Claude Code pisze i poprawia moje boty MT5. Bez zasad robi typowe błędy: dokłada kod na zapas, zgaduje, rusza pliki obok. Jak je ograniczam regułami w repo i skryptem kontrolnym.

316

Przeniesienie wskaźnika z Pine Script do MQL5

Jak przenieść wskaźnik z TradingView do MT5 tak, żeby dawał te same sygnały: odpowiedniki funkcji, godziny w strefie serwera, wyższy interwał bez repaintu i bufory dla bota.

317

AI jako analityk wyników backtestu: co mu oddaję, a co sprawdzam sam

Agent AI szybko zestawia wyniki testów, ale potrafi je też pewnie zinterpretować źle. Opisuję reguły, które narzuciłem: liczby tylko z pliku, wynik z wersją i ustawieniem, tabela top 10, test rok po roku.

319

Python i AI: skrypty do analizy wyników MT5, które zastąpiły arkusz

Zamiast ręcznie przepisywać wyniki z Testera do arkusza, mam skrypty w Pythonie pisane z agentem AI: baza wyników, porównanie dwóch przebiegów, sprawdzanie danych brokera. Jak do tego doszedłem i na co uważać.

320

Wskaźniki na TradingView w Pine Script: wskaźnik, strategia i alerty

Czym różni się wskaźnik od strategii w Pine Script, jak działają alerty i na co uważać w backteście TradingView, żeby wynik był porównywalny z MT5.