Wrong FIX implementation on cTrader server side

Created at 02 Nov 2021, 11:15
How’s your experience with the cTrader Platform?
Your feedback is crucial to cTrader's development. Please take a few seconds to share your opinion and help us improve your trading experience. Thanks!
CT

ctid692448

Joined 20.05.2020

Wrong FIX implementation on cTrader server side
02 Nov 2021, 11:15


A new order single message with bad volume is answered with a

35 = j (Business Message Reject <j>)

message.

It MUST be answered with an

35 = 8 (Execution Report <8>)

Otherwise it is not possible to set the order to a rejected status on client side.

Please see current FIX implementation standard: https://www.onixs.biz/fix-dictionary/4.4/msgType_j_106.html

WHEN SHOULD A Business Message Reject <j> NOT BE USED:

Situation: New Order - Single <D>

Appropriate Response: Use the Execution Report <8> message

 

Kindly adapt your FIX implementation.


@ctid692448
Replies

PanagiotisCharalampous
02 Nov 2021, 11:34

Hi ctid692448,

We consider our implementation correct. Business Message Reject is sent because the order validation fails. You will receive the same message if for example you pass a non existent symbol. We do not event attempt to execute the order, hence you cannot receive an Execution Report. The order cannot be rejected because it is not a valid order, the message is nonsensical.

Best Regards,

Panagiotis 

Join us on Telegram and Facebook


@PanagiotisCharalampous

ctid692448
02 Nov 2021, 11:56 ( Updated at: 21 Dec 2023, 09:22 )

RE:

PanagiotisCharalampous said:

Hi ctid692448,

We consider our implementation correct. Business Message Reject is sent because the order validation fails. You will receive the same message if for example you pass a non existent symbol. We do not event attempt to execute the order, hence you cannot receive an Execution Report. The order cannot be rejected because it is not a valid order, the message is nonsensical.

Best Regards,

Panagiotis 

Join us on Telegram and Facebook

Thanks for answering. It is bad practice because it is not according to FIX standards.

Good practice would be:
Not attempting to execute an order = not executing an order -> sending an order execution with a rejection of the order containing the reason for the rejection.

Please have a look at the link I posted above and scroll a bit down:


There it is extra stated that a business rejection message is not the right answer to a new order single. Please consider making the developers life easier by sticking to broad spread FIX rules being applied by (almost) everyone. You would also do a favor to yourself as a easier to implement cTrader FIX protocol will cause more people using it.


@ctid692448