簡體   English   中英

QuickFixN:如何在 QuoteRequest 消息上按特定順序設置字段?

[英]QuickFixN: How to set fields in a specific sequence on a QuoteRequest message?

我們要求按照設置的順序發送消息的前 3 個字段,即 QuoteReqID、OnBehalfOfCompID、Account。 但是,當它們被添加到消息中時,它們會按數字升序重新排序,即 Account、OnBehalfOfCompID、QuoteReqID。 使用該組,我們可以定義字段順序,但我看不到為消息執行此操作的選項。 有人知道我們如何實現這一目標嗎?

            var message = new QuoteRequest();
            int[] fieldOrder = new[] {Tags.Currency, Tags.Symbol, Tags.SecurityType, Tags.CFICode, Tags.NoLegs, Tags.LegQty, Tags.LegFutSettDate, Tags.LegSecuritySubType};

            message.SetField(new QuoteReqID(stream.QuoteRequestId));
            message.SetField(new OnBehalfOfCompID(_compId));
            message.SetField(new Account(_accountId));
            var group = new Group(Tags.NoRelatedSym, 0, fieldOrder);
            group.SetField(new Currency(stream.Ccy));
            group.SetField(new Symbol(stream.Ccy1 + "/" + stream.Ccy2));
            group.SetField(new SecurityType("FOR"));
            group.SetField(new CFICode("FORWARD"));
            group.SetField(new NoLegs(1));
            group.SetField(new LegQty(stream.Amount));
            group.SetField(new LegFutSettDate(stream.FutSettDate));
            group.SetField(new LegSecuritySubType("TOD"));

            message.AddGroup(group);

            QuickFix.Session.SendToTarget(message, _ratesSession.SessionId);

我不熟悉 QuickFixN,但我知道OnBehalfOfCompID是消息header中的字段,而QuoteReqIDAccount都是消息正文中的字段。 消息中使用的所有 header 字段必須出現在任何正文字段之前。

這絕對不是指定 FIX 協議的行為方式。 在規范中,正文中不在重復組內的字段可以按任何順序排列。 您的交易對手要求不符合 FIX 的行為(我看不出有什么好處)。

因此,QuickFIX/n 不支持這一點,因為... QF/n 實現了 FIX,而不是您的交易對手想要的這種愚蠢的非 FIX 行為。

很抱歉告訴你這一點,但你必須以某種方式破解引擎才能實現這一點。

還有一個警告: OnBehalfOfCompID是 header 字段,而不是正文字段。 QF/n 將它添加到傳出消息的正文中應該沒有問題,但它可能會在傳入時拒絕此類消息。 (感謝@ciaran-mchale 的回答指出了這一點。)

“onbehalfcompid”(標簽 115)在修復消息的 header 下,quoteReqID(標簽 131)和帳戶(標簽 1)在修復消息的正文下。 並且所有 header 標簽都應該出現在正文消息標簽之前。 這適用於所有修復引擎/模擬器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM