Ответ FIX с этой ошибкой: неверное значение (вне диапазона) для этого тега - PullRequest
0 голосов
/ 06 февраля 2020

Когда я отправляю запрос заказа на сервере FIX как:

8=FIXT.1.1|9=179|35=D|34=34|49=135|52=20200206-04:52:04.406|56=PSE|1=11101401117577|11=1580964724079|38=1000|40=2|44=10.5|54=1|55=AGI|59=0|60=20200206-12:52:04.406|453=1|448=13501100|447=C|452=12|10=009|)

Получаемый ответ:

8=FIXT.1.1|9=000362|35=8|49=PSE|56=135|34=34|57=13501100|52=20200206-04:52:04.533|37=NONE|11=1580964724079|453=4|448=13501999|447=C|452=11|448=13501999|447=C|452=36|448=13501100|447=C|452=12|448=135|447=C|452=1|17=1904|150=8|39=8|103=99|1=11101401117577|55=AGI|54=1|38=1000|44=10.5|59=0|528=F|151=0|14=0|60=20200206-04:52:04.356|58=(293): **Orders are not being accepted at this time|10=020|)**

С ошибкой PSE:

<20200206-04:52:04, FIXT.1.1:135->PSE, error> (Rejecting invalid message: quickfix.IncorrectTagValue: Value is incorrect (out of range) for this tag, field=528 field=528: 8=FIXT.1.1|9=362|35=8|34=34|49=PSE|52=20200206-04:52:04.533|56=135|57=13501100|1=11101401117577|11=1580964724079|14=0|17=1904|37=NONE|38=1000|39=8|44=10.5|54=1|55=AGI|58=(293): Orders are not being accepted at this time|59=0|60=20200206-04:52:04.356|103=99|150=8|151=0|528=F|453=4|448=13501999|447=C|452=11|448=13501999|447=C|452=36|448=13501100|447=C|452=12|448=135|447=C|452=1|10=132|)

<20200206-04:52:04, FIXT.1.1:135->PSE, error> **(Reject sent for Message 34: Value is incorrect (out of range) for this tag**, field=528:528)

В соответствии с документальным фильмом значение 1 должно быть 14 di git торговый счет (1 = xxxxxxxxxxxxxx), но когда я это даю, я получаю вышеуказанную ошибку. Так какое значение должно быть дано для 1, так ответ должен быть получен.

Так каково решение этой ошибки?

1 Ответ

2 голосов
/ 06 февраля 2020

Процесс выглядит следующим образом:

  • вы отправляете NewOrderSingle
  • они отвечают сообщением ExecutionReport, что они этого не делают принимать заказы в это время
  • вы не PSE) отклоняете этот ExecutionReport, поскольку тег 528 в ExecutionReport, который отправил PSE, содержит значение, которое не содержится в вашем словарь данных.

Что вам нужно сделать, это либо

  • Прочитать правила взаимодействия PSE (т.е. их FIX spe c) и добавить все необходимые теги и значения в свой словарь данных.
  • Настройте сеанс так, чтобы он не проверял входящие сообщения (настройка ValidateIncomingMessage=N), но это означает, что вам потребуется выполнить проверку самостоятельно, если это необходимо. Например, если вы хотите получить значения из тега 150/ExecType, вы можете быть уверены, что только значения, которые разрешены в словаре данных, достигают вашего приложения. При отключенной проверке вы должны будете выполнить эти проверки самостоятельно.
    • В качестве альтернативы вы можете установить RejectInvalidMessage=N, который также не будет отклонять сообщение, а только регистрирует предупреждение с ошибкой проверки.
...