public static QuickFix.FIX44.OrderCancelReplaceRequest OrderCancelReplaceRequest( Dictionary <int, string> customFields, QuickFix.FIX44.NewOrderSingle nos, int newQty, decimal newPrice) { QuickFix.FIX44.OrderCancelReplaceRequest ocrq = new QuickFix.FIX44.OrderCancelReplaceRequest( new QuickFix.Fields.OrigClOrdID(nos.ClOrdID.Obj), GenerateClOrdID(), nos.Symbol, nos.Side, new QuickFix.Fields.TransactTime(DateTime.Now), nos.OrdType); ocrq.HandlInst = new QuickFix.Fields.HandlInst(QuickFix.Fields.HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE); ocrq.OrderQty = new QuickFix.Fields.OrderQty(newQty); if (nos.OrdType.Obj != QuickFix.Fields.OrdType.MARKET) { ocrq.Price = new QuickFix.Fields.Price(newPrice); } // other fields to relay ocrq.TimeInForce = nos.TimeInForce; // add custom fields foreach (KeyValuePair <int, string> p in customFields) { ocrq.SetField(new QuickFix.Fields.StringField(p.Key, p.Value)); } return(ocrq); }
private void QueryReplaceOrder() { Console.WriteLine("\nCancelReplaceRequest"); QuickFix.FIX44.OrderCancelReplaceRequest m = QueryCancelReplaceRequest44(); if (m != null && QueryConfirm("Send replace")) { SendMessage(m); } }
public void OnMessage(QuickFix.FIX44.OrderCancelReplaceRequest msg, SessionID s) { string orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID"; QuickFix.FIX44.OrderCancelReject ocj = new QuickFix.FIX44.OrderCancelReject( new OrderID(orderid), msg.ClOrdID, msg.OrigClOrdID, new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST)); ocj.CxlRejReason = new CxlRejReason(CxlRejReason.OTHER); ocj.Text = new Text("Executor does not support order cancel/replaces"); try { Session.SendToTarget(ocj, s); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
/// <summary> /// /// </summary> /// <param name="or"></param> /// <param name="newQty"></param> /// <param name="newPrice">ignored if not applicable for order type</param> /// <param name="customFields">other custom fields to be added</param> public void CancelReplaceOrder(OrderRecord or, int newQty, decimal newPrice, Dictionary <int, string> customFields) { try { QuickFix.FIX44.OrderCancelReplaceRequest ocrq = MessageCreator44.OrderCancelReplaceRequest( customFields, or.OriginalNOS, newQty, newPrice); ocrq.OrderID = new QuickFix.Fields.OrderID(or.OrderID); _strategy.ProcessOrderCancelReplaceRequest(or.OriginalNOS, ocrq); _qfapp.Send(ocrq); } catch (Exception e) { Trace.WriteLine(e.ToString()); } }
private QuickFix.FIX44.OrderCancelReplaceRequest QueryCancelReplaceRequest44() { QuickFix.FIX44.OrderCancelReplaceRequest ocrr = new QuickFix.FIX44.OrderCancelReplaceRequest( QueryOrigClOrdID(), QueryClOrdID(), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), QueryOrdType()); ocrr.Set(new HandlInst('1')); if (QueryConfirm("New price")) { ocrr.Set(QueryPrice()); } if (QueryConfirm("New quantity")) { ocrr.Set(QueryOrderQty()); } return(ocrr); }
public void ProcessOrderCancelReplaceRequest(QuickFix.FIX44.NewOrderSingle nos, QuickFix.FIX44.OrderCancelReplaceRequest msg) { }
private QuickFix.FIX44.OrderCancelReplaceRequest QueryCancelReplaceRequest44() { QuickFix.FIX44.OrderCancelReplaceRequest ocrr = new QuickFix.FIX44.OrderCancelReplaceRequest( QueryOrigClOrdID(), QueryClOrdID(), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), QueryOrdType()); ocrr.Set(new HandlInst('1')); if (QueryConfirm("New price")) ocrr.Set(QueryPrice()); if (QueryConfirm("New quantity")) ocrr.Set(QueryOrderQty()); return ocrr; }