The appropriate Reject message

Imported from previous forum

Hello,

I am writing order routing gateway where orders are forwarded to multiple exchanges.

Say one of the exchange goes offline (lost connection etc) and the client wants to sumit an order (or any other message) to that exchange. How can I let that client know that this exchange is gone offline?

I looked into Reject (MsgType = 3) message and this can only be sent if there is a session level violation and that’s not the case here.

There is also Business Message Reject (MsgType = j) and that can only be sent in certain casees.

So any ideas as to what is the best/recommended way to reject messages in situation outlined above?

Thanks

Hi,

If you can capture the connection lost event, you can look at notifying the upstream systems using Trading Session Status (MsgType = h).

For rejecting messages, you could hold on to the connection name and it’s status in a simple data structure like HashMap. Before sending out the order on a particular connection, you can check the status of the connection in the map and reject the order if the connection is down.

All new order reject messages are Execution Reports (35=8), Cxl/CxlReplace rejects are OrderCancelReject (35=9) in standard fix. You could continue to use the same reject messages in your case too.

  • Ashish

Hello,

I am writing order routing gateway where orders are forwarded to
multiple exchanges.

Say one of the exchange goes offline (lost connection etc) and the
client wants to sumit an order (or any other message) to that exchange.
How can I let that client know that this exchange is gone offline?

I looked into Reject (MsgType = 3) message and this can only be sent if
there is a session level violation and that’s not the case here.

There is also Business Message Reject (MsgType = j) and that can only be
sent in certain casees.

So any ideas as to what is the best/recommended way to reject messages
in situation outlined above?

Thanks

Hello

Thanks for your reply.

I am aware of the Trading Session Status message but unfortunately I have no control over the client software and it seems they don’t really process that message.

I also aware of Execution Reports (35=8) and Order Cancel Reject (35=9) but I was wondering if there was a reject message that I can use to uniformly reject all message.

It seems there is no “uniform” reject message in FIX.

I wonder why they put restriction of the types of message you can reject using Business Message Reject (MsgType = j)

Cheers

Hi,

If you can capture the connection lost event, you can look at notifying
the upstream systems using Trading Session Status (MsgType = h).

For rejecting messages, you could hold on to the connection name and
it’s status in a simple data structure like HashMap. Before sending out
the order on a particular connection, you can check the status of the
connection in the map and reject the order if the connection is down.

All new order reject messages are Execution Reports (35=8),
Cxl/CxlReplace rejects are OrderCancelReject (35=9) in standard fix. You
could continue to use the same reject messages in your case too.

  • Ashish

Hello,

I am writing order routing gateway where orders are forwarded to
multiple exchanges.

Say one of the exchange goes offline (lost connection etc) and the
client wants to sumit an order (or any other message) to that
exchange. How can I let that client know that this exchange is gone
offline?

I looked into Reject (MsgType = 3) message and this can only be sent
if there is a session level violation and that’s not the case here.

There is also Business Message Reject (MsgType = j) and that can only
be sent in certain casees.

So any ideas as to what is the best/recommended way to reject messages
in situation outlined above?

Thanks

The reject concept of FIX is to be as specific as possible and to use generic messages such as Business Message Reject and (Session) Reject only for the exceptions. This makes it easier to establish context for the rejection.

Please refer to FIX Volume 1 which describes Business Message Reject. It clearly states “The Business Message Reject message can reject an application-level message which fulfills session-level rules and cannot be rejected via any other means.” FIX will always try to provide such “other means”.

In your case you can use OrdRejReason (103) = 2 = “Exchange Closed” or 99 = “Other” together with Text (58) for further detail.

Regards,
Hanno.

Hello

Thanks for your reply.

I am aware of the Trading Session Status message but unfortunately I
have no control over the client software and it seems they don’t really
process that message.

I also aware of Execution Reports (35=8) and Order Cancel Reject (35=9)
but I was wondering if there was a reject message that I can use to
uniformly reject all message.

It seems there is no “uniform” reject message in FIX.

I wonder why they put restriction of the types of message you can reject
using Business Message Reject (MsgType = j)

Cheers