public bool ReqQuoteAction(ThostFtdcQuoteField quoteField, out string errMsg) {
/// <summary> /// 报价通知 /// </summary> /// <param name="pQuote"></param> void OnRtnQuote(ThostFtdcQuoteField pQuote) { if (IsMyQuote(pQuote)) { if (pQuote.QuoteStatus == EnumOrderStatusType.Unknown) { if (pQuote.ExchangeID != null && pQuote.ExchangeID != "" && pQuote.QuoteSysID != null && pQuote.QuoteSysID != "") { } } else if (pQuote.QuoteStatus == EnumOrderStatusType.NoTradeQueueing) { QuoteRef2QuoteFieldMap.Add(pQuote.QuoteRef, pQuote); if (pQuote.AskOrderSysID != null || pQuote.AskOrderSysID != "") { OrderSysID2QuoteRefMap.Add(pQuote.AskOrderSysID, pQuote.QuoteRef); } if (pQuote.BidOrderSysID != null || pQuote.BidOrderSysID != "") { OrderSysID2QuoteRefMap.Add(pQuote.BidOrderSysID, pQuote.QuoteRef); } } else if (pQuote.QuoteStatus == EnumOrderStatusType.Touched) { } else if (pQuote.QuoteStatus == EnumOrderStatusType.Canceled) { //全部成交自动撤单 if (OrderSysID2QuoteRefMap.ContainsKey(pQuote.AskOrderSysID)) { OrderSysID2QuoteRefMap.Remove(pQuote.AskOrderSysID); } if (OrderSysID2QuoteRefMap.ContainsKey(pQuote.BidOrderSysID)) { OrderSysID2QuoteRefMap.Remove(pQuote.BidOrderSysID); } QuoteRef2QuoteFieldMap.Remove(pQuote.QuoteRef); } } }
/// <summary> /// 判断是否是我的做市单 /// </summary> /// <param name="pQuote"></param> /// <returns></returns> private bool IsMyQuote(ThostFtdcQuoteField pQuote) { return true; //return ((pQuote.FrontID == trader.FrontID) && (pQuote.SessionID == trader.SessionID)); }
/// <summary> /// 请求查询报价响应 /// </summary> /// <param name="pQuote"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> void OnRspQryQuote(ThostFtdcQuoteField pQuote, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { }
/// <summary> /// 报价操作请求 /// </summary> /// <param name="pQuote"></param> /// <returns></returns> public int ReqQuoteAction(ThostFtdcQuoteField pQuote) { lock (ReqLock) { ThostFtdcInputQuoteActionField req = new ThostFtdcInputQuoteActionField(); req.ActionFlag = EnumActionFlagType.Delete; req.BrokerID = trader.BrokerID; req.FrontID = trader.FrontID; req.ExchangeID = pQuote.ExchangeID; req.InstrumentID = pQuote.InstrumentID; req.InvestorID = pQuote.InvestorID; req.QuoteRef = pQuote.QuoteRef; req.SessionID = pQuote.SessionID; req.UserID = pQuote.UserID; int iRet = trader.ReqQuoteAction(req, ++RequestID); if (QuoteRef2QuoteStategyMap.ContainsKey(pQuote.QuoteRef)) { QuoteRef2QuoteStategyMap.Remove(pQuote.QuoteRef); } return iRet; } }