Logi terminala i bota w MT5: gdzie są i jak je czytać
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”
- Najpierw sprawdzam w Dzienniku terminala, czy konto było zalogowane i połączone w danym czasie.
- W zakładce Eksperci szukam startu bota o tej porze, a po nim jego własnych komunikatów o odrzuceniu sygnału.
- 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).
- 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
- MT5 Portable: po co ten tryb
- Algo Trading ON/OFF
- Ponawianie zamknięcia przez weekend: spam w logach
- Limit czasu testu
- Słowniczek: dziennik Eksperci; skorowidz: skorowidz
Ostrzeżenie: struktura folderów zależy od wersji MT5 i sposobu uruchomienia. Sprawdź ją na własnej instalacji. To nie jest porada inwestycyjna.