MT4 золотий EA у вихідні не має логів — це зависання? Спочатку розрізніть котирування та таймерні події
OnTick залежить від нових котирувань інструмента графіка, OnTimer потребує підписки програми. Перевіряйте за точкою входу події, розташуванням логів і записами повторної ініціалізації, щоб не робити висновок про несправність лише через відсутність виводу під час закриття ринку.
Автор: Томас|Практика MT4|14 листопада 2026 р.
Резюме: якщо у вихідні відкрити термінал, інтерфейс EA ще є, але нових логів довго немає, не можна лише за цим явищем робити висновок, що програма зависла. Перевірку слід починати з того, якою подією запускається програма, чи справді вона друкує логи в цій точці входу, і лише потім перевіряти стан термінала. У цій статті програма не тестується реальними ордерами, а блок-схема не вважається доказом того, що будь-який EA пройшов тестування.
Без нових котирувань подія котирування може не виникати
Офіційна документація MetaQuotes з MQL4 пояснює, що подія NewTick виникає й викликає правильно оголошену функцію обробки OnTick лише тоді, коли інструмент графіка, до якого прикріплено EA, отримує нове котирування. Якщо перевірка й логи програми записані всередині цієї точки входу, у періоди без нових котирувань нових записів виконання може не бути.
Це не означає, що всі EA повинні чекати на котирування. Програма також може використовувати таймер або події графіка як точки входу. Тому не можна, побачивши «вихідні», пояснювати цим будь-яку тишу, а тим більше вважати, що якщо інший інструмент ще оновлюється, то поточний графік золота обов’язково отримує котирування.
Спочатку визначте, на яку подію чекає програма

Зображення є оригінальною навчальною схемою процесу, не реальними ринковими даними й не показує реальний торговий рахунок. Перший шлях залежить від нових котирувань інструмента графіка; другий — від успішної підписки програми на таймер. Таймерна подія може запускати логіку перевірки, але це не означає, що на поточному ринку можна виконати угоду; програма все одно повинна перевіряти торгові умови та достовірність даних.
Офіційно рекомендується підписуватися на таймер під час ініціалізації та скасовувати підписку під час вивантаження. Якщо лише написати функцію OnTimer, але не підписатися, це не доводить, що вона працюватиме періодично. Назва функції, параметри та тип повернення також повинні відповідати вимогам обробки подій; будь-яка помилка в написанні може призвести до того, що очікувана точка входу не буде викликана.
Як звичайному користувачеві перевіряти крок за кроком
Спочатку перевірте рахунок, сервер, назву інструмента графіка та поточний стан з’єднання, щоб переконатися, що ви дивитеся правильний термінал. Запишіть час останнього котирування та торговий час платформи; не замінюйте серверний час ринку часом комп’ютера. Звичайне закриття ринку у вихідні також не означає, що графіки торгів інших продуктів повністю однакові; слід орієнтуватися на оголошення конкретної платформи.
Далі перегляньте відповідні логи, зокрема Experts і Journal, збережіть останні записи ініціалізації, вивантаження або помилок. Зверніть увагу на фільтр логів, дату та те, чи не переглядаєте ви інший термінал. Якщо сам EA друкує логи лише за настання торгових умов, відсутність нових записів може означати лише те, що умови для друку не виконані, і це не доводить, що програма ніколи не запускалася.
Потім перевірте, чи опис EA містить періодичні перевірки, вивід heartbeat або механізм обслуговування у вихідні. Якщо немає вихідного коду, слід передати постачальнику для перевірки версію, параметри, інструмент графіка, час останнього котирування та логи; не припускайте, що всі продукти використовують однакову структуру подій.
Що перевіряти насамперед, якщо є вихідний код
У тестовому середовищі перевірте оголошення точок входу OnInit, OnTick, OnTimer тощо та необхідні підписки, а також підтвердьте фактичний шлях за допомогою діагностичних логів з помірною частотою. У логах можна записувати тип події, інструмент і час даних, щоб не писати лише «нормально» без контексту, який можна перевірити. Не записуйте пароль рахунку або інші облікові дані в діагностичний вивід.
Робота термінала, завантаження графіка, запуск подій і виконання угод — це різні рівні. Те, що таймер усе ще виводить логи, не доводить свіжість ринкових даних і не доводить, що ордер обов’язково вдасться надіслати. Якщо подія котирування не запускається, тим більше не слід перевіряти, чи програма жива, шляхом розширення торгових дозволів або повторного надсилання ордерів.
Чому повторне перемикання періодів може заважати перевірці
Офіційна документація пояснює, що зміна інструмента або періоду графіка, а також зміна вхідних параметрів передбачають вивантаження та повторну ініціалізацію. Повторне перемикання може замаскувати початкову проблему новим процесом ініціалізації, а також запустити повторне завантаження стану програми. Слід спочатку зберегти логи й параметри, а потім за інструкцією перевіряти в безпечному середовищі, а не постійно переприкріплювати EA, спостерігаючи, чи він іноді не відновиться.
Різні EA по-різному реалізують відновлення позицій, збереження змінних і захист від повторного надсилання ордерів. Ця стаття не гарантує безпечність повторного завантаження й не рекомендує бездумно вивантажувати або перезапускати програму за наявності реальної відкритої позиції. Перед будь-якою операцією обслуговування слід спочатку з’ясувати, хто керує позицією.
Як зрозуміти, що перевірку завершено
Якщо підтверджено, що поточний інструмент не має нових котирувань, логіка розташована лише в точці входу котирування і немає інших доказів помилок, це можна зафіксувати як очікування ринку, а не заявляти, що програму виправлено. Якщо таймерна точка входу мала б працювати, але вивід постійно відсутній, слід далі перевіряти підписку, результат ініціалізації та помилки програми; не можна пояснювати все закриттям ринку.
Після відновлення котирувань також слід спочатку перевірити часові позначки та стан, а потім переконатися, що програма обробляє нові події як очікувалося. Відновлення подій не доводить, що торговельна стратегія має перевагу в прибутковості; ордери все ще наражаються на ризик спреду, прослизання та виконання. Мета перевірки — з’ясувати, на якому рівні фактично зупинилася програма, а не отримати відповідь через ризик на реальному рахунку.