in fix-client.py [0:0]
def submit_order(self, symbol, side, order_type, quantity, price, destination, exchange):
trade = fix.Message()
trade.getHeader().setField(fix.BeginString(fix.BeginString_FIX44))
trade.getHeader().setField(fix.MsgType(fix.MsgType_NewOrderSingle))
order_id = self.gen_exec_id()
trade.setField(fix.ClOrdID(order_id))
trade.setField(fix.TimeInForce(fix.TimeInForce_DAY))
trade.setField(fix.Symbol(symbol))
trade.setField(fix.Side(side))
trade.setField(fix.OrdType(order_type))
trade.setField(fix.OrderQty(quantity))
if price is not None:
trade.setField(fix.Price(price))
elif order_type != fix.OrdType_MARKET:
raise Exception("Must specify price for LIMIT order")
if destination is not None:
trade.setField(fix.ExecBroker(destination))
if exchange is not None:
trade.setField(fix.ExDestination(exchange))
trade.setField(fix.TransactTime())
side = "BUY" if side == fix.Side_BUY else "SELL"
order_type = "LIMIT" if order_type == fix.OrdType_LIMIT else "MARKET"
print("Sending order: OrderID=%s, SessionID=%s, OrderType=%s, Symbol=%s, Side=%s, Quantity=%s, Price=%s, Destination=%s, Exchange=%s" %
(order_id, self.sessionID, order_type, symbol, side, quantity, price, destination, exchange))
fix.Session.sendToTarget(trade, self.sessionID)