TL;DR
Это не разрешено в кодировке значения тега.
(но в FIXML разрешено)
Некоторые пояснения
Первоначальное непонимание возникло из-за этого утверждения в спецификации значения тега FIX: см. здесь , найдите Полевое присутствие
Тег (поле) должен появляться в сообщении не более одного раза, за исключением случаев, когда тег появляется в повторяющейся группе.
Но, как я узнал, это относится к формату wire сообщения, а не к определению сообщения.
Принимая во внимание, что спецификация FIX5.0SP2, том 1, ссылается на определение сообщения и гласит:
Номер тега (поле) должен появляться в сообщении только один раз. Если он появляется в сообщении более одного раза, это следует рассматривать как ошибку в документе спецификации.
Тем временем я даже нашел упоминание об этом в FIXimate при просмотре компонента NestedParties
(выделено мной): (ссылка на компонент NestedParties в FIXimate)
Блок компонента NestedParties идентичен блоку Party. Он используется в других блоках компонентов и повторяющихся группах, когда будет иметь место вложение, приводящее к множественным появлениям блока Сторон в одном сообщении FIX. Использование NestedParties в этих условиях позволяет избежать множественных ссылок на блок Сторон в одном и том же сообщении. что не допускается в синтаксисе тега/значения FIX.
Кстати, есть также компоненты NestedParties2
, NestedParties3
, NestedParties4
для решения этой проблемы.
Информация с форума сообщества FIX Trading
Доступ к ветке можно получить здесь, но, насколько я знаю, вы можете получить к ней доступ только в том случае, если вы являетесь членом FIX TC: Форум FIX TC
Эксперт FIX Ханно Кляйн предоставил следующую информацию:
Цитата из переработанной онлайн-спецификации относится к проводному формату любого экземпляра сообщения, закодированного в синтаксисе tagvalue. Это означает, что внутри проводного формата одиночной повторяющейся группы тег (поле) может появляться более одного раза.
FIXML не имеет этого ограничения:
Ограничение фактически ограничено кодировкой значения тега. Например, компонент сторон — это «Pty» для всех экземпляров в FIXML, синтаксисе/кодировке XML FIX. Это связано с тем, что синтаксис XML имеет однозначную структуру с четким путем к каждому вхождению компонента или поля. Имена XML должны быть уникальными только в пределах одного и того же элемента.
Значение тега:
Для значения тега синтаксический анализатор должен знать, когда начинается и заканчивается повторяющаяся группа. Поле NoXXX отмечает начальную точку, а поле, не входящее в группу, отмечает конечную точку. Нет явных разделителей для повторяющихся групп в значении тега, а компоненты (неповторяющиеся) вообще не видны в формате провода. Технически вы, вероятно, правы в том, что ценник может существовать в двух отдельных повторяющихся группах, не вызывая проблем с синтаксическим анализатором, но я не вижу преимущества в разрешении этого исключения из правила. Вы не можете разрешить это для двух соседних уровней, например. корень + уровень вложенности 1 или уровень вложенности x + уровень вложенности y.
Эта часть исходного ответа все еще применяется
С другой стороны, при определении собственных повторяющихся групп используйте обозначение NoXXX
для повторяющихся групп, так как это официальная рекомендация. см. здесь, найдите поле NumInGroup
Рекомендуется, чтобы поля NumInGroup назывались NoXXX, например. NoContra Brokers(382).
Однако, следуя вашему примеру с 44/Price
, вы обычно видите, что 566/LegPrice
используется в качестве цены для отдельного этапа, поскольку они используются по-разному. Первая — это цена, используемая для исполнения ордера, вторая — при определении этапа стратегии.
Короче говоря, при определении структуры вашего сообщения и повторяющихся групп вы должны действительно подумать о том, является ли значение тега одинаковым для всех вхождений тега в сообщении и действительно ли имеет смысл использовать один и тот же тег. в теле и в повторяющихся группах. Ясность должна быть на первом месте.
неправильная (зачеркнутая) часть исходного ответа
Сначала я подумал, что этого нельзя допустить, но в основном потому, что я никогда не видел, чтобы это появлялось где-то в реальном сообщении. Но на самом деле я не смог найти причину, по которой это нельзя разрешить. В спецификации сказано только: см. здесь, ищите присутствие в поле
Тег (поле) должен появляться в сообщении не более одного раза, за исключением случаев, когда тег появляется в повторяющейся группе.
Тег (поле) должен появляться не более одного раза для каждого экземпляра повторяющейся группы.
person
Christoph John
schedule
04.11.2020