/// <summary> /// 查询产品行情 /// </summary> /// <param name="product">被查询产品</param> /// <returns>被查询产品行情信息</returns> public override USeMarketData QuickQuery(USeInstrument product) { try { USeMarketData marketData = null; lock (m_object) { m_marketDataDic.TryGetValue(product.InstrumentCode, out marketData); } if (marketData != null) { return(marketData.Clone()); } else { USeMarketData nullMarketData = new USeMarketData(); nullMarketData.Instrument = product.Clone(); return(nullMarketData); } } catch (Exception ex) { m_logger.WriteError(string.Format("{0} QuickQuery failed,Error: {1}.", ToString(), ex.Message)); USeMarketData nullMarketData = new USeMarketData(); nullMarketData.Instrument = product.Clone(); return(nullMarketData); } }
/// <summary> /// 订阅行情 /// </summary> /// <param name="products">订阅产品</param> public override void Subscribe(USeInstrument instrument) { lock (m_object) { m_instrumentDic[instrument.InstrumentCode] = instrument.Clone(); } }
/// <summary> /// 查询合约保证金。 /// </summary> /// <param name="instrument"></param> /// <returns></returns> public override USeMargin QueryInstrumentMargin(USeInstrument instrument) { USeMargin margin = new USeMargin() { Instrument = instrument.Clone(), ExchangeLongMarginRatio = 0.09m, ExchangeShortMarginRatio = 0.09m, BrokerLongMarginRatioByMoney = 0.09m, BrokerLongMarginRatioByVolume = 0, BrokerShortMarginRatioByMoney = 0.09m, BrokerShortMarginRatioByVolume = 0 }; return(margin); }
/// <summary> /// 查询合约手续费。 /// </summary> /// <param name="instrument">合约。</param> /// <returns></returns> public override USeFee QueryInstrumentFee(USeInstrument instrument) { USeFee fee = new USeFee() { Instrument = instrument.Clone(), OpenRatioByMoney = 0.00005m, OpenRatioByVolume = 0m, CloseRatioByMoney = 0.00005m, CloseRatioByVolume = 0m, CloseTodayRatioByMoney = 0.00005m, CloseTodayRatioByVolume = 0m, StrikeRatioByMoney = 0.00005m, StrikeRatioByVolume = 0m }; return(fee); }
/// <summary> /// 订阅行情 /// </summary> /// <param name="products">订阅产品</param> public override void Subscribe(USeInstrument instrument) { try { lock (m_object) { m_instrumentDic[instrument.InstrumentCode] = instrument.Clone(); } string[] instruments = new string[] { instrument.InstrumentCode }; Debug.WriteLine(string.Format("Subscribe [{0}].", instrument.InstrumentCode)); m_ctpFeed.SubscribeMarketData(instruments); } catch (Exception ex) { m_logger.WriteError(string.Format("{0} subscribeMarketData failed,Error: {1}.", ToString(), ex.Message)); throw ex; } }
/// <summary> /// 查询产品行情 /// </summary> /// <param name="product">被查询产品</param> /// <returns>被查询产品行情信息</returns> public override USeMarketData Query(USeInstrument product) { try { if (m_marketDataDic.ContainsKey(product.InstrumentCode)) { return(m_marketDataDic[product.InstrumentCode]); } else { USeResetEvent queryEvent = new USeResetEvent(); lock (m_object) { if (!m_eventDic.ContainsKey(product.InstrumentCode)) { m_eventDic.Add(product.InstrumentCode, queryEvent); } } m_ctpFeed.SubscribeMarketData(new string[] { product.InstrumentCode }); while (true) { if (queryEvent.WaitOne(m_queryTimeOut) == false) { USeMarketData nullMarketData = new USeMarketData(); nullMarketData.Instrument = product.Clone(); return(nullMarketData); } else { break; } } if (m_marketDataDic.ContainsKey(product.InstrumentCode)) { return(m_marketDataDic[product.InstrumentCode]); } else { USeMarketData nullMarketData = new USeMarketData(); nullMarketData.Instrument = product.Clone(); return(nullMarketData); } } } catch (Exception ex) { m_logger.WriteError(string.Format("{0} Query failed,Error: {1}.", ToString(), ex.Message)); USeMarketData nullMarketData = new USeMarketData(); nullMarketData.Instrument = product.Clone(); return(nullMarketData); } finally { lock (m_object) { m_eventDic.Remove(product.InstrumentCode); } } }