MT5 отклоняет закрытие по FIFO: очередь и подтверждение
Отказ закрыть позицию по FIFO в MT5 требует проверки очередности на конкретном счете. FIFO означает «первой открыта — первой закрыта». Это может быть ограничение сервера, а не выбранный вами способ распределять прибыль в журнале. Сохраните ответ, режим счета и текущие позиции по точному символу; не повторяйте запрос и не закрывайте другую позицию автоматически.
Правило счета и правило вашего учета
MT5 предоставляет свойство ACCOUNT_FIFO_CLOSE. Значение true означает закрытие позиций одного символа в порядке открытия, начиная с самой старой. Вне режима хеджингового учета оно равно false. Это сведения о действительном счете, а не о стране, выбранной для языка интерфейса. Проверяйте обслуживающую организацию и условия счета; MT5 не устанавливает FIFO для каждого пользователя во всех странах.
Отдельно FIFO может быть аналитическим соглашением: уменьшение общей неттинговой позиции относят к более ранним входам. Такой расчет не изменяет допустимые сервером запросы на закрытие. См. распределение результата между стратегиями при неттинге. Здесь рассматривается техническая последовательность реальных позиций счета, а не правило налогового учета.
Что сохранить после отказа
Прочитайте полный ответ на запрос. Код 10045, TRADE_RETCODE_FIFO_CLOSE, обозначает отказ из-за настройки FIFO. Общее сообщение об ошибке закрытия не отличает эту причину от неверной цены, объема или отсутствия соединения. Запрет противоположных позиций и режим инструмента «только закрытие» — другие ограничения.
Запишите сервер, безопасное условное обозначение счета, точный символ, идентификатор позиции, время открытия и текущий объем. Не включайте пароль или личные данные. Сортируйте позиции именно этого инструмента по времени открытия, а не прибыли. При одинаковом времени в доступной точности сохраните идентификаторы и выясните очередность у поставщика: не придумывайте правило старшинства по номеру позиции.
Три позиции при неизменной цене
Учебная модель: хеджинговый счет с FIFO=true, три длинные позиции одного и того же символа EUR/USD. В лоте 100000 EUR; Bid постоянно 1.1030 USD за EUR. Время и цены вымышлены; комиссии, другие события и проскальзывание исключены. Пока рассматриваем полное закрытие каждой позиции, а не все возможные правила частичного выхода.
| Позиция | Открытие | Объем | Цена открытия | Результат при Bid 1.1030 |
|---|---|---|---|---|
| P1 | 08:00 | 0.10 лота | 1.1000 | 30 USD |
| P2 | 08:05 | 0.20 лота | 1.1010 | 40 USD |
| P3 | 08:10 | 0.10 лота | 1.1020 | 10 USD |
Запрос закрыть P3 раньше P1 нарушает заданную очередность. После подтвержденного полного закрытия P1 следующей становится P2. Она имеет наибольшую прибыль, но изначально не была самой ранней. Минимальный объем тоже не выбирает следующую позицию. После исполнения заново проверьте оставшиеся позиции.
Очередность открытия, а не величина прибыли
Открыть схему целиком. На небольшом экране прокрутите схему; все значения также приведены в таблице.
Общий результат до закрытия — 80 USD. При той же цене полное закрытие P1 дает 30 USD реализованного и 50 USD открытого результата P2 и P3. После закрытия также P2 распределение становится 70 и 10 USD. Сумма остается 80 USD: перенос между частями результата не создает новую прибыль. Настоящие расходы и изменение цены могут изменить эти суммы.
Частичное исполнение не удаляет позицию из очереди
Отдельно предположим, что условия этого вымышленного счета разрешают частичное закрытие самой старой позиции и подтверждено закрытие 0.04 лота P1 по Bid 1.1030. Это дополнительное допущение, не вывод о разрешениях любого FIFO-счета. При тех же 100000 EUR на лот закрыто 4000 EUR, остается 6000 EUR, или 0.06 лота P1. Реализовано 12 USD; открытый результат P1 равен 18 USD, P2 и P3 вместе — 50 USD. Общий открытый результат 68 USD; сумма с реализованными 12 по-прежнему 80 USD. P1 не исчезла, поэтому нельзя объявлять P2 следующей только по отправленному запросу. При исходном балансе 1000 USD, отсутствии кредита, комиссий, свопов и денежных потоков баланс после этого исполнения 1012, средства счета 1080 USD. Теперь отдельно зададим Bid 1.1025 при неизменных объемах: открытый результат становится 50, средства счета — 1062 USD. Снижение на 18 USD соответствует оставшимся 36000 EUR × (1.1025 − 1.1030). Сумма 80 сохранялась лишь при прежней цене; частичное закрытие не замораживает результат остальной позиции. Уровни защиты и требования к марже в этой арифметике не рассчитываются.
| Состояние | Реализовано | Открытый результат | Баланс | Средства счета | Старейшая оставшаяся |
|---|---|---|---|---|---|
| До закрытия | 0 | 80 | 1000 | 1080 | P1, 0.10 лота |
| Подтверждено закрытие 0.04 лота P1 | 12 | 68 | 1012 | 1080 | P1, 0.06 лота |
| Затем Bid = 1.1025 | 12 | 50 | 1012 | 1062 | P1, 0.06 лота |
Почему нельзя просто закрыть другую позицию
Позиция, из которой вы намеревались выйти, может относиться к отдельному плану или советнику. Автоматическое закрытие более старой изменяет этот план, даже если удовлетворяет ограничению счета. Сначала определите желаемый символ, направление, количество и влияние на общую позицию. Несовместимость плана с условиями счета иногда требует пересмотра процесса, а не немедленной заменяющей сделки.
Противоположная заявка не является безопасным обходом: при хеджинговом учете она может создать новую позицию; счет может отдельно запрещать противоположные позиции. После частичного выхода проверяйте остаток и очередность. Отправка запроса не доказывает, что старейшая позиция закрыта полностью. См. разбор ошибок торговых запросов о сверке после неопределенного ответа.
Очередь до отправки — только план. Другая принятая операция может изменить счет до следующего запроса. При отказе сохраните его и перечитайте состояние, а не продолжайте по старой таблице. Отмечайте, кто инициировал действие: человек, советник или серверный механизм. Один символ не устанавливает источник запроса. Не выдавайте неопределенный результат за подтвержденное исполнение и не обвиняйте ручное закрытие в событии сервера без записи.
Защитные уровни и групповое закрытие
Справка MT5 для счетов FIFO (на английском) описывает связанные уровни стоп-лосс и тейк-профита для позиций одного инструмента, чтобы выдерживать очередность выхода. Не предполагайте полную независимость защиты каждой позиции. После изменения, включая удаление уровня, проверяйте действительно принятые значения для всех связанных позиций.
Для группового закрытия по FIFO справка описывает последовательное выполнение с остановкой при ошибке. Команда «закрыть все» не подтверждает нулевую позицию. Сохраните ответы и проверьте то, что осталось открытым, вместо повторной отправки всего набора. Принудительное закрытие по стоп-ауту проверяют отдельно по конкретному счету; пример P1/P2/P3 не устанавливает его порядок для любого поставщика.
Таким образом, описание свойства ACCOUNT_FIFO_CLOSE в MQL5 означает ограничение очередности закрытия; это пересказ документации MetaQuotes, а не универсальное правовое требование. Исходная запись ссылается на документацию, проверенную 13 октября 2026 года; это не дата реальных исполнений модели.
Следующая проверка без реальных заявок
- Сохраните полный retcode, точный символ и значение ACCOUNT_FIFO_CLOSE на нужном счете отдельно от принятого метода учета операций.
- Составьте актуальную очередь с идентификаторами, временем, направлением, объемом и принятыми защитными уровнями. Отметьте старейшую позицию и неопределенные ответы; сверяйте историю перед новым запросом.
- Пересчитайте P1/P2/P3 и распределение 30/50 USD после первого полного закрытия. Воспроизведение поведения терминала потребует подходящего демосчета и проверки каждого результата. Статья не рекомендует закрывать какую-либо конкретную позицию.
Следующий шаг
После проверки очередности разберите другие причины отказа, не заменяя запрос непредусмотренной сделкой.
Проверьте понимание
FIFO=true: P1 открыта в 08:00, P2 в 08:05, P3 в 08:10. У P2 наибольшая прибыль. Какая позиция первая в модели полного закрытия?
Ответ и объяснения без JavaScript
Правильный ответ: P1: она самая ранняя по этому же символу.
P2: она дает наибольшую прибыль.
Прибыль не задает эту очередность. P1 открыта раньше.
P1: она самая ранняя по этому же символу.
Верно. После подтвержденного полного закрытия заново проверьте оставшиеся позиции.
P3: самая новая строка истории должна идти первой.
Сортировка окна не меняет заданное правило FIFO.
Вопросы и ответы
FIFO запрещает хеджирование на каждом счете MT5?
Нет. Здесь FIFO — свойство очередности закрытия конкретного счета. Запрет противоположных позиций — отдельное ограничение, которое может сосуществовать с ним. Не переносите одну услугу на все счета, платформы и страны. Проверьте режим учета позиций, ACCOUNT_FIFO_CLOSE, разрешения и договор. Название «хеджинговый» не гарантирует свободы любых открытий и закрытий; исходите из действительного ответа об отказе.
FIFO в моей неттинговой таблице изменяет правило сервера?
Нет. Аналитический метод распределяет входы, выходы и результат по соглашению. Он не устанавливает допустимые сервером запросы к реальным позициям. Корректный журнал может сосуществовать с отказом по другой причине. Сохраняйте факты исполнения отдельно от распределения результата. ACCOUNT_FIFO_CLOSE — техническое свойство счета, а не название столбца, расчет доли прибыльных сделок или местное налоговое правило.
Можно вместо закрытия старейшей открыть противоположную позицию?
Не считайте это безопасным обходом. При хеджинговом учете может появиться новая позиция; противоположные позиции могут быть запрещены отдельно. Эффект отличается от закрытия выбранной позиции. Сначала определите, какой риск намеревались убрать и какие операции разрешены. После неопределенного ответа сверяйте позиции и историю. Здесь не предлагается автоматически заменять отказ новой заявкой или удалять принятую защиту.
После команды «закрыть все» счет уже без позиций?
Не без проверки подтвержденных исполнений и текущего состояния. Документация описывает последовательное закрытие по FIFO с остановкой при ошибке; часть позиций может остаться. Сохраните результат каждого этапа, перечитайте список и определите, что требует пояснения. Не повторяйте весь набор лишь из-за задержки отображения. Проверяйте остаток и принятые стопы после групповой команды: команда не доказывает завершение всех выходов.
Источники и пределы применения
- MetaQuotes: свойства счета и очередь FIFO
ACCOUNT_FIFO_CLOSE: старейшая позиция конкретного символа первой; вне хеджингового режима свойство false. Техническая документация, не общее правило российского или иного национального права.
- MetaQuotes: коды ответа торгового сервера
10045 означает ограничение FIFO. Отдельно различаются 10044 «только закрытие» и 10046 запрета противоположных позиций. Отправка или принятие запроса не заменяет проверку исполнения.
- MetaTrader 5: закрытие, защита и групповые операции
Выбранные разделы описывают выбор позиции, частичный объем, связанные уровни защиты на FIFO-счете и последовательную групповую процедуру с остановкой при ошибке. Реальное состояние и разрешения проверяются у конкретного поставщика.
Объяснение технических свойств MT5 и вымышленные модели, не универсальное правило всех счетов или стран. Полное закрытие и разрешенное по отдельному допущению частичное исполнение различаются. Цены USD за EUR и 100000 EUR на лот заданы; нет комиссий, свопов, кредита, денежных потоков или расчета маржи. Нет реальных торговых запросов и гарантии поведения конкретного сервера.