Допустимо ли повторять одно и то же значение в поле MULTIPLECHARVALUE или MULTIPLESTRINGVALUE? - PullRequest
1 голос
/ 20 мая 2019

Предположим, что поле FIX имеет тип MULTIPLECHARVALUE или MULTIPLESTRINGVALUE, а перечисленные значения, определенные для поля, A, B, C и D.Я знаю, что "A C D" является допустимым значением для этого поля, но допустимо ли повторение значения в этом поле?Например, "A C C D" законно?Если да, то какова его семантика?

Я могу представить три возможности:

  1. "A C C D" - недопустимое значение, поскольку C повторяется.
  2. "A C C D" действителен и семантически совпадает с "A C D".Другими словами, set семантика предназначена.
  3. "A C C D" действительна и имеет multiset / bag семантика.

К сожалению, я не могу найти четкого определения предполагаемой семантики MULTIPLECHARVALUE и MULTIPLESTRINGVALUE в документах спецификации FIX.

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Спецификация FIX50SP2 не отвечает на ваш вопрос, поэтому я могу только заключить, что любая из трех интерпретаций может считаться действительной.

Как и в случае вопросов с FIX, верный ответ зависит от контрагента, с которым вы общаетесь.

Итак, мой ответ:

  1. если вы клиентское приложение, спросите вашего контрагента, что они хотят (или проверьте их документы).
  2. если вы серверное приложение, вам решать. Ваши документы должны рассказать вашим клиентам, как действовать.

Если это помогает, механизм QuickFIX / n обрабатывает поля MultipleCharValue / MultipleStringValue как строки и оставляет его в коде приложения для анализа отдельных значений. Таким образом, разработчику легко поддерживать любые интерпретации или даже разные интерпретации для разных областей. (Я подозреваю, что другие реализации языка QuickFIX такие же.)

0 голосов
/ 20 мая 2019

Определение поля MultipleValueString - это строковое поле, содержащее одно или несколько значений, разделенных пробелом.У меня нет официальной спецификации, но есть несколько мест, где можно найти это определение:

  1. https://www.onixs.biz/fix-dictionary/4.2/index.html#MultipleValueString (я знаю, что onixs.biz очень преданстандартная спецификация)

    Строковое поле (см. определение «String» выше), содержащее одно или несколько значений, разделенных пробелом.

  2. https://aj -sometechnicalitiesoflife.blogspot.com / 2010/04 / fix-protocol-интервью-questions.html

    12.Что такое тип данных MultipleValueString?[...] Строковое поле, содержащее одно или несколько значений, разделенных пробелом.

Это оставляет конкретное поле этого типа вне зависимости от того, разрешены ли кратные значения или нет, хотя я подозреваю, что только несколько, еслилюбой должен иметь разрешенные кратные значения.Насколько я могу судить, спецификация FIX намеренно оставляет это открытым.

Например, для ExecInst <18> было бы глупо указывать одну и ту же инструкцию несколько раз.Я также подозреваю, что каждая реализация ведет себя по-разному (например, одна игнорирует дубликаты, другая блокирует ошибку / отклонение).

...