async def sendOrder(self, connectionHandler): self.clOrdID = self.clOrdID + 1 codec = connectionHandler.codec msg = FIXMessage(codec.protocol.msgtype.NEWORDERSINGLE) msg.setField(codec.protocol.fixtags.Price, "%0.2f" % (random.random() * 2 + 10)) msg.setField(codec.protocol.fixtags.OrderQty, int(random.random() * 100)) msg.setField(codec.protocol.fixtags.Symbol, "VOD.L") msg.setField(codec.protocol.fixtags.SecurityID, "GB00BH4HKS39") msg.setField(codec.protocol.fixtags.SecurityIDSource, "4") msg.setField(codec.protocol.fixtags.Account, "TEST") msg.setField(codec.protocol.fixtags.HandlInst, "1") msg.setField(codec.protocol.fixtags.ExDestination, "XLON") msg.setField(codec.protocol.fixtags.Side, int(random.random() * 2) + 1) msg.setField(codec.protocol.fixtags.ClOrdID, str(self.clOrdID)) msg.setField(codec.protocol.fixtags.Currency, "GBP") await connectionHandler.sendMsg(msg) side = Side(int(msg.getField(codec.protocol.fixtags.Side))) logging.debug("---> [%s] %s: %s %s %s@%s" % (codec.protocol.msgtype.msgTypeToName(msg.msgType), msg.getField(codec.protocol.fixtags.ClOrdID), msg.getField(codec.protocol.fixtags.Symbol), side.name, msg.getField(codec.protocol.fixtags.OrderQty), msg.getField(codec.protocol.fixtags.Price)))
async def onNewOrder(self, connectionHandler, request): codec = connectionHandler.codec try: side = Side(int(request.getField(codec.protocol.fixtags.Side))) logging.debug( "<--- [%s] %s: %s %s %s@%s" % (codec.protocol.msgtype.msgTypeToName( request.getField(codec.protocol.fixtags.MsgType)), request.getField(codec.protocol.fixtags.ClOrdID), request.getField(codec.protocol.fixtags.Symbol), side.name, request.getField(codec.protocol.fixtags.OrderQty), request.getField(codec.protocol.fixtags.Price))) # respond with an ExecutionReport Ack msg = FIXMessage(codec.protocol.msgtype.EXECUTIONREPORT) msg.setField(codec.protocol.fixtags.Price, request.getField(codec.protocol.fixtags.Price)) msg.setField(codec.protocol.fixtags.OrderQty, request.getField(codec.protocol.fixtags.OrderQty)) msg.setField(codec.protocol.fixtags.Symbol, request.getField(codec.protocol.fixtags.OrderQty)) msg.setField(codec.protocol.fixtags.SecurityID, "GB00BH4HKS39") msg.setField(codec.protocol.fixtags.SecurityIDSource, "4") msg.setField(codec.protocol.fixtags.Symbol, request.getField(codec.protocol.fixtags.Symbol)) msg.setField(codec.protocol.fixtags.Account, request.getField(codec.protocol.fixtags.Account)) msg.setField(codec.protocol.fixtags.HandlInst, "1") msg.setField(codec.protocol.fixtags.OrdStatus, "0") msg.setField(codec.protocol.fixtags.ExecType, "0") msg.setField(codec.protocol.fixtags.LeavesQty, "0") msg.setField(codec.protocol.fixtags.Side, request.getField(codec.protocol.fixtags.Side)) msg.setField(codec.protocol.fixtags.ClOrdID, request.getField(codec.protocol.fixtags.ClOrdID)) msg.setField(codec.protocol.fixtags.Currency, request.getField(codec.protocol.fixtags.Currency)) await connectionHandler.sendMsg(msg) logging.debug( "---> [%s] %s: %s %s %s@%s" % (codec.protocol.msgtype.msgTypeToName( msg.msgType), msg.getField(codec.protocol.fixtags.ClOrdID), request.getField(codec.protocol.fixtags.Symbol), side.name, request.getField(codec.protocol.fixtags.OrderQty), request.getField(codec.protocol.fixtags.Price))) except Exception as e: msg = FIXMessage(codec.protocol.msgtype.EXECUTIONREPORT) msg.setField(codec.protocol.fixtags.OrdStatus, "4") msg.setField(codec.protocol.fixtags.ExecType, "4") msg.setField(codec.protocol.fixtags.LeavesQty, "0") msg.setField(codec.protocol.fixtags.Text, str(e)) msg.setField(codec.protocol.fixtags.ClOrdID, request.getField(codec.protocol.fixtags.ClOrdID)) await connectionHandler.sendMsg(msg)