//Shows example of parsing a custom TT group public void onGatewayStatusMessage(QuickFix42.Message message, SessionID session) { parseMessage(message, session); if (message.hasGroup(TT.NoGatewayStatus.FIELD)) { updateDisplay(string.Format("Found {0} NoGatewayStatus groups", message.groupCount(TT.NoGatewayStatus.FIELD))); QuickFix.Group g = new Group(18201, 18202, new int[] { 18202, 207, 18203, 18204, 58, 0 }); for (uint i = 1; i <= message.groupCount(TT.NoGatewayStatus.FIELD); i++) { message.getGroup(i, g); updateDisplay(string.Format("GatewayStatus: {0}", g.getField(new TT.GatewayStatus()))); updateDisplay(string.Format("SecurityExchange: {0}", g.getField(new QuickFix.SecurityExchange()))); updateDisplay(string.Format("ExchangeGateway: {0}", g.getField(new TT.ExchangeGateway()))); updateDisplay(string.Format("SubExchangeGateway: {0}", g.getField(new TT.SubExchangeGateway()))); if (g.isSetField(new QuickFix.Text())) { updateDisplay(string.Format("Text: {0}", g.getField(new QuickFix.Text()))); } string s = g.getField(new TT.ExchangeGateway()).ToString(); if (!_gateways.Contains(s)) { _gateways.Add(s); } } } updateFormData(); }
/// <summary> /// 查询股份 /// </summary> public void QueryHold() { QuickFix42.Message message = new QuickFix42.Message(new MsgType("UAN")); message.setString(710, getNextID()); // 请求ID message.setInt(724, 0); // 请求类别 SendToServer(message); }
private void readFileInfo() { bool endofmsgs = false; TextReader tr = new StreamReader(persistentOrderFile); string line = tr.ReadLine(); while (line != null) { if (line.Equals(";")) { endofmsgs = true; line = tr.ReadLine(); continue; } if (!endofmsgs) { QuickFix42.Message oldMsg = new QuickFix42.Message(); } else { } } }
public void Logout() { QuickFix42.Message message = new QuickFix42.Message(new MsgType("5")); SendToServer(message); Session session = Session.lookupSession(ssnid); if ((session != null) && session.isLoggedOn()) { session.logout(); } }
public void SendToServer(QuickFix42.Message message)//发送信息请求 { if (ssnid != null && Session.lookupSession(ssnid).isLoggedOn()) { Session.sendToTarget(message, ssnid); } else { throw new Exception("missing ssnid"); } }
/// <summary> /// Submit FIX request to retreive all the days trades, SODs and manual Fills /// </summary> /// <param name="session"></param> /// <param name="reqtype"></param> public void ttRequestForPosition(int reqtype) { try { QuickFix42.Message rfp = new QuickFix42.Message(new QuickFix.MsgType("UAN")); rfp.setField(new TT.PosReqId(uniqueID())); rfp.setField(new TT.PosReqType(reqtype)); QuickFix.Session.sendToTarget(rfp, orderSessionID); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
/// <summary> /// Submit a FIX message to subscribe to gateway status. Status is displayed but no action is attached. /// </summary> /// <param name="session"></param> /// <param name="SubscriptionRequestType"></param> public void ttGatewayStatusRequest(char SubscriptionRequestType) { try { //Gateway Status Request QuickFix42.Message gsr = new QuickFix42.Message(new QuickFix.MsgType("UAR")); gsr.setChar(QuickFix.SubscriptionRequestType.FIELD, SubscriptionRequestType); gsr.setField(new TT.GatewayStatusReqId(uniqueID())); QuickFix.Session.sendToTarget(gsr, orderSessionID); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public QuickFix42.OrderCancelRequest GenerateCancelRequest(string clOrdId, int index) { string originalId = (string)LimitOrders[index]; QuickFix42.Message msg = Msgs[originalId]; //check for a recent ID string temp = LimitLib.GetRecentId(originalId); if (temp != null) { //limitLib.add(originalID, clOrdId); //associate new Id originalId = temp; //send with most recent from previous request } Side oldSide = new Side(); msg.getField(oldSide); TransactTime uTime = new TransactTime(); msg.getField(uTime); QuickFix42.OrderCancelRequest ocr = new QuickFix42.OrderCancelRequest( new OrigClOrdID(originalId), new ClOrdID(clOrdId), new Symbol(msg.getField(Symbol.FIELD)), //Necessary Field for canceling child orders oldSide, //Necessary Field for canceling child orders uTime); OrderID oid = new OrderID("x"); ocr.setField(oid); //Neccessary Field for canceling child orders Price limitPrice = new Price(); msg.getField(limitPrice); //OCR.setField(limitPrice); ocr.setField(57, msg.getField(57)); ocr.setField(9102, msg.getField(9102)); return(ocr); }
public static void Add(QuickFix42.Message msg) { ClOrdID clientId = new ClOrdID(); OrdType orderType = new OrdType(); msg.getField(clientId); Msgs.Add(clientId.getValue(), msg); if (msg.isSetField(orderType)) { msg.getField(orderType); if (orderType.getValue() == OrdType.LIMIT) { LimitOrders.Add(clientId.getValue()); LimitLib.Add(clientId.getValue()); } } }
public int PrintLimitList() { Symbol sym = new Symbol(); Side sd = new Side(); OrderQty oq = new OrderQty(); Console.WriteLine(" Index\tOrderID"); int count = 0; foreach (string strOrdId in LimitOrders) { QuickFix42.Message msg = Msgs[strOrdId]; msg.getField(sym); msg.getField(sd); msg.getField(oq); Console.WriteLine("\t" + count + "\t" + strOrdId + "\t" + sym + " " + sd + " " + oq); count++; } return(count); }
public QuickFix42.OrderCancelReplaceRequest GenerateReplaceRequest(string clOrdId, int qty, double limitPx, double stopPx, int index) { string originalId = (string)LimitOrders[index]; QuickFix42.Message msg = Msgs[originalId]; //check for a recent ID string temp = LimitLib.GetRecentId(originalId); if (temp != null) { LimitLib.Add(originalId, clOrdId); //associate new Id originalId = temp; //send with most recent from previous request } else { LimitLib.Add(originalId, clOrdId); } Side oldSide = new Side(); msg.getField(oldSide); TransactTime uTime = new TransactTime(); msg.getField(uTime); QuickFix42.OrderCancelReplaceRequest ocrr = new QuickFix42.OrderCancelReplaceRequest( new OrigClOrdID(originalId), new ClOrdID(clOrdId), new HandlInst('1'), new Symbol(msg.getField(Symbol.FIELD)), oldSide, uTime, new OrdType(OrdType.LIMIT)); // Update prices and quantity ocrr.set(limitPx > 0 ? new Price(limitPx) : new Price(double.Parse(msg.getField(Price.FIELD)))); if (stopPx > 0) // If the user specified a new stop price { ocrr.set(new StopPx(stopPx)); } else { // Otherwise use the original stop price StopPx spx = new StopPx(); if (msg.isSetField(spx)) { msg.getField(spx); ocrr.set(spx); } else { msg.setField(spx); } } ocrr.set(qty > 0 ? new OrderQty(qty) : new OrderQty(int.Parse(msg.getField(OrderQty.FIELD)))); OrderID oid = new OrderID("x"); ocrr.setField(oid); ocrr.setField(57, msg.getField(57)); ocrr.setField(9102, msg.getField(9102)); return(ocrr); }
public void onPositionReportMessage(QuickFix42.Message message, SessionID session) { parseMessage(message, session); }