EA złoto MT4 bez logów w weekend — czy się zawiesił? Najpierw rozróżnij kwotowania i zdarzenia czasowe
OnTick zależy od nowych kwotowań instrumentu na wykresie, a OnTimer wymaga subskrypcji w programie. Sprawdzaj według punktu wejścia zdarzeń, lokalizacji logów i zapisów ponownej inicjalizacji, aby nie uznawać braku danych wyjściowych przy zamkniętym rynku za awarię.
Autor: Thomas|Praktyka MT4|14 listopada 2026
Streszczenie: Po otwarciu terminala w weekend interfejs EA nadal jest widoczny, ale przez długi czas nie pojawiają się nowe logi — nie można na tej podstawie sądzić, że program się zawiesił. Przy diagnozie najpierw ustal, jakie zdarzenie uruchamia program i czy faktycznie wypisuje on log w tym punkcie wejścia, a następnie sprawdź stan terminala. W tym artykule nie testujemy programu przez składanie zleceń na rachunku rzeczywistym ani nie traktujemy schematu blokowego jako dowodu, że jakikolwiek EA przeszedł testy.
Bez nowych kwotowań zdarzenie kwotowania może nie wystąpić
Oficjalna dokumentacja MQL4 firmy MetaQuotes wyjaśnia, że zdarzenie NewTick jest generowane i wywoływana jest prawidłowo zadeklarowana funkcja obsługi OnTick dopiero wtedy, gdy instrument na wykresie, do którego dołączony jest EA, otrzyma nowe kwotowanie. Jeśli program umieszcza sprawdzanie i logowanie wyłącznie w tym punkcie wejścia, w okresie bez nowych kwotowań może nie pojawić się nowy zapis wykonania.
Nie oznacza to, że każdy EA musi czekać na kwotowania. Program może również korzystać z innych punktów wejścia, takich jak timer czy zdarzenia wykresu. Dlatego nie można samego „weekendu” używać do wyjaśniania całej ciszy ani traktować faktu, że inny instrument nadal się aktualizuje, jako dowodu, że bieżący wykres złota z pewnością otrzymuje kwotowania.
Najpierw rozpoznaj, na jakie zdarzenie czeka program

