MT5 Close all: почему позиции остаются открытыми
Команда Close all в MT5 запускает последовательность запросов, а не гарантирует одновременное закрытие всего счета. После отказа, прерывания процесса или выключения приложения часть позиций может остаться. Установите, какие сделки подтверждены и какой объем существует сейчас. Здесь рассматриваются встроенные групповые операции MT5; у дополнения или собственного торгового робота могут быть другие правила.
Что охватывает выбранная команда?
Запишите ее полное название: все позиции, только прибыльные или убыточные, один символ либо одно направление. Выбор конкретной строки может изменить список доступных действий. Фраза «закрыл все» не доказывает охват операции. Закрытие и разворот — разные действия: разворот может создать новую позицию противоположного направления вместо пустого счета.
Документация групповых операций MT5 (на английском) разделяет этапы. На хеджинговом счете сначала пробуют встречное закрытие Close By, затем обычное закрытие остатков. Пары Close By обрабатываются последовательно. Ошибка на этом этапе останавливает весь процесс. После успешного встречного закрытия обычные запросы отправляются асинхронно, без ожидания каждого предыдущего подтверждения; отказ по одной позиции оставляет ее открытой, но не останавливает отправку остальных запросов. При FIFO закрытие тоже последовательное и прекращается при ошибке. Не объединяйте эти разные ситуации.
Групповые команды требуют включенного режима торговли одним щелчком One Click Trading. Часть команд не отображается при ограничении FIFO — закрытие всех прибыльных или убыточных, однонаправленных и противоположных позиций. Проверьте режим учета и ACCOUNT_FIFO_CLOSE в свойствах счета MQL5 (на английском). Внешний вид терминала не устанавливает эти свойства; описание платформы не является единым правовым правилом для всех стран и счетов.
Хеджирование позиций помогает различить отдельные встречные позиции и совокупную позицию неттингового счета. Close By относится к противоположным позициям одного и того же символа на хеджинговом счете. Похожее название другого инструмента не делает его подходящей встречной стороной. Собственный скрипт Close all проверяют по его инструкциям, а не по сходству названия с командой меню.
Как сверить пять позиций после операции?
Задан вымышленный хеджинговый счет без FIFO. Для EUR/USD разрешен Close By. Нет частичных исполнений, новых входов или иных изменений. Сценарий показывает зависимости этапов, не скорость сервера. Денежный результат не вычисляется, объемы разных контрактов не складываются.
Прокрутите таблицу вправо для всех подтверждений и остатков →
| Позиция | Начальное состояние | Подтверждение | Остаток |
|---|---|---|---|
| A | EUR/USD, покупка 0.10 лота | Close By с B исполнен | Нет |
| B | EUR/USD, продажа 0.10 лота | Close By с A исполнен | Нет |
| C | GBP/USD, покупка 0.20 лота | Закрыты все 0.20 | Нет |
| D | USD/JPY, продажа 0.10 лота | Запрос отклонен, закрыто 0 | Продажа 0.10 |
| E | XAU/USD, покупка 0.05 лота | Закрыты все 0.05 | Нет |
После исполнения пары A–B число позиций уменьшается с пяти до трех. Затем терминал отправляет обычные запросы для C, D и E, не дожидаясь подтверждения каждого предыдущего. Здесь C и E закрыты, а D отклонен. В конце остается одна позиция D: продажа USD/JPY объемом 0.10 лота. Три отправленных запроса не означают три завершенных закрытия.
Из пяти позиций осталась одна
Прокрутите схему вправо, чтобы увидеть все четыре блока →
Считайте текущие позиции и подтвержденный закрытый объем, а не окна сообщений. Одна операция Close By здесь убрала два отдельных номера позиций. У обычных запросов были собственные результаты. Разбор ошибок ордеров (на английском) помогает определить отказ; итог операции устанавливает сверка счета. Неизвестный результат и подтвержденный отказ оставляйте разными статусами.
Для каждой позиции сохраните символ, направление, начальный объем, идентификатор запроса или ордера, ответ, сделки и остаток. Свойства сделок MQL5 (на английском) включают связь с ордером DEAL_ORDER, позицией DEAL_POSITION_ID, объем DEAL_VOLUME и признак входа или выхода DEAL_ENTRY. Одному ордеру могут соответствовать несколько сделок; каждая часть не означает полного закрытия позиции. Сохраните время с часовым поясом и причину, по которой результат еще не установлен.
Что меняется при ошибке или выключении?
Отдельный вариант того же начального состояния: Close By пары A–B получает ошибку до исполнения. По условию закрывающих сделок не было. Процесс останавливается до обычных запросов для C, D, E: остаются все пять позиций. Это не ситуация отказа D после успешного A–B. При реальном отсутствии ответа сначала выясняют результат, а не объявляют, что ничего не исполнилось.
Закрытие приложения прекращает групповой процесс, но не отменяет уже подтвержденные сделки. Если A–B исполнен, а запросы C–E еще не отправлены, в этом варианте остаются три позиции. Для уже отправленных запросов установите результат на сервере. Перезапуск терминала не подтверждает пустой счет и не должен автоматически запускать всю старую партию по запомненным объемам.
Проверьте новые входы робота, другого приложения или человека. Новый номер не обязательно означает неудавшееся закрытие старой позиции. Сопоставьте историю, источник распоряжения и время. Возврат true функцией OrderSend (документация на английском) не устанавливает исполнение: проверяются поля результата и события. Это важно для собственной автоматизации, но не требует пробной сделки на реальном счете.
Достаточно ли пустого списка позиций?
Отдельно проверьте отложенные ордера: в MT5 для них предусмотрено удаление, и команда закрытия позиций не подтверждает отмены. Вымышленный отложенный ордер покупки P может остаться даже после закрытия всех пяти позиций. Если позже он исполнится, появится новая позиция. В обзоре типов ордеров различаются запрос отмены и подтвержденный результат.
После синхронизации читайте правильный счет без фильтра, скрывающего символ или направление. Сверьте историю закрытий и ожидающие распоряжения отдельно. Пустое состояние относится к определенному времени наблюдения и охвату счета; снимок экрана не гарантирует, что робот не создаст новую позицию. Оцените защиту и текущую экспозицию остатков. Неудавшаяся партия не отменяет их риск.
Практика: две сделки не означают две закрытые позиции
Новый отдельный вымышленный пример: хеджинговый счет без FIFO, одна покупка Q объемом 0.30 лота EUR/USD. Два подтвержденных выхода из Q имеют объемы 0.10 и 0.08 лота. Других изменений Q нет. Отложенный ордер покупки P объемом 0.05 лота того же символа пока не исполнен. Цены, денежный результат и скорость работы не моделируются.
По одному идентификатору Q подтверждено закрытие 0.10 + 0.08 = 0.18 лота; остаток 0.30 − 0.18 = 0.12. Полностью закрытых позиций Q — ноль, хотя выходящих сделок две. Не прибавляйте незавершенный объем ордера P к уже открытой позиции.
Прокрутите таблицу вправо, чтобы различить позиции и ожидающие ордера →
| Момент | Открытые позиции | Ожидающий P | Открытый объем EUR/USD |
|---|---|---|---|
| До выходов | Q: покупка 0.30 | Покупка 0.05 | 0.30 лота |
| После выходов 0.10 и 0.08 | Q: покупка 0.12 | Покупка 0.05 | 0.12 лота |
| После полного исполнения P | Q: 0.12; новая R: 0.05 | Нет | 0.17 лота |
В последней строке дополнительно предполагается подтвержденное полное исполнение P и отсутствие иных изменений. Оно создало новую покупку R на хеджинговом счете: позиций теперь две, отложенных ордеров P — ноль, открытый объем 0.12 + 0.05 = 0.17 лота. В этом примере складываются только покупки одного и того же контракта EUR/USD. Сумма не является мерой денежного риска или суммой лотов разных инструментов. Третья сделка относится к входу R, а не к закрытию Q; отбирать все сделки как выходы было бы неверно.
Что сделать при следующей проверке?
- На демо воспроизведите охват команды. Запишите режим счета, точное название, номера и объемы всех позиций, сохраните исходное состояние. Для проверки модели отказа не создавайте ошибку на реальном счете.
- Сопоставьте каждую позицию с подтвержденным результатом. Отделите Close By от обычного закрытия, отказы — от неизвестных исходов. Проверьте остатки; исчезновение кнопки не подтверждает исполнения. Не отправляйте всю старую партию из памяти.
- После синхронизации проверьте и позиции, и отложенные ордера без скрывающих фильтров, на правильном счете. Оцените существующую экспозицию и доступные действия. Сохраните финальное состояние и время наблюдения в журнале.
Проверка Close all заканчивается списком реально существующих позиций и ордеров, а не числом отправленных сообщений.
Продолжить изучение
После сверки остатков определите категорию отказа, прежде чем отдавать новое распоряжение: ошибки ордеров MT4/MT5 (на английском).
Проверьте понимание
Модель: Close By закрыл A и B; C и E закрыты; запрос D отклонен. Сколько исходных позиций осталось?
Ответ и объяснения без JavaScript
Правильный ответ: Одна: D, продажа USD/JPY объемом 0.10 лота.
Ноль, ведь команда называется Close all.
Название выражает намерение. Отклоненная D остается открытой.
Одна: D, продажа USD/JPY объемом 0.10 лота.
Верно: закрыты четыре позиции; подтвержденного закрытия D нет.
Три: Close By — одна операция.
Операция пары убрала две позиции, обычные закрытия — еще C и E.
Вопросы и ответы
Удаляет ли Close all отложенные ордера?
Не считайте закрытие позиций подтверждением отмены ожидающих распоряжений. В MT5 для них есть отдельное удаление. Проверьте оба списка и историю на нужном счете с временем наблюдения: отложенный вход может позже создать позицию. Неизвестный исход отмены не разрешается пустым списком позиций; исполнение и удаление ордера — разные подтверждаемые события.
Отменяет ли выключение терминала групповую операцию?
Оно не отменяет подтвержденные сделки, но прекращает дальнейший процесс. Для отправленных запросов установите серверный результат; прерывание приложения не равно отмене всех запросов или окончанию закрытия. Сохраните журнал, после синхронизации сопоставьте объемы и историю. Перезапуск — состояние приложения, а не доказательство отсутствия позиций.
Почему нет команды закрытия всех прибыльных позиций?
Проверьте тип счета, выбранную строку, режим One Click Trading и точное название функции. Часть групповых команд несовместима с FIFO и не отображается. Без этих данных отсутствующая кнопка не доказывает неисправности брокера. Собственное дополнение может иметь другое меню; его название не подтверждает совпадение со встроенной процедурой или доступность на сервере.
Можно ли снова нажать Close all после ошибки?
Сначала установите текущие позиции, объемы и исход прежних запросов. Некоторые позиции могли закрыться или уменьшиться, робот мог открыть новые. Отказ и отсутствие подтверждения — разные статусы. Затем оцените действия для нынешней экспозиции. Новая операция имеет новый охват и условия; она не завершает автоматически старый список.
Источники и пределы применения
- MT5: групповые операции и закрытие позиций (на английском)
Последовательный Close By, обычный асинхронный этап, остановка при ошибке и выключении; удаление отложенных ордеров отдельно.
- MQL5: свойства конкретного счета (на английском)
ACCOUNT_MARGIN_MODE и ACCOUNT_FIFO_CLOSE; не общее правовое правило для всех стран.
- MQL5: свойства исполненных сделок (на английском)
Объем, ордер, идентификатор позиции, вход и выход помогают сверить части исполнения.
- MQL5: результат вызова OrderSend (на английском)
Возврат true не равен исполнению; нужны коды ответа, события и состояние. Никакой код здесь не запускался.
Описание функций MT5 и свойств конкретного счета, не универсальные правила юрисдикций или всех брокеров. Сценарии полностью вымышлены; нет реальных распоряжений, денежных результатов или испытаний на торговом счете.