public static QuickFix.FIX44.OrderCancelReject Fix44Reject2OrderCancelReject(QuickFix.Message msgReject, QuickFix.Message msgOri) { try { QuickFix.FIX44.OrderCancelReject ocr = new QuickFix.FIX44.OrderCancelReject(); if (msgOri.IsSetField(Tags.OrderID)) { ocr.Set(new OrderID(msgOri.GetString(Tags.OrderID))); } else { ocr.Set(new OrderID("NONE")); } ocr.Set(new ClOrdID(msgOri.GetString(Tags.ClOrdID))); // mandatory ocr.Set(new OrigClOrdID(msgOri.GetString(Tags.OrigClOrdID))); // mandatory ocr.Set(new OrdStatus(OrdStatus.REJECTED)); // mandatory if (msgOri.IsSetField(Tags.Account)) { ocr.SetField(new Account(msgOri.GetString(Tags.Account))); } if (msgOri.Header.GetString(Tags.MsgType).Equals(MsgType.ORDER_CANCEL_REQUEST)) // mandatory { ocr.Set(new CxlRejResponseTo('1')); } else { ocr.Set(new CxlRejResponseTo('2')); } if (msgReject.IsSetField(Tags.Text)) { ocr.Set(new Text(msgReject.GetString(Tags.Text))); } // ocr.Set(new CxlRejReason(2137)); // Tratamento tag SecondaryOrderID // Se nao vier na mensagem busca pelo TO //if (msgOri.IsSetField(Tags.SecondaryOrderID)) //{ // ocr.Set(new SecondaryOrderID(msgOri.GetString(Tags.SecondaryOrderID))); //} //else //{ // if (null != to) // { // if (!string.IsNullOrEmpty(to.SecondaryOrderID)) // ocr.Set(new SecondaryOrderID(to.SecondaryOrderID)); // // if (!string.IsNullOrEmpty(to.TradeDate)) // ocr.Set(new TradeDate(to.TradeDate)); // } //} int len = msgOri.GetInt(Tags.NoPartyIDs); for (int i = 0; i < len; i++) { Group grp = msgOri.GetGroup(i + 1, Tags.NoPartyIDs); ocr.AddGroup(grp); } ocr.Set(new Symbol(msgOri.GetString(Tags.Symbol))); if (msgOri.IsSetField(Tags.SecurityID)) { ocr.Set(new SecurityID(msgOri.GetField(Tags.SecurityID))); } if (msgOri.IsSetField(Tags.SecurityIDSource)) { ocr.Set(new SecurityIDSource(msgOri.GetField(Tags.SecurityIDSource))); } ocr.Set(new Side(msgOri.GetChar(Tags.Side))); if (msgOri.IsSetField(Tags.Memo)) { ocr.Set(new Memo(msgOri.GetString(Tags.Memo))); } return(ocr); } catch (Exception ex) { logger.Error("Fix44Reject2OrderCancelReject(): " + ex.Message, ex); return(null); } }
public static QuickFix.FIX44.ExecutionReport Fix44Rejection2ExecutionReport(QuickFix.Message msgReject, QuickFix.Message msgOri) { try { QuickFix.FIX44.ExecutionReport er = new QuickFix.FIX44.ExecutionReport(); if (msgOri.IsSetField(Tags.OrderID)) { er.Set(new OrderID(msgOri.GetString(Tags.OrderID))); } else { er.Set(new OrderID("NONE")); } if (msgOri.IsSetField(Tags.ClOrdID)) { er.Set(new ClOrdID(msgOri.GetField(Tags.ClOrdID))); } if (msgOri.IsSetField(Tags.OrigClOrdID)) { er.Set(new OrigClOrdID(msgOri.GetField(Tags.OrigClOrdID))); } // Fazer atribuicao dos PartyIDs da mensagem original int len = msgOri.GetInt(Tags.NoPartyIDs); for (int i = 0; i < len; i++) { Group grp = msgOri.GetGroup(i + 1, Tags.NoPartyIDs); er.AddGroup(grp); } er.Set(new ExecID(DateTime.Now.ToString("yyyyMMddHHmmssfff"))); er.Set(new ExecType(ExecType.REJECTED)); er.Set(new OrdStatus(OrdStatus.REJECTED)); if (msgOri.IsSetField(Tags.Account)) { er.Set(new Account(msgOri.GetField(Tags.Account))); } er.Set(new Symbol(msgOri.GetField(Tags.Symbol))); if (msgOri.IsSetField(Tags.SecurityID)) { er.Set(new SecurityID(msgOri.GetField(Tags.SecurityID))); } if (msgOri.IsSetField(Tags.SecurityIDSource)) { er.Set(new SecurityIDSource(msgOri.GetField(Tags.SecurityIDSource))); } er.Set(new Side(msgOri.GetChar(Tags.Side))); er.Set(new OrderQty(msgOri.GetDecimal(Tags.OrderQty))); if (msgOri.IsSetField(Tags.OrdType)) { er.Set(new OrdType(msgOri.GetChar(Tags.OrdType))); } if (msgOri.IsSetField(Tags.Price)) { er.Set(new Price(msgOri.GetDecimal(Tags.Price))); } if (msgOri.IsSetField(Tags.StopPx)) { er.Set(new StopPx(msgOri.GetDecimal(Tags.StopPx))); } if (msgOri.IsSetField(Tags.TimeInForce)) { er.Set(new TimeInForce(msgOri.GetChar(Tags.TimeInForce))); } if (msgOri.IsSetField(Tags.ExpireDate)) { er.Set(new ExpireDate(msgOri.GetField(Tags.ExpireDate))); } er.Set(new LeavesQty(0)); er.Set(new CumQty(0)); er.Set(new AvgPx(Decimal.Zero)); DateTime transact = DateTime.UtcNow; er.Set(new TransactTime(transact)); if (msgOri.IsSetField(Tags.MaxFloor)) { er.Set(new MaxFloor(msgOri.GetDecimal(Tags.MaxFloor))); } if (msgOri.IsSetField(Tags.Memo)) { er.SetField(new Memo(msgOri.GetString(Tags.Memo))); } if (msgReject.IsSetField(Tags.Text)) { er.Set(new Text(msgReject.GetField(Tags.Text))); } if (msgReject.IsSetField(Tags.OrderID)) { er.Set(new OrderID(msgReject.GetField(Tags.OrderID))); } return(er); } catch (Exception ex) { logger.Error("Fix44Rejection2ExecutionReport(): " + ex.Message, ex); return(null); } }