quickfix-developers Mailing List for QuickFIX (Page 175)
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
|
| 2026 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: James W. <wi...@ra...> - 2005-12-09 16:31:09
|
Folks, I'm working out the details of a new application and am running into unexplained session disconnects. The only output I find in the logs is "Connection Dropped" which is not terribly informative. I would like to know two things: 1) Is there a flag or option for the configuration file that can get QF to produce more verbose output? 2) Does the flag to ignore user-defined fields apply only to application-level messages but not to session-level or administrative messages? many thanks, Jim Wiggs |
|
From: Oren M. <or...@qu...> - 2005-12-09 15:55:42
|
It has been, the terminology just isn't standardized. Usually the question comes in the form of running an initiator and acceptor in the same process. Like this for instance: http://thread.gmane.org/gmane.comp.finance.quickfix.devel/1380 Brian McAndrews wrote: >>Can it be done? Yes. We have an application that accepts multiple FIX > connections and translates them to a proprietary ECN interface. >>Doing a FIX-to-FIX version would probably be considerably simpler. >>Dale > > Dale, > > Thanks > > Yes, a FIX-to-FIX is what I’m looking at. I’m sure that it shouldn’t > be too difficult. It just surprised me some that it apparently hasn’t > been discussed here. > > Brian > |
|
From: Brian M. <bri...@ro...> - 2005-12-09 15:37:56
|
>Can it be done? Yes. We have an application that accepts multiple FIX connections and translates them to a proprietary ECN interface. >Doing a FIX-to-FIX version would probably be considerably simpler. >Dale =20 Dale, Thanks =20 Yes, a FIX-to-FIX is what I'm looking at. I'm sure that it shouldn't be too difficult. It just surprised me some that it apparently hasn't been discussed here. =20 Brian |
|
From: Dale W. <wil...@oc...> - 2005-12-07 15:54:04
|
Hi, V.Kishore (what's the proper short form of your name?) >Dear all, > > I am in the initial state of developing the >application using QuikFix protocol. In my application >Initiator needs to send an order to Acceptor, and in >my order I have to send five fields. We have >successfully established connection between Initiator >and Acceptor, now I need to send an order via this >connection, but I am unable to do it. Please assist me >in transferring the data between Initiator and >Acceptor through this connection (I am working on JAVA >platform). > Please also assist me in creating session ID for the >above order. And I request to please help me in this >concern as soon as possible. > > > To get started with QuickFIX, take a look at the example programs that you installed when you installed quickfix. They are in quickfix/examples. You should also read the documentation that you can find starting from quickfix/doc/html/index.html (load this into your browser). To address your specific questions: To send an order you should create a FIXnn::NewOrderSingle object (nn is a protocol version like 42 or 43) and add the necessary fields to it, then send it via one of the FIX::Session methods. Receive the order by overriding the fromApp method of your implementation of the FIX::Application interface. You should probably pass the message to a FIX::MessageCracker and catch the result in an overidden onMessage method.. The documentation will help with the details. The session ID is assembled from the BeginString, SenderCompID, TargetCompID, and optional SessionQualifier fields from your fix configuration file. BeginStirng is determined by the version of the protocol you are using: i.e. FIX.4.2 SenderCompID and TargetCompID are determined by mutual agreement between the coparties (but in practice they are usually assigned by the acceptor which is often and exchange). SessionQualifier can be ignored unless you know why you need it. Dale FYI: My company offers an "Introduction to QuickFIX for C++ programmers" class to help new developers get started. Let me know if you'd like more details. >With Regards >V.Kishore Kumar > > > > >Thanks & Regards >V.Kishore Kumar >Software Engineer >GWN Communications Pvt.Ltd >Mail to:ki...@gw..., > kis...@ya... >Mobile :+91 9866023792 > > > -- ----------------------------------------------------- Dale Wilson, Senior Software Engineer Object Computing, Inc. (OCI) http://www.ociweb.com/ http://www.theaceorb.com/ ---------------------------------------------------- |
|
From: kishorekumar v. <kis...@ya...> - 2005-12-07 09:32:22
|
Dear all,
I am in the initial state of developing the
application using QuikFix protocol. In my application
Initiator needs to send an order to Acceptor, and in
my order I have to send five fields. We have
successfully established connection between Initiator
and Acceptor, now I need to send an order via this
connection, but I am unable to do it. Please assist me
in transferring the data between Initiator and
Acceptor through this connection (I am working on JAVA
platform).
Please also assist me in creating session ID for the
above order. And I request to please help me in this
concern as soon as possible.
With Regards
V.Kishore Kumar
Thanks & Regards
V.Kishore Kumar
Software Engineer
GWN Communications Pvt.Ltd
Mail to:ki...@gw...,
kis...@ya...
Mobile :+91 9866023792
__________________________________________
Yahoo! DSL Something to write home about.
Just $16.99/mo. or less.
dsl.yahoo.com
|
|
From: Dale W. <wil...@oc...> - 2005-12-06 19:57:13
|
Hi Brian, Brian McAndrews wrote: > Surprisingly, I didn't find any info on this in the archives. My > question is, can (or how difficult would it be to setup) quickfix be > configured as a router? For instance, multi-inputs to one exchange or > multi-inputs to multi exchanges. > Can it be done? Yes. We have an application that accepts multiple FIX connections and translates them to a proprietary ECN interface. How easy was it? Not very. It took a lot of work and a month or so to get it right. The problems however, weren't so much in QuickFIX as they were in configuring the system and adapting the FIX view of the world to that of the proprietary interface. Among other things we had to define some custom fields to push info through that wasn't readily available in the standard FIX fields. We also spent a lot of time coping with a difference in opinion between FIX and the other guy concerning what to do when the connection dropped unexpectedly. Doing a FIX-to-FIX version would probably be considerably simpler. Dale > > > Thanks, > > Brian > -- ----------------------------------------------------- Dale Wilson, Senior Software Engineer Object Computing, Inc. (OCI) http://www.ociweb.com/ http://www.theaceorb.com/ ---------------------------------------------------- |
|
From: Andrew M. <an...@nm...> - 2005-12-06 19:27:58
|
Hi Brian. I have done that. I have also created a class that handles basic FIX version conversion since my trading workstations all talk 4.1 and I'm talking to 4.0 and 4.1 exchanges (Inet(4.1), Arca(4.1), Brut(4.0), Goldman's RediFIX(4.1)... Andrew an...@nm... On Tue, 6 Dec 2005, Brian McAndrews wrote: > Surprisingly, I didn't find any info on this in the archives. My > question is, can (or how difficult would it be to setup) quickfix be > configured as a router? For instance, multi-inputs to one exchange or > multi-inputs to multi exchanges. > > > > Thanks, > > Brian > > |
|
From: Brian M. <bri...@ro...> - 2005-12-06 18:17:44
|
Surprisingly, I didn't find any info on this in the archives. My question is, can (or how difficult would it be to setup) quickfix be configured as a router? For instance, multi-inputs to one exchange or multi-inputs to multi exchanges. =20 Thanks, Brian |
|
From: Steve B. <sb...@sm...> - 2005-12-06 17:21:24
|
Hi J=F6rg, There were a few bugs in parsing fragmented messages that may have caused some instability in QFJ with slow connections or very heavily loaded fast connections. The bugs have been fixed in CVS. At this point, I'm not sure the stability issue is related to Netty vs. Mina. Steve Bate Smart Trade Technologies Phone: +33 4 42 90 03 97 http://www.smart-trade.net/ =20 > -----Original Message----- > From: qui...@li...=20 > [mailto:qui...@li...] On=20 > Behalf Of Joerg Thoennes > Sent: Tuesday, December 06, 2005 4:55 PM > To: Tom Dilatush > Cc: QuickFIX Developers > Subject: Re: [Quickfix-developers] QuickFIX/J tips? >=20 > QuickFIX Documentation:=20 > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html >=20 > Hi Tom, >=20 > > Just starting to use QuickFIX/J for a production project,=20 > and would be=20 > > appreciative of any tips/suggestions/warnings, etc., if=20 > you'd care to=20 > > share. >=20 > I had the impression, that the network layer is not stable in=20 > all cases. Please see the recent discussions regarding "move=20 > to MINA." In rare cases the engine stalls somewhere in the=20 > network layer, but I did not investigate further. On the=20 > other hand, we also it in production, but with a moderate=20 > throughput and no issues so far. >=20 > > The project in question is a system that connects to=20 > several brokers,=20 > > to trade in equities and equity options. >=20 > Cheers, J=F6rg >=20 > -- > Joerg Thoennes > http://macd.com > Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH > Fax : +49 (0)241 44597-10 Lothringer Str. 52, D-52070 Aachen >=20 >=20 > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep=20 > through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. =20 > DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
|
From: Steve B. <sb...@sm...> - 2005-12-06 17:18:20
|
Hi Tom, I don't know if I'd call it a scrubbing but the class has had a light washing recently. You can see the changes in the CVS HEAD or QFJ_BRANCH_1_0 branch (the basis of the next release). The property name and value parsing now allows a wider range of characters. The line ending check has also been made more platform independent although it's probably still not as good as it could be. The SessionSettings is not an interface because we are maintaining API compatibility with the C++ JNI wrapper. It's possible to programatically set individual nondefault properties in a SessionSettings object. There are many examples in the unit tests. There's currently no way to set individual default parameters. That can be added without breaking compatibility with the QFJ JNI code. [Note: I just added the unit tests and implementation for default property setters (the getters were already there). They are in the QFJ 1.0 branch and the HEAD.] Steve Bate Smart Trade Technologies Phone: +33 4 42 90 03 97 http://www.smart-trade.net/ _____ From: qui...@li... [mailto:qui...@li...] On Behalf Of Tom Dilatush Sent: Tuesday, December 06, 2005 4:54 PM To: Shepheard, Toby (London) Cc: QuickFIX Developers Subject: Re: [Quickfix-developers] SessionSettings improvement (I hope!)... Hi, Toby... No argument with any of that. But actually, I think the whole class could use a good scrubbing. That odd construct "\r\n".indexOf(ch) I borrowed from a piece of code just following the one I modified; it's in there more than once. And that whole tokenizer is a bit hard to follow. Also, I'd like to see the SessionSettings made into an interface, so that other kinds of session settings could be created. In my application, I've wrapped it with a class that lets me set the settings individually and programatically (so I can fish the settings from a master config file for the entire app), but the interface to SessionSettings is kinda wierd -- I generate the InputStream to feed to SessionSettings <smile>. |
|
From: Joerg T. <Joe...@ma...> - 2005-12-06 15:54:53
|
Hi Tom,
> Just starting to use QuickFIX/J for a production project, and would be
> appreciative of any tips/suggestions/warnings, etc., if you'd care to
> share.
I had the impression, that the network layer is not stable in all cases. Please see the
recent discussions regarding "move to MINA." In rare cases the engine stalls somewhere in
the network layer, but I did not investigate further. On the other hand, we also it in
production, but with a moderate throughput and no issues so far.
> The project in question is a system that connects to several brokers, to
> trade in equities and equity options.
Cheers, Jörg
--
Joerg Thoennes
http://macd.com
Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH
Fax : +49 (0)241 44597-10 Lothringer Str. 52, D-52070 Aachen
|
|
From: Tom D. <to...@di...> - 2005-12-06 15:54:46
|
Hi, Toby...
No argument with any of that. But actually, I think the whole class
could use a good scrubbing. That odd construct "\r\n".indexOf(ch) I
borrowed from a piece of code just following the one I modified; it's in
there more than once. And that whole tokenizer is a bit hard to
follow. Also, I'd like to see the SessionSettings made into an
interface, so that other kinds of session settings could be created. In
my application, I've wrapped it with a class that lets me set the
settings individually and programatically (so I can fish the settings
from a master config file for the entire app), but the interface to
SessionSettings is kinda wierd -- I generate the InputStream to feed to
SessionSettings <smile>.
Tom...
Shepheard, Toby (London) wrote:
> You might find changing isValueCharacter to treat spaces as a valid
> value a cleaner approach, though I'm not sure if this might cause
> other problems. Given that the string is trimmed at the end though I
> think it would be ok.
>
> A word of warning on using "\r\n" - this is system dependent. You
> should use the system newline property instead.
>
> -----Original Message-----
> *From:* qui...@li...
> [mailto:qui...@li...] *On
> Behalf Of *Tom Dilatush
> *Sent:* 06 December 2005 15:29
> *To:* QuickFIX Developers
> *Subject:* [Quickfix-developers] SessionSettings improvement (I
> hope!)...
>
> Hi, folks...
>
> I've just started using QuickFIX/J for a production project. I
> had a bit of trouble getting it going, and it turned out that the
> problem was a data dictionary setting with a file name that
> included spaces (this is hosted on a Windows system). This is
> inconvenient, nothing more, but I fixed the problem with the
> change shown below, to the getToken() method of
> SessionSetting.Tokenizer. The original code is in blue, the new
> in red.
>
> Tom...
>
> } else if (ch == '=') {
> ch = nextCharacter(inputStream); // wrong
> skipWhitespace(inputStream);
> if (isValueCharacter(ch)) {
>
> /* original block of code, failed on file
> names including spaces
> sb.setLength(0);
> do {
> sb.append(ch);
> ch = nextCharacter(inputStream);
> } while (isValueCharacter(ch));
> return new Token(VALUE_TOKEN, sb.toString());
> */
>
> /* replacement block */
> sb.setLength(0);
> do {
> sb.append(ch);
> ch = nextCharacter(inputStream);
> } while ("\r\n".indexOf(ch) == -1);
> return new Token(VALUE_TOKEN,
> sb.toString().trim());
> /* end replacement block */
> }
>
> ------------------------------------------------------------------------
> If you are not an intended recipient of this e-mail, please notify the
> sender, delete it and do not read, act upon, print, disclose, copy,
> retain or redistribute it. Click here
> <http://www.ml.com/email_terms/>for important additional terms
> relating to this e-mail. http://www.ml.com/email_terms/
> ------------------------------------------------------------------------
|
|
From: Shepheard, T. (London) <Tob...@ml...> - 2005-12-06 15:52:46
|
Most problems people have seem to be around starting/stopping sessions and logon/logoff code so I'd focus on getting these working, and having robust tests for the various possible scenarios. Other interesting areas worth focussing on are resends and messages out of sequence. I'd strongly recommend implementing your own test-tool to mimic the systems you'll be communicating with, at a basic level at least so they can send canned responses back. The example applications that come with QFJ are a great starting point for such tools. I'd also suggest using the latest code from the main trunk on CVS rather than the beta release that you can get as a zip file, as there have been a number of updates in the intervening 3-4 months. Other than that, not much I can think of that's directly QFJ related. Good luck! Toby -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Tom Dilatush Sent: 06 December 2005 15:31 To: QuickFIX Developers Subject: [Quickfix-developers] QuickFIX/J tips? QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, folks... Just starting to use QuickFIX/J for a production project, and would be=20 appreciative of any tips/suggestions/warnings, etc., if you'd care to share. The project in question is a system that connects to several brokers, to trade in equities and equity options. Tom... ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers -------------------------------------------------------- If you are not an intended recipient of this e-mail, please notify the = sender, delete it and do not read, act upon, print, disclose, copy, = retain or redistribute it. Click here for important additional terms = relating to this e-mail. http://www.ml.com/email_terms/ -------------------------------------------------------- |
|
From: Shepheard, T. (London) <Tob...@ml...> - 2005-12-06 15:44:59
|
You might find changing isValueCharacter to treat spaces as a valid
value a cleaner approach, though I'm not sure if this might cause other
problems. Given that the string is trimmed at the end though I think it
would be ok.
=20
A word of warning on using "\r\n" - this is system dependent. You should
use the system newline property instead.
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Tom Dilatush
Sent: 06 December 2005 15:29
To: QuickFIX Developers
Subject: [Quickfix-developers] SessionSettings improvement (I
hope!)...
=09
=09
Hi, folks...
=09
I've just started using QuickFIX/J for a production project. I
had a bit of trouble getting it going, and it turned out that the
problem was a data dictionary setting with a file name that included
spaces (this is hosted on a Windows system). This is inconvenient,
nothing more, but I fixed the problem with the change shown below, to
the getToken() method of SessionSetting.Tokenizer. The original code is
in blue, the new in red.
=09
Tom...
=09
} else if (ch =3D=3D '=3D') {
ch =3D nextCharacter(inputStream); // wrong
skipWhitespace(inputStream);
if (isValueCharacter(ch)) {
=09
/* original block of code, failed on file
names including spaces
sb.setLength(0);
do {
sb.append(ch);
ch =3D nextCharacter(inputStream);
} while (isValueCharacter(ch));
return new Token(VALUE_TOKEN,
sb.toString());
*/
=09
/* replacement block */
sb.setLength(0);
do {
sb.append(ch);
ch =3D nextCharacter(inputStream);
} while ("\r\n".indexOf(ch) =3D=3D -1);
return new Token(VALUE_TOKEN,
sb.toString().trim());
/* end replacement block */
}
--------------------------------------------------------
If you are not an intended recipient of this e-mail, please notify the =
sender, delete it and do not read, act upon, print, disclose, copy, =
retain or redistribute it. Click here for important additional terms =
relating to this e-mail. http://www.ml.com/email_terms/
--------------------------------------------------------
|
|
From: Tom D. <to...@di...> - 2005-12-06 15:31:09
|
Hi, folks... Just starting to use QuickFIX/J for a production project, and would be appreciative of any tips/suggestions/warnings, etc., if you'd care to share. The project in question is a system that connects to several brokers, to trade in equities and equity options. Tom... |
|
From: Tom D. <to...@di...> - 2005-12-06 15:29:18
|
Hi, folks...
I've just started using QuickFIX/J for a production project. I had a
bit of trouble getting it going, and it turned out that the problem was
a data dictionary setting with a file name that included spaces (this is
hosted on a Windows system). This is inconvenient, nothing more, but I
fixed the problem with the change shown below, to the getToken() method
of SessionSetting.Tokenizer. The original code is in blue, the new in red.
Tom...
} else if (ch == '=') {
ch = nextCharacter(inputStream); // wrong
skipWhitespace(inputStream);
if (isValueCharacter(ch)) {
/* original block of code, failed on file names
including spaces
sb.setLength(0);
do {
sb.append(ch);
ch = nextCharacter(inputStream);
} while (isValueCharacter(ch));
return new Token(VALUE_TOKEN, sb.toString());
*/
/* replacement block */
sb.setLength(0);
do {
sb.append(ch);
ch = nextCharacter(inputStream);
} while ("\r\n".indexOf(ch) == -1);
return new Token(VALUE_TOKEN, sb.toString().trim());
/* end replacement block */
}
|
|
From: Caleb E. <cal...@gm...> - 2005-12-05 23:08:47
|
On 12/6/05, Alvin Wang <AW...@ff...> wrote: > > I wonder how the order of tags in a message is determined. It seems that > it is not the same order that code sets the tags. If that is the case, ho= w > can I guarantee that all the tags belong to the same component block (suc= h > as Instrument component block) are put together in a message? > I don't think there is any requirement that tags of a particular component be grouped together. The tag ordering rules as implemented in QuickFIX are as below: - In the header, tags BeginString, BodyLength and MsgType appear first and in that order. Other header fields appear in numeric order. - In the body, fields appear in numeric order except for the case of repeating groups. Fields in a repeating group appear in the order defin= ed by the Data Dictionary. - In the trailer, CheckSum must appear LAST. Other fields (Signature, SignatureLength) appear in numerical order. Here's a quote from the FIX 4.4 spec: Message Format The general format of a FIX message is a standard header followed by the message body fields and terminated with a standard trailer. ** Each message is constructed of a stream of <tag>=3D<value> fields with a field delimiter between fields in the stream. Tags are of data type *TagNu= m. * *All tags must have a value specified. Optional fields without values should simply not be specified in the FIX message. A Reject message is the appropriate response to a tag with no value.* *Except where noted, fields within a message can be defined in any sequence (Relative position of a field within a message is inconsequential.) The exceptions to this rule are:* *1. **General message format is composed of the standard header followed by the body followed by the standard trailer.* *2. **The first three fields in the standard header are BeginString (tag #8) followed by BodyLength (tag #9) followed by MsgType (tag #35).* *3. **The last field in the standard trailer is the CheckSum (tag #10).* *4. **Fields within repeating data groups must be specified in the order that the fields are specified in the message definition within the FI= X specification document. The NoXXX field where XXX is the field being counted specifies the number of repeating group instances that must immediately precede the repeating group contents. * *5. **A tag number (field) should only appear in a message once. If i= t appears more than once in the message it should be considered an error with the specification document. The error should be pointed out to the FIX Global Technical Committee.* -- Caleb Epstein caleb dot epstein at gmail dot com |
|
From: Alvin W. <AW...@FF...> - 2005-12-05 22:45:48
|
Thanks.
Does tags of a component block need to be put together? I think so...
Dave Linaker <dav...@ma...>
12/05/2005 05:43 PM
To: Alvin Wang <AW...@FF...>, Oren Miller <or...@qu...>,
<qui...@li...>,
<qui...@li...>
cc:
bcc:
Subject: Re: [Quickfix-developers] order of tags
Hi Alvin,
As far as I understand, the default ordering of tags is numeric, i.e.
lowest tag number first and highest last. The header and trailer are
slightly different, in that the header must start with tag 8, 9 and 35,
and the trailer must end with tag 10, but otherwise tags are ordered
numerically.
With repeating groups order is more important and hence there is a
constructor that allows you to specify a message order, e.g.:
Group( int field, int delim, const int order[] )
...where order[] specifies the tag sort order.
The ordering seems to be implemented in FieldMap, a base class used for
the various message parts.
Oren, Are there any thoughts on providing a similar constructor in the
message class?
Dave
On 6/12/05 5:31 am, "Alvin Wang" <AW...@FF...> wrote:
Hi
I wonder how the order of tags in a message is determined. It seems that
it is not the same order that code sets the tags. If that is the case, how
can I guarantee that all the tags belong to the same component block (such
as Instrument component block) are put together in a message?
Thanks
Alvin
**********************************************************************
This e-mail message is intended solely for the use of the addressee. The
message may contain information that is privileged and confidential.
Disclosure to anyone other than the intended recipient is prohibited. If
you are not the intended recipient, please do not disseminate, distribute
or copy this communication, by e-mail or otherwise. Instead, please notify
us immediately by return e-mail (including the original message with your
reply) and then delete and discard all copies of the message. We have
taken precautions to minimize the risk of transmitting software viruses
but nevertheless advise you to carry out your own virus checks on any
attachment to this message. We accept no liability for any loss or damage
caused by software viruses.
**********************************************************************
|
|
From: Dave L. <dav...@ma...> - 2005-12-05 22:42:45
|
Hi Alvin,
As far as I understand, the default ordering of tags is numeric, i.e. lowest
tag number first and highest last. The header and trailer are slightly
different, in that the header must start with tag 8, 9 and 35, and the
trailer must end with tag 10, but otherwise tags are ordered numerically.
With repeating groups order is more important and hence there is a
constructor that allows you to specify a message order, e.g.:
Group( int field, int delim, const int order[] )
...where order[] specifies the tag sort order.
The ordering seems to be implemented in FieldMap, a base class used for the
various message parts.
Oren, Are there any thoughts on providing a similar constructor in the
message class?
Dave
On 6/12/05 5:31 am, "Alvin Wang" <AW...@FF...> wrote:
> Hi
>
> I wonder how the order of tags in a message is determined. It seems that it is
> not the same order that code sets the tags. If that is the case, how can I
> guarantee that all the tags belong to the same component block (such as
> Instrument component block) are put together in a message?
>
> Thanks
>
> Alvin **********************************************************************
> This e-mail message is intended solely for the use of the addressee. The
> message may contain information that is privileged and confidential.
> Disclosure to anyone other than the intended recipient is prohibited. If you
> are not the intended recipient, please do not disseminate, distribute or copy
> this communication, by e-mail or otherwise. Instead, please notify us
> immediately by return e-mail (including the original message with your reply)
> and then delete and discard all copies of the message. We have taken
> precautions to minimize the risk of transmitting software viruses but
> nevertheless advise you to carry out your own virus checks on any attachment
> to this message. We accept no liability for any loss or damage caused by
> software viruses.
> **********************************************************************
|
|
From: Alvin W. <AW...@FF...> - 2005-12-05 22:06:56
|
Hi
I wonder how the order of tags in a message is determined. It seems that
it is not the same order that code sets the tags. If that is the case, how
can I guarantee that all the tags belong to the same component block (such
as Instrument component block) are put together in a message?
Thanks
Alvin
**********************************************************************
This e-mail message is intended solely for the use of the addressee.
The message may contain information that is privileged and confidential.
Disclosure to anyone other than the intended recipient is
prohibited. If you are not the intended recipient, please do not
disseminate, distribute or copy this communication, by e-mail or
otherwise. Instead, please notify us immediately by return e-mail
(including the original message with your reply) and then delete
and discard all copies of the message. We have taken precautions to
minimize the risk of transmitting software viruses but nevertheless
advise you to carry out your own virus checks on any attachment to
this message. We accept no liability for any loss or damage caused
by software viruses.
**********************************************************************
|
|
From: Chuck C. <chu...@gm...> - 2005-12-05 15:27:41
|
If it's not too much trouble, starting the MINA-related branch sounds like a good idea to me. In the long-term, moving Quickfix/J to MINA seems worthwhile. BTW, thanks for the recent check-ins, Steve! Chuck |
|
From: Steve B. <sb...@sm...> - 2005-12-02 09:43:02
|
Barry Kaplan had been working on a MINA initiator and acceptor. He's recently started a new job and is very busy so the work has stalled. We haven't put the code into the quickfixj repository because it's still very experimental. However, if some other people are seriously interested in working on it (I don't have some at the moment), maybe I could create a MINA-related branch and add the experimental code there for people to work on. If we create a MINA initiator and acceptor I'd suggest removing the poll/block methods from the classic initiator/acceptor pair. My understanding is they are intended for single threaded applications. However, no Java application is truly single threaded and most networking application are multithreaded in the Java world. What does everyone think about this? I've noticed a few posts that imply that some people are using block and/or poll with Java. I'm interested in hearing what benefit people are getting from those methods (since they don't really reduce the number of threads in pure Java implementation). Steve Bate Smart Trade Technologies Phone: +33 4 42 90 03 97 http://www.smart-trade.net/ _____ From: qui...@li... [mailto:qui...@li...] On Behalf Of Ian Johnson Sent: Thursday, December 01, 2005 5:44 PM To: qui...@li... Subject: [Quickfix-developers] [qfj] Hexdumps under Netty2 1.8.0, move to MINA? Hi, Definitely a vote for this. My requirement is for better latency management and embedded SSL - both of which can be done fairly easily in MINA (or so it says). If you have a MINA version of the Initiatior and FIXMessage I would definitely be interested. Any change of posting the changes? I was also seeing buffer underflow issues until I patched the parsing code (I see thats changed recently, but I haven't examnined the changes) My requirements is for latency rather than high throughput (FX arbitrage where most of what matters is latency) Good work chaps Ian |
|
From: Stanislawek, M. <MSt...@cm...> - 2005-12-01 21:29:22
|
confirm 953176 |
|
From: Stanislawek, M. <MSt...@cm...> - 2005-12-01 21:26:58
|
We've experienced an upper bound on the number of configured sessions and connected clients an acceptor can handle through our quickfix Java JNI implementation. At first we thought it was file descriptor based, but after bumping up both the hard and soft limits well above what is required and no change in behavior, we think it's not the shell's file descriptor limits were hitting and maybe something jvm related. We also took our app out of the equation by using the example java executor that is in the quickfix distribution. And the same behavior occurred. Here are the details: We modified the java executor to use the file store and file log (this is what we'd like to use in prod) and modified the application to print the messages in the fromAdmin and fromApp call backs. What I notice is at 144 configured sessions I can establish a connection, login and start heart beating. I see the logon and heartbeat messages printed to stdout. But at 145 sessions configured, the app callbacks never sees the logon message. netstat shows the connection established but the receive queue is never emptied. netstat shows the receive queue containing the ~108 bytes from the logon message. Has anyone else bumped up against this? Here is the environment: RHAS 3.1 quickfix 1.10.2 g++ 3.2.3 Sun's 1.4.2_02 jvm UseDataDictionary=3DN ResetOnLogout=3DY ResetOnDisconnect=3DY /tmp/executor $ ulimit -a address space limit (kbytes) (-M) unlimited core file size (blocks) (-c) 0 cpu time (seconds) (-t) unlimited data size (kbytes) (-d) unlimited file size (blocks) (-f) unlimited locks (-L) unlimited locked address space (kbytes) (-l) 4 nofile (-n) 65535 nproc (-u) 7168 pipe buffer size (bytes) (-p) 4096 resident set size (kbytes) (-m) unlimited socket buffer size (bytes) (-b) 4096 stack size (kbytes) (-s) 10240 threads (-T) not supported process size (kbytes) (-v) unlimited |
|
From: Ian J. <Ian...@bt...> - 2005-12-01 16:44:43
|
Hi, Definitely a vote for this. My requirement is for better latency = management and embedded SSL - both of which can be done fairly easily in = MINA (or so it says). If you have a MINA version of the Initiatior and = FIXMessage I would definitely be interested. Any change of posting the changes? I was also seeing buffer underflow issues until I patched the parsing = code (I see thats changed recently, but I haven't examnined the changes) My requirements is for latency rather than high throughput (FX arbitrage = where most of what matters is latency) Good work chaps Ian |