public void orderAdded(FIXOrder order, FIXEngineMessageHandlerStatus status) {
// Example, automatically send back the order acknowledgment (execution report with order status="New")
// Note: This is just an example. In reality application may even choose to send back "Reject", depending on the business logic.
if (order instanceof FIXRegularOrder) {
// Make sure the session handler status is "Normal". It could be "Recovery", in which case no execution should be sent back.
if (status == FIXEngineMessageHandlerStatus.NORMAL) {
// This example works with FIX versions from 4.1 to 5.0+.
// It is a perfect example for version independent order management.
FIXRegularOrder singleOrder = (FIXRegularOrder)order;
FIXMessage orderMessage = singleOrder.getCurrentOrderMessage();
FIXMessage execNew = singleOrder.createNewExecutionNew();
// Note: Application may choose its own method to generate "OrderID" and "ExecID"
String orderID = generateOrderID(orderMessage);
String execID = generateExecID(orderMessage);
execNew.setValue(Tags.OrderID, orderID);
execNew.setValue(Tags.ExecID, execID);
execNew.setValue(Tags.CumQty, 0.0);
execNew.setValue(Tags.AvgPx, 0.0);
// In this example, since it's just an acknowledgment execution, "LeavesQty"
// should be equal to "OrderQty" because there is no fill yet.
execNew.setValue(Tags.LeavesQty, orderMessage.getFloatValue(Tags.OrderQty));
singleOrder.addExecution(execNew);
}
// TODO: Your own custom business logic code.
}
}
|