quickfix-developers Mailing List for QuickFIX (Page 2)
Brought to you by:
orenmnero
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
(5) |
Mar
(16) |
Apr
(15) |
May
(17) |
Jun
(33) |
Jul
(35) |
Aug
(34) |
Sep
(19) |
Oct
(40) |
Nov
(51) |
Dec
(43) |
2003 |
Jan
(45) |
Feb
(79) |
Mar
(124) |
Apr
(121) |
May
(132) |
Jun
(77) |
Jul
(110) |
Aug
(57) |
Sep
(48) |
Oct
(83) |
Nov
(60) |
Dec
(40) |
2004 |
Jan
(67) |
Feb
(72) |
Mar
(74) |
Apr
(87) |
May
(70) |
Jun
(96) |
Jul
(75) |
Aug
(147) |
Sep
(128) |
Oct
(83) |
Nov
(67) |
Dec
(42) |
2005 |
Jan
(110) |
Feb
(84) |
Mar
(68) |
Apr
(55) |
May
(51) |
Jun
(192) |
Jul
(111) |
Aug
(100) |
Sep
(79) |
Oct
(127) |
Nov
(73) |
Dec
(112) |
2006 |
Jan
(95) |
Feb
(120) |
Mar
(138) |
Apr
(127) |
May
(124) |
Jun
(97) |
Jul
(103) |
Aug
(88) |
Sep
(138) |
Oct
(91) |
Nov
(112) |
Dec
(57) |
2007 |
Jan
(55) |
Feb
(35) |
Mar
(56) |
Apr
(16) |
May
(20) |
Jun
(77) |
Jul
(43) |
Aug
(47) |
Sep
(29) |
Oct
(54) |
Nov
(39) |
Dec
(40) |
2008 |
Jan
(69) |
Feb
(79) |
Mar
(122) |
Apr
(106) |
May
(114) |
Jun
(76) |
Jul
(83) |
Aug
(71) |
Sep
(53) |
Oct
(75) |
Nov
(54) |
Dec
(43) |
2009 |
Jan
(32) |
Feb
(31) |
Mar
(64) |
Apr
(48) |
May
(38) |
Jun
(43) |
Jul
(35) |
Aug
(15) |
Sep
(52) |
Oct
(62) |
Nov
(62) |
Dec
(21) |
2010 |
Jan
(44) |
Feb
(10) |
Mar
(47) |
Apr
(22) |
May
(5) |
Jun
(54) |
Jul
(19) |
Aug
(54) |
Sep
(16) |
Oct
(15) |
Nov
(7) |
Dec
(8) |
2011 |
Jan
(18) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(41) |
Jun
(40) |
Jul
(29) |
Aug
(17) |
Sep
(12) |
Oct
(23) |
Nov
(22) |
Dec
(11) |
2012 |
Jan
(8) |
Feb
(24) |
Mar
(5) |
Apr
(5) |
May
(6) |
Jun
(5) |
Jul
(5) |
Aug
(5) |
Sep
(2) |
Oct
(9) |
Nov
(2) |
Dec
(18) |
2013 |
Jan
(25) |
Feb
(16) |
Mar
(8) |
Apr
(2) |
May
(16) |
Jun
(17) |
Jul
(2) |
Aug
(13) |
Sep
(3) |
Oct
(4) |
Nov
(1) |
Dec
|
2014 |
Jan
(2) |
Feb
|
Mar
(22) |
Apr
(9) |
May
(3) |
Jun
(1) |
Jul
(5) |
Aug
(11) |
Sep
(18) |
Oct
(4) |
Nov
(4) |
Dec
(3) |
2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(37) |
Jul
|
Aug
(4) |
Sep
(6) |
Oct
(1) |
Nov
(4) |
Dec
(2) |
2016 |
Jan
(9) |
Feb
(3) |
Mar
(7) |
Apr
(1) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
(7) |
Oct
(3) |
Nov
(16) |
Dec
|
2017 |
Jan
(1) |
Feb
(15) |
Mar
(2) |
Apr
(12) |
May
(4) |
Jun
(7) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
(8) |
2018 |
Jan
(2) |
Feb
(4) |
Mar
(2) |
Apr
(8) |
May
(3) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
2020 |
Jan
|
Feb
(4) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
(12) |
Aug
(5) |
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(1) |
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Grant B. <gbi...@co...> - 2020-07-28 13:59:24
|
I don't really understand the question. QF already attempts to reconnect whenever it goes down. On Tue, Jul 28, 2020 at 6:15 AM Ming Cheng <che...@ho...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ > > Hi, > > FIX::Application allows me to monitor logon/logout and it seems I can't > monitor a session's connection/disconnection status through > FIX::Initiator/FIX::Session interface. What's the best practice to monitor > a session's connection status and reconnect/relogin a session if my > initiator manages several sessions? > > Thanks. > Ming > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com -- This email, along with any attachments, is confidential. If you believe you received this message in error, please contact the sender immediately and delete all copies of the message. Thank you from Connamara Systems, LLC. |
From: Ming C. <che...@ho...> - 2020-07-28 09:52:11
|
Hi, FIX::Application allows me to monitor logon/logout and it seems I can't monitor a session's connection/disconnection status through FIX::Initiator/FIX::Session interface. What's the best practice to monitor a session's connection status and reconnect/relogin a session if my initiator manages several sessions? Thanks. Ming |
From: Ming C. <che...@ho...> - 2020-07-28 08:23:27
|
Hi, If I receive a ResendRequest, would quickfix lib handles it transparently or I need to do something like ask the lib to find relevant msg to send? Thanks. Ming |
From: Ezra <ezr...@gm...> - 2020-07-21 01:51:23
|
Hi, I see several examples in emails on how to iterate through the fields in a message in other languages, but in python, the `message` object is not iterable nor are there any methods on the object for enumeration of fields that I see. Right now, to iterate I have to use message.toString(), split on '\x01` and for each split on '=' to get each field/value pair. Is there a better way to do this? Thanks, Ezra |
From: Grant B. <gbi...@co...> - 2020-03-02 15:53:32
|
I am *very* familiar with this particular ICE interface. I have some comments and suggestions: BUT FIRST: You are on the wrong mailing list. This list is for the original C++ version, not the C# port "QuickFix/N" (which I maintain) that I think you are using. See http://quickfixn.org/help/ . *However, the following advice would apply to any QF port:* ICE's SecDef responses can be frickin' huge multipart beasts. I suspect you are requesting too much too fast, and then trying to handle them all on the QF event-processing thread. The messages are backing up in the queue, blocking the engine from responding to ICE in a timely fashion. *Suggestion 1:* All QF callbacks should return quickly. If you have expensive processing, delegate it to a separate worker thread. In your case: create a second worker thread to handle SecDefs. When you receive a SecDef, your OnMessage(SecDef) callback should push it into a queue that the worker thread will consume from. *Suggestion 2:* Put a delay between each SecDef Request you send. As high as you can tolerate. ICE will send those responses fast and frequently; you've gotta give your OnMessage() some room to handle them. I have a client whose users wants to send 50+ SecDefRequests every morning. Right now we have them staggering each request by 60 seconds. On the downside, it means they have to wait an hour to get the full set. (Some responses are bigger than others. If you wanted, you could look at the logs and figure out which Defs are huge and which are small, and only do the delay after requesting big ones.) -Grant On Mon, Mar 2, 2020 at 9:10 AM Veduruparthi Raju <rve...@gm...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ > > Hello, > > I am developing a project in .NET to connect to ICE and i am using the > QuickFIX engine version 1.9 and have a problem with the > security definitions subscriptions. > > I am subscribing to the security definitions and am receiving the > responses (35=d) and in the onMessage method, i straight away processing > the responses and writing them to the database directly. The problem is > every 2 minutes my sessions logs out with the below error message. The > connection forcibly closes by ICE. > > I have contacted them and were saying to increase the heap size which i > was not convinced and need help to understand what is the correct way of > handling this in .NET since i know the market reference data is huge. > > Appreciate your response. > > System.IO.IOException: Unable to write data to the transport connection: > An existing connection was forcibly closed by the remote host. ---> > System.Net.Sockets.SocketException: An existing connection was forcibly > closed by the remote host > at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, > Int32 size) > --- End of inner exception stack trace --- > at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, > Int32 size) > at QuickFix.SocketInitiatorThread.Send(String data) > at QuickFix.Session.Send(String message) > at QuickFix.Session.SendRaw(Message message, Int32 seqNum) > at QuickFix.Session.Next() > at QuickFix.Session.Next(MessageBuilder msgBuilder) > at QuickFix.SocketInitiatorThread.ProcessStream() > at QuickFix.SocketInitiatorThread.Read() > > Thanks, > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com -- This email, along with any attachments, is confidential. If you believe you received this message in error, please contact the sender immediately and delete all copies of the message. Thank you from Connamara Systems, LLC. |
From: Veduruparthi R. <rve...@gm...> - 2020-03-02 15:32:09
|
Hello, I am developing a project in .NET to connect to ICE and i am using the QuickFIX engine version 1.9 and have a problem with the security definitions subscriptions. I am subscribing to the security definitions and am receiving the responses (35=d) and in the onMessage method, i straight away processing the responses and writing them to the database directly. The problem is every 2 minutes my sessions logs out with the below error message. The connection forcibly closes by ICE. I have contacted them and were saying to increase the heap size which i was not convinced and need help to understand what is the correct way of handling this in .NET since i know the market reference data is huge. Appreciate your response. System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at QuickFix.SocketInitiatorThread.Send(String data) at QuickFix.Session.Send(String message) at QuickFix.Session.SendRaw(Message message, Int32 seqNum) at QuickFix.Session.Next() at QuickFix.Session.Next(MessageBuilder msgBuilder) at QuickFix.SocketInitiatorThread.ProcessStream() at QuickFix.SocketInitiatorThread.Read() Thanks |
From: Veduruparthi R. <rve...@gm...> - 2020-03-02 15:09:41
|
Hello, I am developing a project in .NET to connect to ICE and i am using the QuickFIX engine version 1.9 and have a problem with the security definitions subscriptions. I am subscribing to the security definitions and am receiving the responses (35=d) and in the onMessage method, i straight away processing the responses and writing them to the database directly. The problem is every 2 minutes my sessions logs out with the below error message. The connection forcibly closes by ICE. I have contacted them and were saying to increase the heap size which i was not convinced and need help to understand what is the correct way of handling this in .NET since i know the market reference data is huge. Appreciate your response. System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at QuickFix.SocketInitiatorThread.Send(String data) at QuickFix.Session.Send(String message) at QuickFix.Session.SendRaw(Message message, Int32 seqNum) at QuickFix.Session.Next() at QuickFix.Session.Next(MessageBuilder msgBuilder) at QuickFix.SocketInitiatorThread.ProcessStream() at QuickFix.SocketInitiatorThread.Read() Thanks, |
From: Grant B. <gbi...@co...> - 2020-02-10 18:55:23
|
I'm not sure how your code will compile, because you're not using the right types. I think you want: FIX44::Email::NoLinesOfText grp; FIX::Text text; msg.get(1, grp); // indexes start at 1, not 0 grp.get(text); // saves line 1 into `text` // ... do something with `text`; perhaps save/append it to another string var msg.get(2, grp); grp.get(text); // saves line 2 into 'text` // etc for all lines Obviously you should use `message.getField(noLinesOfText)` to find out how many lines there are, and adapt the above into a loop. -Grant On Mon, Feb 10, 2020 at 10:26 AM Shubhi Agarwal <sh...@to...> wrote: > Trying this now: > > int int_noLines = > std::atoi(message.getField(noLinesOfText).getString().c_str()); > FIX::NoLinesOfText group; > message.get(group); > > FIX::Text textMessage; > > for(int i=0; i < int_noLines; i++){ > > std::cout << "Hey " << i << std::endl; > group.get(textMessage); > > } > > However, i am getting compilation error saying that "class > FIX::LinesOfText' has no member named 'get". Does that sound right? > > > Shubhi Agarwal > Core Engineering Software Developer > Risk Front End, Risk Technology (India) > p: +91-124-452-4911 > > > > On Thu, Feb 6, 2020 at 5:11 PM Grant Birchmeier <gbi...@co...> > wrote: > >> You're trying to access field 58 like it's a top-level field. In the >> Email (35=C) message, it is NOT a top-level field, so the engine has not >> defined a get(text) function for this message type. It's in the >> LinesOfText repeating group. >> >> You need to check the docs at the bottom of this page ("Reading Messages >> With Repeating Groups"): >> http://www.quickfixengine.org/quickfix/doc/html/repeating_groups.html >> >> You've got to first extract the LinesOfText group, then call get(text) on >> *that*. >> >> On Thu, Feb 6, 2020 at 3:58 PM Shubhi Agarwal <sh...@to...> >> wrote: >> >>> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ >>> >>> Hi, >>> I have created a QuickFix server and a client who are communicating with >>> each other in Email type messages (msgType = "C"). >>> >>> Code on the server to create Email message: >>> >>> std::cout << "Creating email message" << std::endl; >>> FIX44::Email email = FIX44::Email( >>> FIX::EmailThreadID("abc"), >>> FIX::EmailType(FIX::EmailType_NEW), >>> FIX::Subject("0")); >>> json j; >>> j["Client_Name"] = "TESTCLIENTNAME"; >>> j["Client_Alias"] = "TESTCLIENTNAME"; >>> j["TimeStamp"] = "86537573786783"; >>> >>> //email.setField(58, "Cancel My Order!"); >>> >>> std::string jsonDump = j.dump(); >>> email.setField(58, jsonDump); >>> email.setField(33,"1"); >>> >>> On the client side, I am able to parse all fields except tag = 58. The >>> onMessage function on client end looks like this: >>> >>> void onMessage(const FIX44::Email& message, const >>> FIX::SessionID& sessionID) override >>> { >>> std::cout << "On message called" << std::endl; >>> FIX::EmailThreadID emailThreadId; >>> FIX::EmailType emailType; >>> FIX::NoLinesOfText noLinesOfText; >>> message.get(emailType); >>> message.get(emailThreadId); >>> int int_noLines = >>> std::atoi(message.getField(noLinesOfText).getString().c_str()); >>> >>> if(emailType == FIX::EmailType_NEW) >>> { >>> FIX::Text text; >>> for(int i=0; i < int_noLines; i++){ >>> std::cout << "Hey " << i << >>> std::endl; >>> message.get(text); *//This >>> line is giving compilation error* >>> } >>> >>> std::cout << " Email received with type >>> = request " << std::endl; >>> FIX44::Email email = FIX44::Email( >>> >>> FIX::EmailThreadID(emailThreadId), >>> >>> FIX::EmailType(FIX::EmailType_REPLY), >>> FIX::Subject("1")); >>> try >>> { >>> FIX::Session::sendToTarget( >>> email, sessionID ); >>> std::cout << "Email response >>> sent " << std::endl; >>> } >>> catch ( FIX::SessionNotFound& ) {} >>> } >>> } >>> >>> Can someone please help me to figure out how to parse the text field in >>> the incoming email message. I am using fix44. >>> >>> Thanks and regards >>> Shubhi Agarwal >>> Core Engineering Software Developer >>> Risk Front End, Risk Technology (India) >>> p: +91-124-452-4911 >>> >>> _______________________________________________ >>> Quickfix-developers mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> >> >> >> -- >> Grant Birchmeier >> *Connamara Systems, LLC* >> *Made-To-Measure Trading Solutions.* >> Exactly what you need. No more. No less. >> http://connamara.com >> >> This email, along with any attachments, is confidential. If you believe >> you received this message in error, please contact the sender immediately >> and delete all copies of the message. Thank you from Connamara Systems, LLC. > > -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com -- This email, along with any attachments, is confidential. If you believe you received this message in error, please contact the sender immediately and delete all copies of the message. Thank you from Connamara Systems, LLC. |
From: Shubhi A. <sh...@to...> - 2020-02-10 16:55:10
|
Trying this now: int int_noLines = std::atoi(message.getField(noLinesOfText).getString().c_str()); FIX::NoLinesOfText group; message.get(group); FIX::Text textMessage; for(int i=0; i < int_noLines; i++){ std::cout << "Hey " << i << std::endl; group.get(textMessage); } However, i am getting compilation error saying that "class FIX::LinesOfText' has no member named 'get". Does that sound right? Shubhi Agarwal Core Engineering Software Developer Risk Front End, Risk Technology (India) p: +91-124-452-4911 On Thu, Feb 6, 2020 at 5:11 PM Grant Birchmeier <gbi...@co...> wrote: > You're trying to access field 58 like it's a top-level field. In the > Email (35=C) message, it is NOT a top-level field, so the engine has not > defined a get(text) function for this message type. It's in the > LinesOfText repeating group. > > You need to check the docs at the bottom of this page ("Reading Messages > With Repeating Groups"): > http://www.quickfixengine.org/quickfix/doc/html/repeating_groups.html > > You've got to first extract the LinesOfText group, then call get(text) on > *that*. > > On Thu, Feb 6, 2020 at 3:58 PM Shubhi Agarwal <sh...@to...> > wrote: > >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ >> >> Hi, >> I have created a QuickFix server and a client who are communicating with >> each other in Email type messages (msgType = "C"). >> >> Code on the server to create Email message: >> >> std::cout << "Creating email message" << std::endl; >> FIX44::Email email = FIX44::Email( >> FIX::EmailThreadID("abc"), >> FIX::EmailType(FIX::EmailType_NEW), >> FIX::Subject("0")); >> json j; >> j["Client_Name"] = "TESTCLIENTNAME"; >> j["Client_Alias"] = "TESTCLIENTNAME"; >> j["TimeStamp"] = "86537573786783"; >> >> //email.setField(58, "Cancel My Order!"); >> >> std::string jsonDump = j.dump(); >> email.setField(58, jsonDump); >> email.setField(33,"1"); >> >> On the client side, I am able to parse all fields except tag = 58. The >> onMessage function on client end looks like this: >> >> void onMessage(const FIX44::Email& message, const >> FIX::SessionID& sessionID) override >> { >> std::cout << "On message called" << std::endl; >> FIX::EmailThreadID emailThreadId; >> FIX::EmailType emailType; >> FIX::NoLinesOfText noLinesOfText; >> message.get(emailType); >> message.get(emailThreadId); >> int int_noLines = >> std::atoi(message.getField(noLinesOfText).getString().c_str()); >> >> if(emailType == FIX::EmailType_NEW) >> { >> FIX::Text text; >> for(int i=0; i < int_noLines; i++){ >> std::cout << "Hey " << i << >> std::endl; >> message.get(text); *//This line >> is giving compilation error* >> } >> >> std::cout << " Email received with type = >> request " << std::endl; >> FIX44::Email email = FIX44::Email( >> FIX::EmailThreadID(emailThreadId), >> >> FIX::EmailType(FIX::EmailType_REPLY), >> FIX::Subject("1")); >> try >> { >> FIX::Session::sendToTarget( >> email, sessionID ); >> std::cout << "Email response sent >> " << std::endl; >> } >> catch ( FIX::SessionNotFound& ) {} >> } >> } >> >> Can someone please help me to figure out how to parse the text field in >> the incoming email message. I am using fix44. >> >> Thanks and regards >> Shubhi Agarwal >> Core Engineering Software Developer >> Risk Front End, Risk Technology (India) >> p: +91-124-452-4911 >> >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > > -- > Grant Birchmeier > *Connamara Systems, LLC* > *Made-To-Measure Trading Solutions.* > Exactly what you need. No more. No less. > http://connamara.com > > This email, along with any attachments, is confidential. If you believe > you received this message in error, please contact the sender immediately > and delete all copies of the message. Thank you from Connamara Systems, LLC. |
From: Grant B. <gbi...@co...> - 2020-02-06 22:34:14
|
You're trying to access field 58 like it's a top-level field. In the Email (35=C) message, it is NOT a top-level field, so the engine has not defined a get(text) function for this message type. It's in the LinesOfText repeating group. You need to check the docs at the bottom of this page ("Reading Messages With Repeating Groups"): http://www.quickfixengine.org/quickfix/doc/html/repeating_groups.html You've got to first extract the LinesOfText group, then call get(text) on *that*. On Thu, Feb 6, 2020 at 3:58 PM Shubhi Agarwal <sh...@to...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ > > Hi, > I have created a QuickFix server and a client who are communicating with > each other in Email type messages (msgType = "C"). > > Code on the server to create Email message: > > std::cout << "Creating email message" << std::endl; > FIX44::Email email = FIX44::Email( > FIX::EmailThreadID("abc"), > FIX::EmailType(FIX::EmailType_NEW), > FIX::Subject("0")); > json j; > j["Client_Name"] = "TESTCLIENTNAME"; > j["Client_Alias"] = "TESTCLIENTNAME"; > j["TimeStamp"] = "86537573786783"; > > //email.setField(58, "Cancel My Order!"); > > std::string jsonDump = j.dump(); > email.setField(58, jsonDump); > email.setField(33,"1"); > > On the client side, I am able to parse all fields except tag = 58. The > onMessage function on client end looks like this: > > void onMessage(const FIX44::Email& message, const > FIX::SessionID& sessionID) override > { > std::cout << "On message called" << std::endl; > FIX::EmailThreadID emailThreadId; > FIX::EmailType emailType; > FIX::NoLinesOfText noLinesOfText; > message.get(emailType); > message.get(emailThreadId); > int int_noLines = > std::atoi(message.getField(noLinesOfText).getString().c_str()); > > if(emailType == FIX::EmailType_NEW) > { > FIX::Text text; > for(int i=0; i < int_noLines; i++){ > std::cout << "Hey " << i << > std::endl; > message.get(text); *//This line > is giving compilation error* > } > > std::cout << " Email received with type = > request " << std::endl; > FIX44::Email email = FIX44::Email( > FIX::EmailThreadID(emailThreadId), > > FIX::EmailType(FIX::EmailType_REPLY), > FIX::Subject("1")); > try > { > FIX::Session::sendToTarget( email, > sessionID ); > std::cout << "Email response sent > " << std::endl; > } > catch ( FIX::SessionNotFound& ) {} > } > } > > Can someone please help me to figure out how to parse the text field in > the incoming email message. I am using fix44. > > Thanks and regards > Shubhi Agarwal > Core Engineering Software Developer > Risk Front End, Risk Technology (India) > p: +91-124-452-4911 > > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com -- This email, along with any attachments, is confidential. If you believe you received this message in error, please contact the sender immediately and delete all copies of the message. Thank you from Connamara Systems, LLC. |
From: Shubhi A. <sh...@to...> - 2020-02-06 21:58:16
|
Hi, I have created a QuickFix server and a client who are communicating with each other in Email type messages (msgType = "C"). Code on the server to create Email message: std::cout << "Creating email message" << std::endl; FIX44::Email email = FIX44::Email( FIX::EmailThreadID("abc"), FIX::EmailType(FIX::EmailType_NEW), FIX::Subject("0")); json j; j["Client_Name"] = "TESTCLIENTNAME"; j["Client_Alias"] = "TESTCLIENTNAME"; j["TimeStamp"] = "86537573786783"; //email.setField(58, "Cancel My Order!"); std::string jsonDump = j.dump(); email.setField(58, jsonDump); email.setField(33,"1"); On the client side, I am able to parse all fields except tag = 58. The onMessage function on client end looks like this: void onMessage(const FIX44::Email& message, const FIX::SessionID& sessionID) override { std::cout << "On message called" << std::endl; FIX::EmailThreadID emailThreadId; FIX::EmailType emailType; FIX::NoLinesOfText noLinesOfText; message.get(emailType); message.get(emailThreadId); int int_noLines = std::atoi(message.getField(noLinesOfText).getString().c_str()); if(emailType == FIX::EmailType_NEW) { FIX::Text text; for(int i=0; i < int_noLines; i++){ std::cout << "Hey " << i << std::endl; message.get(text); *//This line is giving compilation error* } std::cout << " Email received with type = request " << std::endl; FIX44::Email email = FIX44::Email( FIX::EmailThreadID(emailThreadId), FIX::EmailType(FIX::EmailType_REPLY), FIX::Subject("1")); try { FIX::Session::sendToTarget( email, sessionID ); std::cout << "Email response sent " << std::endl; } catch ( FIX::SessionNotFound& ) {} } } Can someone please help me to figure out how to parse the text field in the incoming email message. I am using fix44. Thanks and regards Shubhi Agarwal Core Engineering Software Developer Risk Front End, Risk Technology (India) p: +91-124-452-4911 |
From: Krishna M. <kir...@gm...> - 2019-11-18 19:06:56
|
Hi I am getting started on quickfix. It would be of great help. If Somone could point to below. If there is any documentation specific to build and development tools like cmake, libtool, cscope, ctags in context of quickfix. Any blog to get started quickly. Also if there are any performance metrics comparing quickfixj and quickfixc++. Rgds Krishna M -- Warm regards, Phani S Krishna Manchiraju |
From: Cheng S. <che...@gm...> - 2019-11-12 05:05:42
|
Dear All, I built the tradeClient (quickfix c++) example successfully. I tried to modify some of its cpp file like (session.cpp), but couldn't find out how this cpp file is linked to the example project, since I only see session.h in the external dependencies, not session.cpp. Anybody has any idea about this? Thanks, -- Best regards Cheng Shanbao |
From: Grant B. <gbi...@co...> - 2019-11-05 17:14:17
|
Don't just blindly copy from the examples. Have you looked at your counterparty's documentation? You need to understand the meaning of every value of every field in the messages that you're sending out, according to what their docs say. 2 issues: 1) They are rejecting your MD Request. This is an application-level reject, which means the basic FIX is valid, but your counterparty has decided that the logic of your request is invalid. Are you specifying an invalid or expired instrument? An unsupported depth? Is there a typo in your symbol? 2) You aren't handling message type Y (MarketDataRequestReject). They are sending you a reject, and your app actually rejecting that reject, because you didn't implement a handler for it. -Grant On Sat, Oct 19, 2019 at 12:22 PM Cheng Shanbao <che...@gm...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ > > Dear All, > > Hello again, > > I was modifying my codes, but still get the error of" Invalid > NoMDEntryTypes ",as shown below. > 58=Invalid NoMDEntryTypes262=MARKETDATAID281=810=168 > > It looks like I can log on successfully, and sent out the message to the > server. But the message format may be wrong. I checked my code of > "NOMDEntryTypes", but don't find any problems, since I was using the sample > code of tradeclient from quickfix, and looks like a lot of other people > used the same codes as well. > > Can somebody take a quick look at my corresponding source code below? > Thanks! > > Shanbao > > The below is the market data request code inside my onlogon Function: > > void Application::onLogon( const FIX::SessionID& sessionID ) > { > std::cout << std::endl << "Logon - " << sessionID << std::endl; > > std::cout << "Market Data Request Test" << std::endl; > FIX::MDReqID mdReqID("MARKETDATAID"); > FIX::SubscriptionRequestType > subType(FIX::SubscriptionRequestType_SNAPSHOT); > FIX::MarketDepth marketDepth(1); > > FIX44::MarketDataRequest::NoMDEntryTypes marketDataEntryGroup; > FIX::MDEntryType mdEntryType(FIX::MDEntryType_BID); > marketDataEntryGroup.set(mdEntryType); > > //marketDataEntryGroup.set(FIX::MDEntryType('1')); > FIX44::MarketDataRequest::NoRelatedSym symbolGroup; > FIX::Symbol symbol("EURUSD.spa"); > symbolGroup.set(symbol); > > FIX44::MarketDataRequest message(mdReqID, subType, marketDepth); > message.addGroup(marketDataEntryGroup); > message.addGroup(symbolGroup); > > message.getHeader().setField(35, "V"); > message.getHeader().setField(265, "0"); > > std::cout << "before sending" << std::endl; > FIX::Session::sendToTarget(message, sessionID); > std::cout << "market data request sent out" << std::endl; > } > > The complete cmd log is as follows: > > <20191019-16:57:55.313000000, FIX.4.4:107225->QUOTES, event> > > (Created session) > > <20191019-16:57:55.523000000, FIX.4.4:107225->QUOTES, event> > > (Connecting to 208.68.172.83 on port 7549 (Source :0)) > > toAdmin called > > <20191019-16:57:55.620000000, FIX.4.4:107225->QUOTES, outgoing> > > > (8=FIX.4.49=9735=A34=149=10722552=20191019-16:57:55.61856=QUOTES553=107225554=yf3y2i4s98=0108=30141=Y10=013) > > <20191019-16:57:55.621000000, FIX.4.4:107225->QUOTES, event> > > (Initiated logon request) > > <20191019-16:57:55.708000000, FIX.4.4:107225->QUOTES, incoming> > > > (8=FIX.4.49=6735=A34=149=QUOTES52=20191019-16:57:54.02756=10722598=0108=3010=033) > > <20191019-16:57:55.709000000, FIX.4.4:107225->QUOTES, event> > > (Received logon response) > > > > Logon - FIX.4.4:107225->QUOTES > > Market Data Request Test > > before sending > > > > OUT: > 8=FIX.4.49=12235=V34=249=10722552=20191019-16:57:55.71056=QUOTES265=0146=155=EURUSD.spa262=MARKETDATAID263=0264=1267=1269=010=193 > > <20191019-16:57:55.710000000, FIX.4.4:107225->QUOTES, outgoing> > > > (8=FIX.4.49=12235=V34=249=10722552=20191019-16:57:55.71056=QUOTES265=0146=155=EURUSD.spa262=MARKETDATAID263=0264=1267=1269=010=193) > > market data request sent out > > <20191019-16:57:56.893000000, FIX.4.4:107225->QUOTES, incoming> > > > (8=FIX.4.49=10435=Y34=249=QUOTES52=20191019-16:57:54.56256=10722558=Invalid > NoMDEntryTypes262=MARKETDATAID281=810=168) > > <20191019-16:57:56.894000000, FIX.4.4:107225->QUOTES, event> > > (Message 2 Rejected: Unsupported Message Type) > > > > OUT: > 8=FIX.4.49=10035=j34=349=10722552=20191019-16:57:56.89456=QUOTES45=258=Unsupported > Message Type372=Y380=310=120 > > <20191019-16:57:56.895000000, FIX.4.4:107225->QUOTES, outgoing> > > > (8=FIX.4.49=10035=j34=349=10722552=20191019-16:57:56.89456=QUOTES45=258=Unsupported > Message Type372=Y380=310=120) > > <20191019-16:58:26.702000000, FIX.4.4:107225->QUOTES, outgoing> > > (8=FIX.4.49=5535=034=449=10722552=20191019-16:58:26.70256=QUOTES10=247) > > -- > Best regards > > Cheng Shanbao > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com |
From: Cheng S. <che...@gm...> - 2019-10-19 17:21:50
|
Dear All, Hello again, I was modifying my codes, but still get the error of" Invalid NoMDEntryTypes ",as shown below. 58=Invalid NoMDEntryTypes262=MARKETDATAID281=810=168 It looks like I can log on successfully, and sent out the message to the server. But the message format may be wrong. I checked my code of "NOMDEntryTypes", but don't find any problems, since I was using the sample code of tradeclient from quickfix, and looks like a lot of other people used the same codes as well. Can somebody take a quick look at my corresponding source code below? Thanks! Shanbao The below is the market data request code inside my onlogon Function: void Application::onLogon( const FIX::SessionID& sessionID ) { std::cout << std::endl << "Logon - " << sessionID << std::endl; std::cout << "Market Data Request Test" << std::endl; FIX::MDReqID mdReqID("MARKETDATAID"); FIX::SubscriptionRequestType subType(FIX::SubscriptionRequestType_SNAPSHOT); FIX::MarketDepth marketDepth(1); FIX44::MarketDataRequest::NoMDEntryTypes marketDataEntryGroup; FIX::MDEntryType mdEntryType(FIX::MDEntryType_BID); marketDataEntryGroup.set(mdEntryType); //marketDataEntryGroup.set(FIX::MDEntryType('1')); FIX44::MarketDataRequest::NoRelatedSym symbolGroup; FIX::Symbol symbol("EURUSD.spa"); symbolGroup.set(symbol); FIX44::MarketDataRequest message(mdReqID, subType, marketDepth); message.addGroup(marketDataEntryGroup); message.addGroup(symbolGroup); message.getHeader().setField(35, "V"); message.getHeader().setField(265, "0"); std::cout << "before sending" << std::endl; FIX::Session::sendToTarget(message, sessionID); std::cout << "market data request sent out" << std::endl; } The complete cmd log is as follows: <20191019-16:57:55.313000000, FIX.4.4:107225->QUOTES, event> (Created session) <20191019-16:57:55.523000000, FIX.4.4:107225->QUOTES, event> (Connecting to 208.68.172.83 on port 7549 (Source :0)) toAdmin called <20191019-16:57:55.620000000, FIX.4.4:107225->QUOTES, outgoing> (8=FIX.4.49=9735=A34=149=10722552=20191019-16:57:55.61856=QUOTES553=107225554=yf3y2i4s98=0108=30141=Y10=013) <20191019-16:57:55.621000000, FIX.4.4:107225->QUOTES, event> (Initiated logon request) <20191019-16:57:55.708000000, FIX.4.4:107225->QUOTES, incoming> (8=FIX.4.49=6735=A34=149=QUOTES52=20191019-16:57:54.02756=10722598=0108=3010=033) <20191019-16:57:55.709000000, FIX.4.4:107225->QUOTES, event> (Received logon response) Logon - FIX.4.4:107225->QUOTES Market Data Request Test before sending OUT: 8=FIX.4.49=12235=V34=249=10722552=20191019-16:57:55.71056=QUOTES265=0146=155=EURUSD.spa262=MARKETDATAID263=0264=1267=1269=010=193 <20191019-16:57:55.710000000, FIX.4.4:107225->QUOTES, outgoing> (8=FIX.4.49=12235=V34=249=10722552=20191019-16:57:55.71056=QUOTES265=0146=155=EURUSD.spa262=MARKETDATAID263=0264=1267=1269=010=193) market data request sent out <20191019-16:57:56.893000000, FIX.4.4:107225->QUOTES, incoming> (8=FIX.4.49=10435=Y34=249=QUOTES52=20191019-16:57:54.56256=10722558=Invalid NoMDEntryTypes262=MARKETDATAID281=810=168) <20191019-16:57:56.894000000, FIX.4.4:107225->QUOTES, event> (Message 2 Rejected: Unsupported Message Type) OUT: 8=FIX.4.49=10035=j34=349=10722552=20191019-16:57:56.89456=QUOTES45=258=Unsupported Message Type372=Y380=310=120 <20191019-16:57:56.895000000, FIX.4.4:107225->QUOTES, outgoing> (8=FIX.4.49=10035=j34=349=10722552=20191019-16:57:56.89456=QUOTES45=258=Unsupported Message Type372=Y380=310=120) <20191019-16:58:26.702000000, FIX.4.4:107225->QUOTES, outgoing> (8=FIX.4.49=5535=034=449=10722552=20191019-16:58:26.70256=QUOTES10=247) -- Best regards Cheng Shanbao |
From: Cheng S. <che...@gm...> - 2019-10-18 07:09:59
|
Dear All, Firstly, thanks Grant for helping me on the logging on issue and now I can successfully logged onto the server. But now I am stuck with the marketDataRequest. I try to subscribe the EURUSD price from the server, but the sendToTarge(message) function has no response at all. I called MarketDataRequest function inside the LogOn() function. Inside my MarketDataRequest function, I am supposed to see "market data request sent out" from my std:cout, but I don't see it. Also I don't see any market data information coming from the server. Can somebody please take a look at my source code and let me know where I did wrong? Thanks with appreciation. *The below shows the command window text:* D:\Personal\Forex\QuickFix\quickfix\examples\tradeclient\bin\release\tradeclient>tradeclient.exe Initiator.cfg <20191018-06:56:29.258000000, FIX.4.4:107225->QUOTES, event> (Created session) <20191018-06:56:29.464000000, FIX.4.4:107225->QUOTES, event> (Connecting to 208.68.172.83 on port 7549 (Source :0)) toAdmin called <20191018-06:56:29.584000000, FIX.4.4:107225->QUOTES, outgoing> (8=FIX.4.4 9=97 35=A 34=1 49=107225 52=20191018-06:56:29.582 56=QUOTES 553=107225 554=yf3y2i4s 98=0 108=30 141=Y 10=011 ) <20191018-06:56:29.613000000, FIX.4.4:107225->QUOTES, event> (Initiated logon request) <20191018-06:56:29.741000000, FIX.4.4:107225->QUOTES, incoming> (8=FIX.4.4 9=67 35=A 34=1 49=QUOTES 52=20191018-06:56:28.990 56=107225 98=0 108=30 10=040 ) <20191018-06:56:29.742000000, FIX.4.4:107225->QUOTES, event> (Received logon response) Logon - FIX.4.4:107225->QUOTES MarketDataRequest Market Data Request Test before sending *The below is my source code in Application.cpp:* void Application::onLogon( const FIX::SessionID& sessionID ) { std::cout << std::endl << "Logon - " << sessionID << std::endl; queryMarketDataRequest(); } FIX44::MarketDataRequest Application::queryMarketDataRequest44() { std::cout << "Market Data Request Test" << std::endl; FIX::MDReqID mdReqID( "MARKETDATAID" ); FIX::SubscriptionRequestType subType( FIX::SubscriptionRequestType_SNAPSHOT ); FIX::MarketDepth marketDepth( 1 ); FIX44::MarketDataRequest::NoMDEntryTypes marketDataEntryGroup; FIX::MDEntryType mdEntryType( FIX::MDEntryType_BID ); marketDataEntryGroup.set( mdEntryType ); FIX44::MarketDataRequest::NoRelatedSym symbolGroup; FIX::Symbol symbol( "EURUSD.spa" ); symbolGroup.set( symbol ); FIX44::MarketDataRequest message( mdReqID, subType, marketDepth ); message.addGroup( marketDataEntryGroup ); message.addGroup( symbolGroup ); std::cout << "before sending" << std::endl; FIX::Session::sendToTarget(message); //std::cout << message.toXML() << std::endl; //std::cout << message.toString() << std::endl; std::cout << "market data request sent out" << std::endl; return message; } -- Best regards Cheng Shanbao |
From: Cheng S. <che...@gm...> - 2019-10-17 02:39:15
|
Grant, thanks a lot for your quick reply. You are right. Inside Application.h, the toAdmin() function is already defined. So I just changed that to declaration and it works now! Shanbao On Wed, Oct 16, 2019 at 2:15 PM Grant Birchmeier <gbi...@co...> wrote: > What's your .h look like? Did you declare it toAdmin to be "virtual"? > > Your username/password setters look fine to me. > > On Wed, Oct 16, 2019 at 12:51 PM Cheng Shanbao <che...@gm...> > wrote: > >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ >> >> Hi All, >> >> I am using the tradeClient example coming from the quickfix download. I >> can run the initiator successfully. Now I need to logon to the remote >> server/broker with requirement of username and password. >> >> After reading a lot of questions and answers on this mailist, my >> understanding is that I have to provide information of username and >> password inside the function of toAdmin(). >> >> In the Application.cpp, there is already toApp() function. So I wrote my >> own toAdmin() function as below. But the VC++ studio gave me the error: >> function 'void Applcation:toAdmin(FIX:: :Message& message, const >> FIX::SessionID& sessionID) already has a body. >> >> I have two questions here: >> 1. why I got such an error? I tried putting the code inside toApp() >> function, but it couldn't connect to the server. >> 2. Is my implementation of providing username and password correct? >> >> Any reply will be highly appreciated! >> >> -- >> Best regards >> >> Shanbao >> >> The below is the code inside the "Application.cpp". >> >> void Application::toAdmin(FIX::Message& message, const FIX::SessionID& >> sessionID) >> { >> try >> { >> //SenderSubID and compony ID >> message.getHeader().setField(50, "107225"); >> message.getHeader().setField(115, "QUOTES"); >> //Username&Password >> message.setField(553, "107225"); >> message.setField(554, "12345"); >> } >> catch (FIX::FieldNotFound&) {} >> std::cout << std::endl >> << "toAdmin OUT: " << message << std::endl; >> } >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > > -- > Grant Birchmeier > *Connamara Systems, LLC* > *Made-To-Measure Trading Solutions.* > Exactly what you need. No more. No less. > http://connamara.com > -- Best regards Cheng Shanbao |
From: Grant B. <gbi...@co...> - 2019-10-16 21:46:54
|
What's your .h look like? Did you declare it toAdmin to be "virtual"? Your username/password setters look fine to me. On Wed, Oct 16, 2019 at 12:51 PM Cheng Shanbao <che...@gm...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ > > Hi All, > > I am using the tradeClient example coming from the quickfix download. I > can run the initiator successfully. Now I need to logon to the remote > server/broker with requirement of username and password. > > After reading a lot of questions and answers on this mailist, my > understanding is that I have to provide information of username and > password inside the function of toAdmin(). > > In the Application.cpp, there is already toApp() function. So I wrote my > own toAdmin() function as below. But the VC++ studio gave me the error: > function 'void Applcation:toAdmin(FIX:: :Message& message, const > FIX::SessionID& sessionID) already has a body. > > I have two questions here: > 1. why I got such an error? I tried putting the code inside toApp() > function, but it couldn't connect to the server. > 2. Is my implementation of providing username and password correct? > > Any reply will be highly appreciated! > > -- > Best regards > > Shanbao > > The below is the code inside the "Application.cpp". > > void Application::toAdmin(FIX::Message& message, const FIX::SessionID& > sessionID) > { > try > { > //SenderSubID and compony ID > message.getHeader().setField(50, "107225"); > message.getHeader().setField(115, "QUOTES"); > //Username&Password > message.setField(553, "107225"); > message.setField(554, "12345"); > } > catch (FIX::FieldNotFound&) {} > std::cout << std::endl > << "toAdmin OUT: " << message << std::endl; > } > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers -- Grant Birchmeier *Connamara Systems, LLC* *Made-To-Measure Trading Solutions.* Exactly what you need. No more. No less. http://connamara.com |
From: Cheng S. <che...@gm...> - 2019-10-16 17:51:08
|
Hi All, I am using the tradeClient example coming from the quickfix download. I can run the initiator successfully. Now I need to logon to the remote server/broker with requirement of username and password. After reading a lot of questions and answers on this mailist, my understanding is that I have to provide information of username and password inside the function of toAdmin(). In the Application.cpp, there is already toApp() function. So I wrote my own toAdmin() function as below. But the VC++ studio gave me the error: function 'void Applcation:toAdmin(FIX:: :Message& message, const FIX::SessionID& sessionID) already has a body. I have two questions here: 1. why I got such an error? I tried putting the code inside toApp() function, but it couldn't connect to the server. 2. Is my implementation of providing username and password correct? Any reply will be highly appreciated! -- Best regards Shanbao The below is the code inside the "Application.cpp". void Application::toAdmin(FIX::Message& message, const FIX::SessionID& sessionID) { try { //SenderSubID and compony ID message.getHeader().setField(50, "107225"); message.getHeader().setField(115, "QUOTES"); //Username&Password message.setField(553, "107225"); message.setField(554, "12345"); } catch (FIX::FieldNotFound&) {} std::cout << std::endl << "toAdmin OUT: " << message << std::endl; } |
From: tiberiu <dan...@gm...> - 2019-08-02 15:39:00
|
I am attempting to subscribe to certain message types from one of our providers. I send the `35=BW` message as per their API, and I receive all the `Quote` messages that I need. However, I can only see them in the quickfix generated log, they are not passing through the `fromApp()` method. Anyone know why that is? Here are the full messages from the quickfix logs: 8=FIXT.1.1|9=101|35=A|34=1|49=ME|52=20190801-21:24:08.974|56=THEM|98=0|108=30|141=Y|1137=9|10=209| 8=FIXT.1.1|9=97|35=A|56=ME|49=THEM|52=20190801-21:24:09|34=1|108=30|141=Y|98=0|1137=9|10=222| 8=FIXT.1.1|9=159|35=BW|34=2|49=ME|52=20190801-21:24:09.165|56=THEM|1346=bc445475-6c3d-49b1-8e69-1fae46fbaa2b|1347=1|1351=1|ApplID=quotes|1357=0|1399=0|10=048| 8=FIXT.1.1|9=129|35=BX|49=THEM|56=ME|34=2|52=20190801-21:24:09|1346=bc445475-6c3d-49b1-8e69-1fae46fbaa2b|1347=1|1348=0|10=058| 8=FIXT.1.1|9=316|35=S|49=THEM|56=ME|34=3|52=20190801-21:24:09|1180=ApplID|1181=0|60=20190730-18:38:13.068519|131=1564181552814-51|117=8SVc72UWLVQ|55=USD/CAD|64=20190731|63=SPOT|453=1|448=AUTO|447=D|452=61|2376=18|132=1.3158|133=1.31586|134=1000000|135=1000000|8021=USD|8022=USD|2533=0|9501=0|2534=0|9502=0|10=061| 8=FIXT.1.1|9=159|35=BW|34=3|49=ME|52=20190801-21:24:14.165|56=THEM|1346=859f354c-6c3f-48dd-880c-435eb5241ab0|1347=4|1351=1|1355=ApplID|1357=0|1399=0|10=163| The messages that I do not receive through my `fromApp()` method are the `Quote` as well as the `35=BX` messages (both application layer basically) And here are my quickfix settings [DEFAULT] # Settings which apply to all the Sessions. ConnectionType=initiator SenderCompID=ME ReconnectInterval=30 HeartBtInt=30 FileStorePath=/my/log/path FileLogPath=/my/log/path FileLogHeartBeats=Y [SESSION] # Settings specifically for one session BeginString=FIXT.1.1 DefaultApplVerID=FIX.5.0SP2 AppDataDictionary=MyDictionary.xml TransportDataDictionary=MyTransportDictionary.xml TargetCompID=THEM TimeZone=America/New_York StartTime=06:00:00 US/Central EndTime=19:00:00 US/Central Weekdays=Mon,Tue,Wed,Thu,Fri SocketConnectPort=theirPort SocketConnectHost=their.ip.address UseDataDictionary=Y CheckLatency=N ResetOnLogon=Y Note that I've seen a similar thread but in that one it seems to be for a ResendRequest, which is not my case. Additionally, the problem persists even if I delete all quickfix files (.body, .header, .session, etc) Any help greatly appreciated -- Sent from: http://quickfix.13857.n7.nabble.com/QuickFIX-Dev-f1677.html |
From: Johan V. De W. <joh...@gm...> - 2019-07-17 19:30:17
|
Hi all, I've been trying to cross compile quickfix for the arm architecture. I'm trying from my normal laptop debian. I've been running the ./configure command with many options, specifying the toolchain and when I go to make it, I get the following error: > libtool: compile: arm-linux-gnueabihf-g++ -DHAVE_CONFIG_H -I. -I../../.. > -I.. -I../../../UnitTest++/src -g -O2 -Wall -ansi > -Wno-unused-command-line-argument -Wpointer-arith -Wwrite-strings > -Wno-overloaded-virtual -Wno-deprecated-declarations -Wno-deprecated > -std=c++0x -O0 -g -MT MessageSortersTestCase.lo -MD -MP -MF > .deps/MessageSortersTestCase.Tpo -c MessageSortersTestCase.cpp -fPIC -DPIC > -o .libs/MessageSortersTestCase.o > /tmp/ccU67tE0.s: Assembler messages: > /tmp/ccU67tE0.s:7858: Error: bad instruction `lock' > /tmp/ccU67tE0.s:7859: Error: bad instruction `xadd r3,[r2]' As far as I can understand, this could mean two things. Or that the toolchain was specify incorrectly, therefore I would really wanted to ask you to check what am I doing wrong, or that the whole library can't be compiled for ARM architecture because there're some specific assembly operation that are just non compatible. The configure that I'm using looks like: > ./configure --host=arm-linux-gnueabihf --prefix=/home/dummy/quickfix_arm > CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ Thanks in advance for your help guys. Regards, Johan |
From: John H. <jr...@ya...> - 2019-02-04 15:25:11
|
That's why i saw so many good reviews http://gerardoduque1.com/now.php <http://gerardoduque1.com/now.php/> John Haldi |
From: Alex G. <ale...@ca...> - 2018-08-20 18:43:31
|
Hi, We're using Quickfix in a python application through SWIG, and recently ran into a segfault which we haven't been able to reproduce yet. We're running two sessions, and what I think is a pretty basic configuration. Here's the traceback that I was able to get from a crash file: Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007fe472af6560 in FIX::FieldMap::calculateLength ( this=this@entry=0x25063d0, beginStringField=beginStringField@entry=8, bodyLengthField=bodyLengthField@entry=9, checkSumField=checkSumField@entry=10) at FieldMap.cpp:249 249 FieldMap.cpp: No such file or directory. [Current thread is 1 (Thread 0x7fe47841a700 (LWP 19582))] (gdb) bt #0 0x00007fe472af6560 in FIX::FieldMap::calculateLength ( this=this@entry=0x25063d0, beginStringField=beginStringField@entry=8, bodyLengthField=bodyLengthField@entry=9, checkSumField=checkSumField@entry=10) at FieldMap.cpp:249 #1 0x00007fe472b005c8 in FIX::Message::bodyLength (checkSumField=10, bodyLengthField=9, beginStringField=8, this=0x2506360) at Message.h:215 #2 FIX::Message::toString (this=this@entry=0x2506360, str="", beginStringField=beginStringField@entry=8, bodyLengthField=bodyLengthField@entry=9, checkSumField=checkSumField@entry=10) at Message.cpp:252 #3 0x00007fe472b00bd5 in FIX::Message::toString[abi:cxx11](int, int, int) const (this=this@entry=0x2506360, beginStringField=beginStringField@entry=8, bodyLengthField=bodyLengthField@entry=9, checkSumField=checkSumField@entry=10) at Message.cpp:243 #4 0x00007fe471a4b949 in FIX_Message___str__ (self=0x2506360) at QuickfixPython.cpp:7280 #5 _wrap_Message___str__ (args=<optimized out>) at QuickfixPython.cpp:28679 As far as I can tell, this is coming from a line in our Python code that's logging a Message instance. I'm not sure how much QuickFix/J has forked off from the C++ implementation, but this issue reported there seems very similar (toString(), calculateLength() might not be thread safe?): https://sourceforge.net/p/quickfixj/mailman/quickfixj-users/thread/CABWW-d2XGNM%3Dd5x%3DcG4Sb%3D0PGKVBffL2FoFkG-FPgt4FS2CyPw%40mail.gmail.com/#msg30532141 If it is a synchronization issue, I'm not really sure how, as our python code is only running in a single thread (we use SocketInitiator which may run in its own thread, but could that cause issues?) The only other thought we had is that this segfault happened at a time interval very close to when a heartbeat was expected. We are logging messages in the toApp and fromApp callbacks. Could that cause issues for any reason? Any help would be very appreciated. Thanks! - Alex Galonsky -- This communication is intended only for the recipient to whom it is addressed. It may contain information that is privileged and confidential. Nothing contained in this email constitutes tax, legal, insurance or investment advice, nor does it constitute a solicitation or an offer to buy or sell any security or other financial instrument. If you are not the intended recipient of this message, any use, dissemination, distribution, or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and permanently delete all copies that you may have. |
From: John H. <jr...@ya...> - 2018-05-25 09:42:53
|
http://now.neovolo.biz John Haldi |
From: Nepali, M. (CWM-NR) <mah...@rb...> - 2018-05-04 18:39:11
|
The new document does not contain any information on Building Windows .net wrapper. When I build I only get lib files and no dlls. Is it no longer part of the C++ source? We cant go with quickfix/n as it is not compatible. -----Original Message----- From: Nepali, Mahendra (CWM-NR) [mailto:mah...@rb...] Sent: Friday,May 04, 2018 2:19 PM To: qui...@li... Subject: [Quickfix-developers] Build Windows .net C++ wrapper QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/ ________________________________________ This E-Mail (including any attachments) may contain privileged or confidential information. It is intended only for the addressee(s) indicated above. The sender does not waive any of its rights, privileges or other protections respecting this information. Any distribution, copying or other use of this E-Mail or the information it contains, by other than an intended recipient, is not sanctioned and is prohibited. If you received this E-Mail in error, please delete it and advise the sender (by return E-Mail or otherwise) immediately. This E-Mail (including any attachments) has been scanned for viruses. It is believed to be free of any virus or other defect that might affect any computer system into which it is received and opened. However, it is the responsibility of the recipient to ensure that it is virus free. The sender accepts no responsibility for any loss or damage arising in any way from its use. E-Mail received by or sent from RBC Capital Markets is subject to review by Supervisory personnel. Such communications are retained and may be produced to regulatory authorities or others with legal rights to the information. IRS CIRCULAR 230 NOTICE: TO COMPLY WITH U.S. TREASURY REGULATIONS, WE ADVISE YOU THAT ANY U.S. FEDERAL TAX ADVICE INCLUDED IN THIS COMMUNICATION IS NOT INTENDED OR WRITTEN TO BE USED, AND CANNOT BE USED, TO AVOID ANY U.S. FEDERAL TAX PENALTIES OR TO PROMOTE, MARKET, OR RECOMMEND TO ANOTHER PARTY ANY TRANSACTION OR MATTER. |