EN
Artykuły / 7.1 Instalacja i konfiguracja
Instalacja i konfiguracjaszkic

Logi terminala i bota w MT5: gdzie są i jak je czytać

14.11.20263 min czytania

W skrócie: MT5 zapisuje trzy rodzaje dzienników: terminala (logowanie, połączenie, zlecenia na poziomie serwera), botów (to, co one same drukują) oraz Testera. Każdy leży w innym folderze, plik na dobę. Kiedy bot nie robi tego, czego oczekuję, logi są pierwszym miejscem, do którego zaglądam, zanim zacznę zgadywać.

Trzy dzienniki

  • Dziennik terminala. W oknie Skrzynka narzędzi to zakładka Dziennik. Widać w niej połączenia z serwerem, zalogowanie, aktualizacje, odrzucone zlecenia i komunikaty o zasięgu. To tutaj sprawdzam, czy konto było połączone w chwili, gdy bot miał coś zrobić.
  • Dziennik botów. Zakładka Eksperci. Pojawia się w niej wszystko, co bot wypisuje poleceniem drukowania, oraz komunikaty systemu o jego uruchomieniu, zatrzymaniu i błędach. Bez własnych komunikatów bota ta zakładka niewiele mówi, dlatego dobrze napisany bot zapisuje w niej powód każdej decyzji o wejściu i odrzuceniu sygnału.
  • Dziennik Testera. Osobny zestaw plików, który powstaje przy testach i optymalizacjach, także osobno dla każdego agenta.

Gdzie leżą pliki

Folder danych terminala zawiera dwa podfoldery z dziennikami: logs (dziennik terminala) i MQL5\Logs (dziennik botów). W obu plik nazywa się datą w postaci rrrrmmdd z rozszerzeniem .log, więc jedna doba to jeden plik. Logi Testera są w osobnym folderze Tester, w podfolderach kolejnych agentów i w jego własnym podfolderze logs. Gdzie jest folder danych, zależy od sposobu uruchomienia. W trybie przenośnym jest po prostu folderem terminala (opis w artykule o MT5 Portable). Pliki są zwykle zapisane w kodowaniu UTF-16, więc zwykły edytor tekstu bez obsługi tego kodowania pokaże puste znaki między literami.

Jak czytam log, gdy bot “nic nie robi”

  1. Najpierw sprawdzam w Dzienniku terminala, czy konto było zalogowane i połączone w danym czasie.
  2. W zakładce Eksperci szukam startu bota o tej porze, a po nim jego własnych komunikatów o odrzuceniu sygnału.
  3. Szukam kodów błędów zleceń. Kod 10027 oznacza wyłączony Algo Trading (opisany w artykule o Algo Trading ON/OFF), kod 10030 nieobsługiwany typ wypełnienia (artykuł o typach wypełnienia).
  4. Porównuję godziny wpisów z czasem serwera brokera, nie z czasem komputera, żeby nie pomylić godziny zdarzenia.

Pełna lista przyczyn braku wejść jest w artykule o bocie, który nie otwiera pozycji.

Kiedy log robi szkodę

Bot, który drukuje komunikat w każdym tiku albo ponawia nieudane zlecenie w pętli, potrafi w jedną noc zapisać setki megabajtów. Przy teście lub optymalizacji skutek jest taki sam, tylko szybszy, bo agentów jest wielu. Dlatego przyjąłem próg: jeśli log jednego przebiegu testu przekracza 100 MB, przerywam test i szukam powtarzającego się wpisu. Przykład z weekendu, kiedy bot ponawiał zamknięcie pozycji na zamkniętym rynku, opisuję w artykule o spamie w logach.

Czego nie robię z logami

  • Nie czyszczę logów, gdy coś analizuję. Przenoszę je do archiwum poza drzewem terminala, bo bywają jedynym dowodem tego, co zrobił bot.
  • Nie ufam samemu logowi w sprawie liczby transakcji. Liczby biorę z pliku wyników, a log służy do wyjaśnienia przyczyn.
  • Nie wyłączam logowania w bocie, żeby oszczędzić miejsce. Ograniczam częstotliwość komunikatów powtarzalnych (jedno ostrzeżenie na zmianę stanu, nie na tik).

[DO UZUPEŁNIENIA: jeden prawdziwy przypadek, w którym log wyjaśnił zachowanie bota (bez nazw kont)]

Checklista

  • Wiem, gdzie leży folder danych tego terminala.
  • Sprawdzam trzy dzienniki: terminala, botów, Testera.
  • Czas wpisów porównuję z czasem serwera.
  • Bot nie drukuje komunikatów w każdym tiku.
  • Logów nie czyszczę w trakcie analizy, tylko je archiwizuję.

Powiązane

Ostrzeżenie: struktura folderów zależy od wersji MT5 i sposobu uruchomienia. Sprawdź ją na własnej instalacji. To nie jest porada inwestycyjna.

Dalej w rozdziale

147

MT5 Portable: po co ten tryb i jak go używać

Przełącznik /portable sprawia, że MT5 trzyma wszystkie dane w swoim folderze, a nie w profilu Windows. Opisuję, co się zmienia, kiedy to się opłaca (kilka terminali, kopie, testy) i jakich błędów unikać.

154

Algo Trading ON/OFF: co blokuje, a co nie

Wyłączony przycisk Algo Trading odrzuca zlecenia z bota i z Pythona (kod 10027), ale nie wszystkie ścieżki. W moim teście zamknięcie pozycji przez serwer MCP terminala przeszło mimo Algo OFF. Gdzie jest granica.

155

Zmienne globalne terminala MT5 giną przy utracie zasilania

MT5 zapisuje zmienne globalne na dysk dopiero przy zamknięciu terminala. Po awarii prądu moje boty wczytały stan sprzed kilku dni. Jak to sprawdzić i naprawić w EA.