Re: [Quickfix-developers] Custom message
Brought to you by:
orenmnero
|
From: Joerg T. <Joe...@ma...> - 2006-03-10 17:17:22
|
Hi Mike,
> I'm trying to connect to an exchange and they have a custom Trader Logi=
n
> message with a message type of CG. Has anybody created a custom messag=
e
> before? If so, could you send me a code sample or give me a few tips?
I assume this message is outbound, ie to be sent to the exchange.
The FIX messages for QF are generated by some XSLT and Ruby scripts from =
the FIX data=20
dictionary. You could use these scripts to generate your own messages fro=
m a modified=20
FIX4*.xml file, but I do not know how much tweaking is still needed to do=
this.
If you just need one message, just copy a small message, ie NewOrderSingl=
e and adapt it to=20
your needs. I.e. for java code in quickfix/src/java/src/quickfix/fix40/Ne=
wOrderSingle.java:
package quickfix.fix40;
import quickfix.FieldNotFound;
import quickfix.Group;
import quickfix.field.*;
public class NewOrderSingle extends Message
{
public NewOrderSingle()
{
getHeader().setField(new MsgType("D"));
}
public NewOrderSingle(
quickfix.field.ClOrdID aClOrdID,
quickfix.field.HandlInst aHandlInst,
quickfix.field.Symbol aSymbol,
quickfix.field.Side aSide,
quickfix.field.OrderQty aOrderQty,
quickfix.field.OrdType aOrdType ) {
getHeader().setField(new MsgType("D"));
set(aClOrdID);
set(aHandlInst);
set(aSymbol);
set(aSide);
set(aOrderQty);
set(aOrdType);
}
public void set(quickfix.field.ClOrdID value)
{ setField(value); }
public quickfix.field.ClOrdID get(quickfix.field.ClOrdID value)
throws FieldNotFound
{ getField(value); return value; }
...
Copy this to your code tree and adapt it, eg:
package smith.mike...;
import quickfix.FieldNotFound;
import quickfix.Group;
import quickfix.field.*;
public class CustomMessage extends Message
{
public CustomMessage()
{
getHeader().setField(new MsgType("CG"));
}
public CustomMessage(
quickfix.field.XXX field1, ... ) {
getHeader().setField(new MsgType("CG"));
set(field1);
...
}
public void set(quickfix.field.XXX value)
{ setField(value); }
public quickfix.field.XXX get(quickfix.field.XXX value)
throws FieldNotFound
{ getField(value); return value; }
...
If you have repeating group, this is a bit more complicated.
Now you can say
message =3D new CustomMessage( value1, .... );
Session.sendToTarget( message, sessionId ); ...
If you want to receive such message, you have to update your data diction=
ary to include it
and create your own MessageFactory to tell QF how to messages with MsgTyp=
e=3DCG to a Java=20
object.
Please apply this to C# or C++ analogeously.
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
|