public QuickFix.Price getPrice() { QuickFix.Price value = new QuickFix.Price(); getField(value); return value; }
/// <summary> /// submit an order to IB using a incomming FIX new order single /// </summary> /// <param name="myMsg"></param> private void submitOrder(KaiTrade.Interfaces.IMessage myMsg) { QuickFix.Message myQFOrder = null; try { // Extract the raw FIX Message from the inbound message string strOrder = myMsg.Data; // Use QuickFix to handle the message myQFOrder = new QuickFix.Message(strOrder); // Use product manager to validate the product specified on // the order exists for this adapter // Get the product associated with the FIX message //QuickFix.Symbol symbol = new QuickFix.Symbol(); //myQFOrder.getField(symbol); QuickFix.Side mySide = new QuickFix.Side(); QuickFix.OrdType myOrdType = new QuickFix.OrdType(); QuickFix.OrderQty myOrderQty = new QuickFix.OrderQty(); QuickFix.Price myPrice = new QuickFix.Price(); QuickFix.StopPx myStopPx = new QuickFix.StopPx(); QuickFix.Account myAccount = new QuickFix.Account(); QuickFix.ClOrdID myClOrdID = new QuickFix.ClOrdID(); QuickFix.TimeInForce myTimeInForce = new QuickFix.TimeInForce(); // the account code is mandatory if (myQFOrder.isSetField(myAccount)) { myQFOrder.getField(myAccount); } else { this.SendAdvisoryMessage("IB TWS: you need to provide a valid account"); throw new Exception("IB TWS: you need to provide a valid account"); } myQFOrder.getField(myClOrdID); // Get the Order type myQFOrder.getField(myOrdType); // Get the QTY myQFOrder.getField(myOrderQty); // get the Side of the order myQFOrder.getField(mySide); // Set order duration myQFOrder.getField(myTimeInForce); // Prices if (myQFOrder.isSetField(myPrice)) { myQFOrder.getField(myPrice); } if (myQFOrder.isSetField(myStopPx)) { myQFOrder.getField(myStopPx); } // get the contract TWSLib.IContract myContract = getIBContract(myQFOrder); if (myContract == null) { this.SendAdvisoryMessage("IB TWS: cannot find a valid contract"); throw new Exception("IB TWS: cannot find a valid contract"); } // create an IB Order TWSLib.IOrder myIBOrder = m_Host.TWS.createOrder(); myIBOrder.whatIf = 0; myIBOrder.account = myAccount.getValue(); if(myOrdType.getValue() == QuickFix.OrdType.LIMIT) { myIBOrder.orderType = "LMT"; myIBOrder.lmtPrice = myPrice.getValue(); } else if(myOrdType.getValue() == QuickFix.OrdType.MARKET) { myIBOrder.orderType = "MKT"; } else if (myOrdType.getValue() == QuickFix.OrdType.STOP) { myIBOrder.orderType = "STP"; myIBOrder.auxPrice = myStopPx.getValue(); if (myPrice.getValue() == -1) { myIBOrder.lmtPrice = myStopPx.getValue(); } else { myIBOrder.lmtPrice = myPrice.getValue(); } } else if (myOrdType.getValue() == QuickFix.OrdType.STOP_LIMIT) { myIBOrder.orderType = "STP"; myIBOrder.auxPrice = myStopPx.getValue(); if (myPrice.getValue() == -1) { myIBOrder.lmtPrice = myStopPx.getValue(); } else { myIBOrder.lmtPrice = myPrice.getValue(); } } else { this.SendAdvisoryMessage("IB TWS: order type not supported"); throw new Exception("IB TWS: order type not supported"); } myIBOrder.totalQuantity = (int) myOrderQty.getValue(); // Side string myAction = KaiUtil.QFUtils.DecodeSide(mySide).ToUpper(); myIBOrder.action = myAction; // Time in force string myTIF = KaiUtil.QFUtils.DecodeTimeInForce(myTimeInForce).ToUpper(); myIBOrder.timeInForce = myTIF; if (myOrdType.getValue() == QuickFix.OrdType.LIMIT) { myIBOrder.lmtPrice = myPrice.getValue(); } DriverBase.OrderContext myCntx = RecordOrderContext(myClOrdID.getValue(), myQFOrder, null, m_NextID.ToString()); SetContextCommand(myCntx, DriverBase.ORCommand.Undefined, DriverBase.ORCommand.Submit); myCntx.OrderQty = myIBOrder.totalQuantity; myCntx.CumQty = 0; m_Host.TWS.placeOrderEx(m_NextID++, myContract, myIBOrder); } catch (Exception myE) { _log.Error("submitOrder", myE); // To provide the end user with more information // send an advisory message, again this is optional // and depends on the adpater this.SendAdvisoryMessage("IB TWS:submitOrder: problem submitting order:" + myE.ToString()); QuickFix.OrdStatus myOrdStatus; QuickFix.ExecType myExecType = new QuickFix.ExecType(QuickFix.ExecType.REJECTED); myOrdStatus = new QuickFix.OrdStatus(QuickFix.OrdStatus.REJECTED); QuickFix.OrderQty orderQty = new QuickFix.OrderQty(); if (myQFOrder != null) { myQFOrder.getField(orderQty); QuickFix.OrdRejReason myRejReason = new QuickFix.OrdRejReason(QuickFix.OrdRejReason.OTHER); sendExecReport(myQFOrder, new QuickFix.OrderID("UNKNOWN"), myOrdStatus, myExecType, 0.0, (int)orderQty.getValue(), 0, 0, 0, myE.Message, myRejReason); } } }
public bool isSet(QuickFix.Price field) { return(isSetField(field)); }
public QuickFix.Price getPrice() { QuickFix.Price value = new QuickFix.Price(); getField(value); return(value); }
public QuickFix.Price get(QuickFix.Price value) { getField(value); return(value); }
public void set(QuickFix.Price value) { setField(value); }