2016-10-05 3 views
1

Ich bin neu im FIX-Protokoll und verwende QuickFIX zum Parsen meiner FIX-Nachrichten. Jedes Mal, wenn ich eine Positionsmeldung Meldung (AP) erhalte, wird es durch die FIX-Engine mit dem folgenden Fehler abgelehnt:Fehler im Positionsbericht (FIX 4.4): Der erste Eintrag der Gruppe 702 beginnt nicht mit dem Trennzeichen 704

Group 702's first entry does not start with delimiter 704

Hier 702 ein Gruppen-Tag ist. Ich habe einige Nachforschungen angestellt und festgestellt, dass eine sich wiederholende Gruppennachricht ihr erstes Feld als Trennzeichen verwendet. In meinem Fall soll die Gruppe 702 eines der Tags 704 (LongQty) oder 705 (ShortQty) haben. Nur eines der Tags ist vorhanden.

Mein Kontrahent sendet nicht das 703-Tag. Wenn die FIX-Engine erkennt, dass in einigen Fällen kein 704-Tag vorhanden ist, wird die Nachricht zurückgewiesen. Bitte lassen Sie mich Ihren Vorschlag wissen, um dieses Problem zu überwinden.

Antwort

2

FIX erwartet, dass jede Gruppe mit einem einzelnen konsistenten Tag beginnt.

Sie können dieses Tag in Ihrem XML DataDictionary ändern, z. B. 704 statt 703 verwenden, indem Sie die Felder in dieser Gruppe neu anordnen (oder löschen/hinzufügen).

In my case group 702 is supposed to have either tag 704(LongQty) or 705(ShortQty).

Nein, das wird nicht funktionieren. Beginnt es immer mit 704 oder startet es immer mit 705? Es kann nicht eins sein.

Wenn Ihre Gegenpartei wirklich sagt, dass es eine von beiden ist, dann machen sie FIX falsch und wir sollten sie öffentlich beschämen. (Im Ernst, können sie nicht 704 = 0 setzen, anstatt es wegzulassen?) Um mit dieser Idiotie umzugehen, müssen Sie vielleicht die QF-Engine hacken.

Ich schlage vor, Sie überprüfen mit Ihrem Kontrahenten, um zu bestätigen, dass sie es wirklich so falsch machen. Ich hoffe (für dich), dass du dich irrst.

EDIT:

Dies ist aus der FIX 44 spec, Band 1, Seite 19:

If the repeating group is used, the first field of the repeating group is required. This allows implementations of the protocol to use the first field as a "delimiter" indicating a new repeating group entry. The first field listed after the NoXXX, then becomes conditionally required if the NoXXX field is greater than zero.

+0

Ich doppelt mit meinem Data Dictionary geprüft, mein Kontrahent erwartet eine der beiden Tags. Bitte beachten Sie die folgende Meldung _20161004-18: 20: 15.063: 8 = FIX.4.49 = 23735 = AP34 = 549 = XXXX52 = 20161004-18: 20: 14.83556 = XXXDEMOFIX1 = 9277455 = GBPUSD231 = 1581 = 1702 = 1705 = 27200710 = XXXX715 = 20161004721 = 981a4eec-1886-4571-bd25-cf3c9e10115a728 = 0730 = 1.27940472230385731 = 1734 = 1.2794047223038510 = 198_ –

+0

Sie meinen, die Gegenpartei sendet * (nicht ~ erwartet ~) eines der beiden Tags, richtig? Du bist der Empfänger. –

+0

Ja. Stimmt. Gibt es einen Weg, das zu überkommen? –

Verwandte Themen