{{Quickfixn}} re duplicate tags in fix44 protocol - ammending fix44.xml
Jonathan Hodgson
jhodgson at temenos.com
Wed Sep 26 09:01:48 PDT 2012
Logging sorted with filelogfactory rather than screenlogfactory, thanks
Regarding - Make sure that your FIX44.xml DataDictionary has that repeating group defined in your Trade Capture report definition. The validation is probably failing because NoPartySubIDs doesn?t seem to be part of the default definition TradeCaptureReport from a quick look at the FIX44.xml.
I tried adding
<component name="Parties">
<group name="NoPartyIDs" required="N">
<field name="PartyID" required="N" />
<field name="PartyIDSource" required="N" />
<field name="PartyRole" required="N" />
<group name="NoPartySubIDs" required="N">
<field name="PartySubID" required="N" />
<field name="PartySubIDType" required="N" />
</group>
</group>
</component>
To my tradeCapturereport defn
<message name="TradeCaptureReport" msgtype="AE" msgcat="app">
<field name="TradeReportID" required="Y" />
<field name="TradeReportTransType" required="N" />
<field name="TradeReportType" required="N" />
<field name="TradeRequestID" required="N" />
<field name="TrdType" required="N" />
<field name="TrdSubType" required="N" />
<field name="SecondaryTrdType" required="N" />
<field name="TransferReason" required="N" />
<field name="ExecType" required="N" />
<field name="TotNumTradeReports" required="N" />
<field name="LastRptRequested" required="N" />
<field name="UnsolicitedIndicator" required="N" />
<field name="SubscriptionRequestType" required="N" />
<field name="TradeReportRefID" required="N" />
<field name="SecondaryTradeReportRefID" required="N" />
<field name="SecondaryTradeReportID" required="N" />
<field name="TradeLinkID" required="N" />
<field name="TrdMatchID" required="N" />
<field name="ExecID" required="N" />
<field name="OrdStatus" required="N" />
<field name="SecondaryExecID" required="N" />
<field name="ExecRestatementReason" required="N" />
<field name="PreviouslyReported" required="Y" />
<field name="PriceType" required="N" />
<component name="Instrument" required="Y" />
<component name="FinancingDetails" required="N" />
<component name="OrderQtyData" required="N" />
<field name="QtyType" required="N" />
<component name="YieldData" required="N" />
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N" />
</group>
<field name="UnderlyingTradingSessionID" required="N" />
<field name="UnderlyingTradingSessionSubID" required="N" />
<field name="LastQty" required="Y" />
<field name="LastPx" required="Y" />
<field name="LastParPx" required="N" />
<field name="LastSpotRate" required="N" />
<field name="LastForwardPoints" required="N" />
<field name="LastMkt" required="N" />
<field name="TradeDate" required="Y" />
<field name="ClearingBusinessDate" required="N" />
<field name="AvgPx" required="N" />
<component name="SpreadOrBenchmarkCurveData" required="N" />
<field name="AvgPxIndicator" required="N" />
<component name="PositionAmountData" required="N" />
<field name="MultiLegReportingType" required="N" />
<field name="TradeLegRefID" required="N" />
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N" />
<field name="LegQty" required="N" />
<field name="LegSwapType" required="N" />
<component name="LegStipulations" required="N" />
<field name="LegPositionEffect" required="N" />
<field name="LegCoveredOrUncovered" required="N" />
<component name="NestedParties" required="N" />
<field name="LegRefID" required="N" />
<field name="LegPrice" required="N" />
<field name="LegSettlType" required="N" />
<field name="LegSettlDate" required="N" />
<field name="LegLastPx" required="N" />
</group>
<field name="TransactTime" required="Y" />
<component name="TrdRegTimestamps" required="N" />
<field name="SettlType" required="N" />
<field name="SettlDate" required="N" />
<field name="MatchStatus" required="N" />
<field name="MatchType" required="N" />
<group name="NoSides" required="Y">
<field name="Side" required="Y" />
<field name="OrderID" required="Y" />
<field name="SecondaryOrderID" required="N" />
<field name="ClOrdID" required="N" />
<field name="SecondaryClOrdID" required="N" />
<field name="ListID" required="N" />
<component name="Parties" required="N" />
<field name="Account" required="N" />
<field name="AcctIDSource" required="N" />
<field name="AccountType" required="N" />
<field name="ProcessCode" required="N" />
<field name="OddLot" required="N" />
<group name="NoClearingInstructions" required="N">
<field name="ClearingInstruction" required="N" />
</group>
<field name="ClearingFeeIndicator" required="N" />
<field name="TradeInputSource" required="N" />
<field name="TradeInputDevice" required="N" />
<field name="OrderInputDevice" required="N" />
<field name="Currency" required="N" />
<field name="ComplianceID" required="N" />
<field name="SolicitedFlag" required="N" />
<field name="OrderCapacity" required="N" />
<field name="OrderRestrictions" required="N" />
<field name="CustOrderCapacity" required="N" />
<field name="OrdType" required="N" />
<field name="ExecInst" required="N" />
<field name="TransBkdTime" required="N" />
<field name="TradingSessionID" required="N" />
<field name="TradingSessionSubID" required="N" />
<field name="TimeBracket" required="N" />
<component name="CommissionData" required="N" />
<field name="GrossTradeAmt" required="N" />
<field name="NumDaysInterest" required="N" />
<field name="ExDate" required="N" />
<field name="AccruedInterestRate" required="N" />
<field name="AccruedInterestAmt" required="N" />
<field name="InterestAtMaturity" required="N" />
<field name="EndAccruedInterestAmt" required="N" />
<field name="StartCash" required="N" />
<field name="EndCash" required="N" />
<field name="Concession" required="N" />
<field name="TotalTakedown" required="N" />
<field name="NetMoney" required="N" />
<field name="SettlCurrAmt" required="N" />
<field name="SettlCurrency" required="N" />
<field name="SettlCurrFxRate" required="N" />
<field name="SettlCurrFxRateCalc" required="N" />
<field name="PositionEffect" required="N" />
<field name="Text" required="N" />
<field name="EncodedTextLen" required="N" />
<field name="EncodedText" required="N" />
<field name="SideMultiLegReportingType" required="N" />
<group name="NoContAmts" required="N">
<field name="ContAmtType" required="N" />
<field name="ContAmtValue" required="N" />
<field name="ContAmtCurr" required="N" />
</group>
<component name="Stipulations" required="N" />
<group name="NoMiscFees" required="N">
<field name="MiscFeeAmt" required="N" />
<field name="MiscFeeCurr" required="N" />
<field name="MiscFeeType" required="N" />
<field name="MiscFeeBasis" required="N" />
</group>
<field name="ExchangeRule" required="N" />
<field name="TradeAllocIndicator" required="N" />
<field name="PreallocMethod" required="N" />
<field name="AllocID" required="N" />
<group name="NoAllocs" required="N">
<field name="AllocAccount" required="N" />
<field name="AllocAcctIDSource" required="N" />
<field name="AllocSettlCurrency" required="N" />
<field name="IndividualAllocID" required="N" />
<component name="NestedParties2" required="N" />
<field name="AllocQty" required="N" />
</group>
</group>
<field name="CopyMsgIndicator" required="N" />
<field name="PublishTrdIndicator" required="N" />
<field name="ShortSaleReason" required="N" />
<component name="Parties">
<group name="NoPartyIDs" required="N">
<field name="PartyID" required="N" />
<field name="PartyIDSource" required="N" />
<field name="PartyRole" required="N" />
<group name="NoPartySubIDs" required="N">
<field name="PartySubID" required="N" />
<field name="PartySubIDType" required="N" />
</group>
</group>
</component>
</message>
But the bloomberg test still failed, The bloomberg defn is
name="NoSubPartyIDs">
<field internal="FIRM_NAME" fix="523" fix-name="PartySubID">
<description>full firm name</description>
</field>
<field internal="#" fix="803" fix-name="PartySubIDType" default="1">
<description>1 = Firm</description>
</field>
</group>
<group internal="GROUP_NO_SUBPARTYIDS" fix="802" fix-name="NoSubPartyIDs">
<field internal="TRADER_ID" fix="523" fix-name="PartySubID">
<description>uuid for recipient side</description>
</field>
<field internal="#" fix="803" fix-name="PartySubIDType" default="2">
<description>2 = Person</description>
</field>
</group>
<group internal="GROUP_NO_SUBPARTYIDS" fix="802" fix-name="NoSubPartyIDs">
<field internal="TRADER_NAME" fix="523" fix-name="PartySubID">
<description>trader name</description>
</field>
<field internal="#" fix="803" fix-name="PartySubIDType" default="9">
<description>9 = Contact Name</description>
</field>
</group>
Do I need to include the component keyword?
Thanks
Jonathan
-----Original Message-----
From: quickfixn-bounces at lists.quickfixn.com<mailto:quickfixn-bounces at lists.quickfixn.com> [mailto:quickfixn-bounces at lists.quickfixn.com]<mailto:[mailto:quickfixn-bounces at lists.quickfixn.com]> On Behalf Of quickfixn-request at lists.quickfixn.com<mailto:quickfixn-request at lists.quickfixn.com>
Sent: 19 September 2012 13:29
To: quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com>
Subject: Quickfixn Digest, Vol 11, Issue 26
Send Quickfixn mailing list submissions to
quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com>
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com
or, via email, send a message with subject or body 'help' to
quickfixn-request at lists.quickfixn.com<mailto:quickfixn-request at lists.quickfixn.com>
You can reach the person managing the list at
quickfixn-owner at lists.quickfixn.com<mailto:quickfixn-owner at lists.quickfixn.com>
When replying, please edit your Subject line so it is more specific than "Re: Contents of Quickfixn digest..."
Today's Topics:
1. Re: Q1. quickfix rejecting bloomberg trade Capture report
due to duplicate tag 523's Q2. No logging (Ruaan Viljoen)
----------------------------------------------------------------------
Message: 1
Date: Wed, 19 Sep 2012 13:07:49 +0200
From: Ruaan Viljoen <ruaanv at estuarys.co.za<mailto:ruaanv at estuarys.co.za>>
To: Mailing list for QuickFIX/n <quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com>>
Subject: Re: {{Quickfixn}} Q1. quickfix rejecting bloomberg trade
Capture report due to duplicate tag 523's Q2. No logging
Message-ID:
<C0E1238152D58A4FB82F19FA6033092A0311426F2B0B at DOLPHIN.estuarys.local<mailto:C0E1238152D58A4FB82F19FA6033092A0311426F2B0B at DOLPHIN.estuarys.local>>
Content-Type: text/plain; charset="utf-8"
Hi Jonathan,
Make sure that your application has the correct permissions to write to the FileLogPath. Perhaps post your .cfg file here as well, maybe someone spots a mistake. Also is your initiator instantiation still the same as in your original post? Forgetting to pass the LogFactory object is something I have done -.-.
Make sure that your FIX44.xml DataDictionary has that repeating group defined in your Trade Capture report definition. The validation is probably failing because NoPartySubIDs doesn?t seem to be part of the default definition TradeCaptureReport from a quick look at the FIX44.xml.
-Ruaan
From: quickfixn-bounces at lists.quickfixn.com<mailto:quickfixn-bounces at lists.quickfixn.com> [mailto:quickfixn-bounces at lists.quickfixn.com]<mailto:[mailto:quickfixn-bounces at lists.quickfixn.com]> On Behalf Of Jonathan Hodgson
Sent: 19 September 2012 12:21 PM
To: quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com>
Subject: {{Quickfixn}} Q1. quickfix rejecting bloomberg trade Capture report due to duplicate tag 523's Q2. No logging
Importance: High
Almost Cracked it :), I am now receiving execution messages to the FromApp on my Client, I changed both my executor and Client to ".net framework 3.5" , VS2010 had set my console projects by default to .net 4 client profile (thanks Ruaan for hinting at that) and was able to see execution reports incoming (before they weren?t doing anything),
Question 1 - I still get no logging, my client file is set as FileLogPath=C:\fixfiles\logs, any ideas?
Question 2 - I am now connected to BLOOMBERG for testing and quickfix is rejecting their trade Capture report due to duplicate 523?s tags (they told me this is normal), msg below , is there a setting I can change for this or a bugette? I am using fix44. Heartbeat and seq resets etc all working well ?
Tag No. Tag Name Data Meta Data
9 BodyLength 588
35 MsgType AE TRADE_CAPTURE_REPORT
49 SenderCompID xxxFX
56 TargetCompID xxxXxxx
34 MsgSeqNum 39
52 SendingTime 20120918-14:52:39
60 TransactTime 20120918-14:52:37.000
150 ExecType F TRADE
570 PreviouslyReported N
31 LastPx 0.8038
571 TradeReportID 3-2-136173M-0-0
32 LastQty 1000
63 SettlType 0 REGULAR
64 SettlDate 20120920
487 TradeReportTransType 0 NEW
218 Spread 0
460 Product 4 CURRENCY
461 CFICode MRCXXX
194 LastSpotRate 0.8038
854 QtyType 0 UNITS
75 TradeDate 20120918
195 LastForwardPoints 0
48 SecurityID EUR/GBP
22 SecurityIDSource 6 ISO_CURRENCY_CODE
55 Symbol EUR/GBP
552 NoSides 2 BOTH_SIDES
54 Side 1 BUY
37 OrderID 3-2-146172M-0-0
11 ClOrdID 3-2-146172M-0-0
453 NoPartyIDs 1
448 PartyID CBAF
447 PartyIDSource C GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER
452 PartyRole 27
802 NoPartySubIDs 3
523 PartySubID COMMERCIAL BANK OF xxx LTD, TOWN
803 PartySubIDType 1
523 PartySubID 7615688
803 PartySubIDType 2
523 PartySubID MR SMITH
803 PartySubIDType 9
15 Currency EUR
119 SettlCurrAmt 803.8
120 SettlCurrency GBP
54 Side 2 SELL
37 OrderID 3-2-146172M-0-0
11 ClOrdID 3-2-146172M-0-0
453 NoPartyIDs 1
448 PartyID XXXX
447 PartyIDSource C GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER
452 PartyRole 17
802 NoPartySubIDs 2
523 PartySubID Bloomberg FX, NY
803 PartySubIDType 1
523 PartySubID BLOOMBERG USER
803 PartySubIDType 9
15 Currency EUR
119 SettlCurrAmt 803.8
120 SettlCurrency GBP
10 CheckSum 255
Thanks
Jonathan
Message: 1
Date: Mon, 3 Sep 2012 11:05:12 -0500
From: Grant Birchmeier <gbirchmeier at connamara.com<mailto:gbirchmeier at connamara.com<mailto:gbirchmeier at connamara.com%3cmailto:gbirchmeier at connamara.com>>>
To: "Mailing list for QuickFIX/n" <quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com<mailto:quickfixn at lists.quickfixn.com%3cmailto:quickfixn at lists.quickfixn.com>>>
Subject: Re: {{Quickfixn}} incoming Execution report to CLIENT1
(initiator) not invoking onMessage?
Message-ID:
<CAMq4opNA=ZmvmJCV5Zxqk+hznjE1=f1AT3N6KuvuFDhY4Nxgbg at mail.gmail.com<mailto:CAMq4opNA=ZmvmJCV5Zxqk+hznjE1=f1AT3N6KuvuFDhY4Nxgbg at mail.gmail.com<mailto:CAMq4opNA=ZmvmJCV5Zxqk+hznjE1=f1AT3N6KuvuFDhY4Nxgbg at mail.gmail.com%3cmailto:CAMq4opNA=ZmvmJCV5Zxqk+hznjE1=f1AT3N6KuvuFDhY4Nxgbg at mail.gmail.com>>>
Content-Type: text/plain; charset="iso-8859-1"
Do you see the message in your Client's logs?
On Mon, Sep 3, 2012 at 4:41 AM, Jonathan Hodgson <jhodgson at temenos.com<mailto:jhodgson at temenos.com<mailto:jhodgson at temenos.com%3cmailto:jhodgson at temenos.com>>>wrote:
> I am successfully sending a test execution report from my Executor
> (acceptor) but nothing is being received on the Client, heartbeat and
> login all appear to work ok Main Client Code as below - onMessage
> does not get run as expected?
>
> Sub Main()
>
> myApplication = New Application
>
> myInitiator = New QuickFix.Transport.SocketInitiator(myApplication,
> myStoreFactory, mySessionSettings, myLogFactory)
>
> Initiator.start()
>
> End sub
Public Class Application : Inherits MessageCracker
>
> Implements QuickFix.Application
Public Overloads Sub onMessage(ByVal message As QuickFix.FIX44.
> ExecutionReport, ByVal Param As QuickFix.SessionID)
> System.Console.WriteLine()
> MsgBox("Execution report mesaage received")
> End Sub
> End Class
> What am I missing?
> Thanks
>
> Jonathan
>
The information in this e-mail and any attachments is confidential and may be legally privileged.
It is intended solely for the addressee or addressees. Any use or disclosure of the contents
of this e-mail/attachments by a not intended recipient is unauthorized and may be unlawful.
If you have received this e-mail in error please notify the sender.
Please note that any views or opinions presented in this e-mail are solely those of the author and
do not necessarily represent those of TEMENOS.
We recommend that you check this e-mail and any attachments against viruses.
TEMENOS accepts no liability for any damage caused by any malicious code or virus transmitted by this e-mail.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20120919/6dea53dc/attachment.htm>
------------------------------
_______________________________________________
Quickfixn mailing list
Quickfixn at lists.quickfixn.com<mailto:Quickfixn at lists.quickfixn.com>
http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com
End of Quickfixn Digest, Vol 11, Issue 26
*****************************************
The information in this e-mail and any attachments is confidential and may be legally privileged. It is intended solely for the addressee or addressees. Any use or disclosure of the contents of this e-mail/attachments by a not intended recipient is unauthorized and may be unlawful. If you have received this e-mail in error please notify the sender. Please note that any views or opinions presented in this e-mail are solely those of the author and do not necessarily represent those of TEMENOS. We recommend that you check this e-mail and any attachments against viruses. TEMENOS accepts no liability for any damage caused by any malicious code or virus transmitted by this e-mail.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20120926/2a435015/attachment-0001.htm>
More information about the Quickfixn
mailing list