Чому два золоті EA керують одним і тим самим ордером? Перевірте магічний номер у MT4
На прикладі демо-рахунку показано, як EA фільтрує ордери за інструментом і магічним номером, а також як після зміни номера уникнути ситуації, коли залишкові позиції втрачають керування.
Автор: Томас|Практика MT4|10 листопада 2026 р.
Резюме: якщо на одному рахунку MT4 запущено два набори золотих EA і вони використовують однакові умови ідентифікації ордерів, вони можуть одночасно змінювати стоп-лосс одного ордера. Під час перевірки спершу дивіться на інструмент і магічний номер в ордері, а потім на те, за якими умовами фактично фільтрує код. Наведені нижче номери й ордери є навчальними припущеннями.
Де зберігається магічний номер
OrderSend у MQL4 підтримує передавання параметра magic. Після успішного вибору ордера OrderMagicNumber може прочитати ідентифікаційний номер цього ордера. Він може дати програмі підставу для класифікації. Які саме ордери буде змінено або закрито, усе ще визначається власною логікою фільтрації та виконання EA. Якщо під час перебору ордерів рахунку програма перевіряє лише інструмент, два золоті EA навіть із різними магічними номерами можуть обробляти ту саму групу ордерів.

На схемі припускається, що стратегії A і B використовують 101 і 202 відповідно. A по одному вибирає ордери з торгового пулу, спершу звіряє фактичний інструмент, потім ідентифікаційний номер. Лише коли обидва пункти збігаються, ордер передається подальшій логіці для перевірки типу ордера та дозволених дій. Невдалий вибір ордера слід пропускати й записувати помилку. Перед змінами бажано повторно вибрати цільовий ордер, щоб не використовувати старі дані, раніше скопійовані в програму.
Перевірка на демо-рахунку в три кроки
Крок перший: запишіть версії обох EA, вхідні параметри, період графіка й повну назву інструмента золота в брокера. Назви золота на різних рахунках можуть мати суфікс. Якщо на одному інструменті розгорнуто кілька екземплярів, також слід чітко визначити, чи керують вони незалежно, чи за задумом спільно використовують ордери.
Крок другий: на демо-рахунку дайте кожному EA створити по одному розпізнаваному тестовому ордеру, а також підготуйте тестовий ордер, який має бути виключений. У журналі слід зафіксувати принаймні номер ордера, інструмент, магічний номер і дію, яку програма збирається виконати. Потім запустіть одну контрольовану керуючу дію, наприклад спробуйте змінити власний тестовий ордер стратегії A і перевірте, чи ордер стратегії B зберіг початкове значення. Відкладені ордери й уже виконані позиції краще перевіряти окремо, оскільки торговий пул може містити обидва типи ордерів, а фактичні правила обробки зазвичай різні.
Крок третій: перезапустіть термінал або перезавантажте EA і перевірте ще раз. Якщо програма запам’ятовує лише список ордерів, створених під час поточного запуску, поведінка після перезапуску може змінитися. Можна перевірити, чи вона повторно ідентифікує ордери за заданими умовами та чи не виникають неочікувані дії, коли немає відповідних ордерів. Номер є лише допоміжним засобом ізоляції; якщо перевірка сукупного ризику в межах рахунку навмисно читає всі позиції, це слід окремо документувати від права фактично змінювати ордери.
Перед зміною номера спершу обробіть старі ордери
Припустімо, стратегія A раніше відкривала позиції з 101, а тепер змінена на 303. Зміна вхідних параметрів зазвичай впливає лише на значення, які використовує подальший код; ідентифікаційний номер старих ордерів не переноситься автоматично разом із налаштуваннями графіка. Якщо умова керування відповідає лише 303, старі ордери з 101 можуть бути пропущені. Перед зміною слід перелічити старі ордери та запланований спосіб обробки, а потім перевірити перезапуск і передачу керування в демо-середовищі. Якщо версію EA неможливо перевірити або журнал не пояснює логіку фільтрації, спершу призупиніть автоматичні зміни керування й перевірте план виходу для наявних позицій. Успішний тест на демо підтверджує лише перевірений сценарій; реальні зміни котирувань, відхилення ордерів сервером і прослизання все ще потребують окремої оцінки.