Ilustracja jest oryginalnym schematem dydaktycznym przepływu, nie przedstawia rzeczywistych notowań ani nie pokazuje rzeczywistego rachunku handlowego. Pierwsza ścieżka zależy od nowych kwotowań instrumentu na wykresie; druga od pomyślnej subskrypcji timera przez program. Zdarzenie czasowe może uruchomić logikę sprawdzania, ale nie oznacza, że na bieżącym rynku można zawrzeć transakcję — program nadal musi weryfikować warunki handlowe i ważność danych.
Oficjalne zalecenie mówi, aby subskrybować timer podczas inicjalizacji i anulować subskrypcję przy odłączaniu. Samo napisanie funkcji OnTimer bez subskrypcji nie oznacza, że będzie ona uruchamiana cyklicznie. Nazwa funkcji, parametry i typ zwracany również muszą spełniać wymagania obsługi zdarzeń; dowolny błąd pisowni może sprawić, że oczekiwany punkt wejścia nie zostanie wywołany.
Jak zwykły użytkownik powinien sprawdzać krok po kroku
Najpierw sprawdź konto, serwer, nazwę instrumentu na wykresie i bieżący stan połączenia, aby potwierdzić, że patrzysz na właściwy terminal. Zapisz czas ostatniego kwotowania i czas handlowy platformy; nie zastępuj czasu notowań serwera zegarem komputera. Standardowa przerwa weekendowa nie oznacza, że harmonogram handlu innych produktów jest identyczny — należy kierować się konkretnymi komunikatami platformy.
Następnie przejrzyj odpowiednie logi, takie jak Experts i Journal, i zachowaj ostatnie wpisy inicjalizacji, odłączenia lub błędów. Zwróć uwagę na filtrowanie logów, datę oraz to, czy nie sprawdzasz innego terminala. Jeśli sam EA wypisuje log tylko przy spełnieniu warunków transakcyjnych, brak nowych wpisów może oznaczać jedynie, że warunki wypisywania nie zostały spełnione — nie dowodzi to, że program nigdy nie działał.
Potem sprawdź, czy opis EA zawiera mechanizmy okresowego sprawdzania, sygnału heartbeat lub konserwacji weekendowej. Bez kodu źródłowego przekaż dostawcy do weryfikacji wersję, parametry, instrument na wykresie, czas ostatniego kwotowania i logi; nie zakładaj, że wszystkie produkty używają tej samej struktury zdarzeń.
Co weryfikować w pierwszej kolejności, gdy dostępny jest kod źródłowy
W środowisku demonstracyjnym sprawdź deklaracje punktów wejścia, takich jak OnInit, OnTick i OnTimer, oraz wymagane subskrypcje, a za pomocą diagnostycznych logów o umiarkowanej częstotliwości potwierdź rzeczywistą ścieżkę. Logi mogą zapisywać typ zdarzenia, instrument i czas danych, aby uniknąć samego wpisu „normalnie” bez możliwego do zweryfikowania kontekstu. Nie zapisuj haseł do konta ani innych danych uwierzytelniających w danych wyjściowych diagnostyki.
Działanie terminala, ładowanie wykresu, wyzwalanie zdarzeń i wykonywanie transakcji to różne warstwy. To, że timer nadal wypisuje dane, nie dowodzi świeżości notowań ani tego, że zlecenie na pewno zostanie wysłane. Gdy zdarzenie kwotowania nie jest wyzwalane, tym bardziej nie należy weryfikować, czy program żyje, przez rozszerzanie uprawnień handlowych lub wielokrotne składanie zleceń.
Dlaczego wielokrotne przełączanie interwału może utrudniać diagnozę
Oficjalna dokumentacja wyjaśnia, że zmiana instrumentu lub interwału wykresu oraz zmiana parametrów wejściowych wiąże się z odłączeniem i ponowną inicjalizacją. Wielokrotne przełączanie może sprawić, że pierwotny problem zostanie zasłonięty przez nowy proces inicjalizacji i może wywołać ponowne załadowanie stanu programu. Najpierw zapisz logi i parametry, a następnie zgodnie z instrukcją zweryfikuj w bezpiecznym środowisku, zamiast ciągle od nowa dołączać EA i obserwować, czy przypadkiem się nie przywróci.
Różne EA odmiennie implementują odtwarzanie pozycji, trwałość zmiennych i ochronę przed wielokrotnym składaniem zleceń. Ten artykuł nie gwarantuje bezpieczeństwa ponownego ładowania i nie zaleca bezmyślnego odłączania ani restartu przy istniejącej rzeczywistej ekspozycji. Przy każdej czynności konserwacyjnej najpierw ustal, kto zarządza pozycjami.
Jak rozpoznać, że diagnoza została zakończona
Jeśli potwierdzono, że bieżący instrument nie ma nowych kwotowań, logika znajduje się wyłącznie w punkcie wejścia kwotowań i nie ma innych dowodów błędu, można zapisać wynik jako oczekiwanie na notowania, a nie ogłaszać, że program został naprawiony. Jeśli punkt wejścia timera powinien działać, a mimo to stale nie ma danych wyjściowych, kontynuuj sprawdzanie subskrypcji, wyników inicjalizacji i błędów programu; nie wyjaśniaj wszystkiego zamknięciem rynku.
Po przywróceniu kwotowań również najpierw sprawdź znaczniki czasu i stan, a następnie potwierdź, że program obsługuje nowe zdarzenia zgodnie z oczekiwaniami. Przywrócenie zdarzeń nie dowodzi, że strategia handlowa ma przewagę zysku; zlecenia nadal podlegają spreadowi, poślizgowi i ryzyku wykonania. Celem diagnozy jest ustalenie, na której warstwie program faktycznie się zatrzymał, a nie uzyskanie odpowiedzi przez ryzykowanie na rachunku rzeczywistym.