public static QuickFix.FIX42.OrderCancelReplaceRequest OrderCancelReplaceRequest( Dictionary <int, string> customFields, QuickFix.FIX42.NewOrderSingle nos, int newQty, decimal newPrice) { QuickFix.FIX42.OrderCancelReplaceRequest ocrq = new QuickFix.FIX42.OrderCancelReplaceRequest( new QuickFix.Fields.OrigClOrdID(nos.ClOrdID.Obj), GenerateClOrdID(), new QuickFix.Fields.HandlInst(QuickFix.Fields.HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE), nos.Symbol, nos.Side, new QuickFix.Fields.TransactTime(DateTime.Now), nos.OrdType); 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); }
public void OnMessage(QuickFix.FIX42.OrderCancelReplaceRequest msg, QuickFix.SessionID session) { try { // qty set ? int qty = -1; if (msg.IsSetOrderQty()) { qty = Convert.ToInt32(msg.OrderQty.getValue()); } else if (msg.IsSetCashOrderQty()) { qty = Convert.ToInt32(msg.CashOrderQty.getValue()); } if (qty < 0) { RejectCancelRequest(session, msg.ClOrdID, msg.OrigClOrdID, null, "Qty nor CashOrderQty field is not set", QuickFix.Fields.CxlRejReason.BROKER_OPTION, true); return; } double price = (msg.IsSetPrice() ? Convert.ToDouble(msg.Price.getValue()) : 0); double stopPx = (msg.IsSetStopPx() ? Convert.ToDouble(msg.StopPx.getValue()) : 0); ProcessOrderCancelRequest(session, msg.ClOrdID, msg.OrigClOrdID, true, qty, price, stopPx); } catch (Exception e) { RejectCancelRequest(session, msg.ClOrdID, msg.OrigClOrdID, null, "OnMessage(QuickFix.FIX42.OrderCancelReplaceRequest msg, QuickFix.SessionID session) : internal error : " + e.ToString() , QuickFix.Fields.CxlRejReason.OTHER, true); } }
public void OnMessage(QuickFix.FIX42.OrderCancelReplaceRequest msg, SessionID s) { string orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID"; QuickFix.FIX42.OrderCancelReject ocj = new QuickFix.FIX42.OrderCancelReject( new OrderID(orderid), msg.ClOrdID, msg.OrigClOrdID, new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST)); ocj.CxlRejReason = new CxlRejReason(CxlRejReason.UNKNOWN_ORDER); 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.FIX42.OrderCancelReplaceRequest ocrq = MessageCreator42.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.FIX42.OrderCancelReplaceRequest QueryCancelReplaceRequest42() { QuickFix.FIX42.OrderCancelReplaceRequest ocrr = new QuickFix.FIX42.OrderCancelReplaceRequest( QueryOrigClOrdID(), QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), QueryOrdType()); if (QueryConfirm("New price")) { ocrr.Set(QueryPrice()); } if (QueryConfirm("New quantity")) { ocrr.Set(QueryOrderQty()); } QueryHeader(ocrr.Header); return(ocrr); }
public int amendOrder(ref OrderStruct os) { if (!isOrderAmendPossible(os.OrderStatus)) { return(-1); } OrderDAO ord = new OrderDAO(); int newOrdID = ord.amendOrder(ref os); // OrderID is the last FixAccepted version Console.WriteLine("TODO: Send FIX - cancel for os.LinkedOrderID ; Send FIX - New for os.ID"); OrigClOrdID origCLOrdID = new OrigClOrdID(Convert.ToString(os.ID)); ClOrdID OrdId = new ClOrdID(Convert.ToString(newOrdID)); string symboldata = sanitiseField(os.symbol); Symbol symbol = new Symbol(symboldata); Side side = new Side(Side.BUY); if (os.direction == 'S') { side = new Side(Side.SELL); } OrdType ordType = new OrdType(OrdType.LIMIT); if (os.orderType == 1) { ordType = new OrdType(OrdType.MARKET); } var orderMod = new QuickFix.FIX42.OrderCancelReplaceRequest(origCLOrdID, OrdId, new HandlInst('1'), symbol, side, new TransactTime(DateTime.Now.ToUniversalTime()), ordType); int Qty = (int)os.quantity; orderMod.Price = new Price((decimal)os.price); orderMod.SetField(new OrderQty(Qty)); Console.WriteLine("Modifying origOrdId/FixAcceptedID : " + os.ID + " newOrderID : " + newOrdID); Console.WriteLine("symboldata : " + symboldata + " side : " + side + " Price : " + os.price + " qty : " + os.quantity); Session.SendToTarget(orderMod, FixClient.MySess); return(os.OrderNo); }
public static QuickFix.FIX42.OrderCancelReplaceRequest OrderCancelReplaceRequest( Dictionary<int, string> customFields, QuickFix.FIX42.NewOrderSingle nos, int newQty, decimal newPrice) { QuickFix.FIX42.OrderCancelReplaceRequest ocrq = new QuickFix.FIX42.OrderCancelReplaceRequest( new QuickFix.Fields.OrigClOrdID(nos.ClOrdID.Obj), GenerateClOrdID(), new QuickFix.Fields.HandlInst(QuickFix.Fields.HandlInst.AUTOMATED_EXECUTION_ORDER_PRIVATE), nos.Symbol, nos.Side, new QuickFix.Fields.TransactTime(DateTime.Now), nos.OrdType); 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; }
public void ProcessOrderCancelReplaceRequest(QuickFix.FIX42.NewOrderSingle nos, QuickFix.FIX42.OrderCancelReplaceRequest msg) { }
public void OnMessage(QuickFix.FIX42.OrderCancelReplaceRequest msg, SessionID sessionID) { _fix42MessageHandler.OnMessage(msg, sessionID); }
private QuickFix.FIX42.OrderCancelReplaceRequest QueryCancelReplaceRequest42() { QuickFix.FIX42.OrderCancelReplaceRequest ocrr = new QuickFix.FIX42.OrderCancelReplaceRequest( QueryOrigClOrdID(), QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), QueryOrdType()); if(QueryConfirm("New price")) ocrr.Set( QueryPrice()); if(QueryConfirm("New quantity")) ocrr.Set(QueryOrderQty()); QueryHeader(ocrr.Header); return ocrr; }