/// <summary> /// 构造方法。 /// </summary> /// <param name="instrument">合约。</param> /// <param name="publisher">发布者。</param> /// <param name="tradeRange">交易时段。</param> /// <param name="publishInterval">发布间隔(单位:秒)。</param> public DayKLineFactory(USeInstrument instrument, USeKLine initKLine, IKLinePublisher publisher, DayTradeRange tradeRange, IAppLogger eventLogger, TimeSpan publishInterval, bool isMainContract, USeTradingInstrumentManager instrumentManager) : base(instrument, publisher, tradeRange, eventLogger) { m_publishInterval = publishInterval; m_nextPublishTime = DateTime.Now.AddTicks(publishInterval.Ticks); m_isMainContract = isMainContract; if (initKLine != null) { Debug.Assert(initKLine.InstrumentCode == instrument.InstrumentCode); m_kLine = initKLine; } if (isMainContract) { string varieties = USeTraderProtocol.GetVarieties(instrument.InstrumentCode); m_mainContractCode = USeTraderProtocol.GetMainContractCode(varieties, instrument.Market); } //获取该数据库下的合约详细信息 try { Debug.Assert(instrumentManager != null); m_insDetailList = instrumentManager.GetAllInstrumentDetails(); } catch (Exception ex) { throw new Exception("IndexDayKLineFactory 获取全部合约详细信息异常:" + ex.Message); } }
/// <summary> /// 构造方法。 /// </summary> /// <param name="instrument">处理合约。</param> /// <param name="publisher">发布者。</param> /// <param name="tradeRange">交易时段。</param> public KLineFactory(USeInstrument instrument, IKLinePublisher publisher, DayTradeRange tradeRange, IAppLogger eventLogger) { m_instrument = instrument; m_publisher = publisher; m_tradeRange = tradeRange; m_eventLogger = eventLogger; }
/// <summary> /// 启动。 /// </summary> /// <param name="marketDataProvider"></param> /// <param name="dbStore"></param> public void Start(List <IKLineDataListener> storers, ITradeRangeManager tradeRangeManager, MainContractManager mainContractManager, USeProductManager productManager, AlphaDBVistor alphaDBVistor, USeTradingInstrumentManager instrumentManager, IAppLogger eventLogger) { m_runFlag = true; if (storers == null) { throw new ArgumentNullException("storers"); } if (tradeRangeManager == null) { throw new ArgumentNullException("tradeRangeManager"); } if (mainContractManager == null) { throw new ArgumentNullException("mainContractManager"); } if (productManager == null) { throw new ArgumentNullException("productManager"); } if (alphaDBVistor == null) { throw new ArgumentNullException("kLineVistor"); } if (instrumentManager == null) { throw new ArgumentNullException("instrumentManager"); } if (eventLogger == null) { throw new ArgumentNullException("eventLogger"); } m_storers = storers; m_tradeRangeManager = tradeRangeManager; m_productManager = productManager; m_mainContractManager = mainContractManager; m_alphaDBVistor = alphaDBVistor; m_instrumentManager = instrumentManager; m_eventLogger = eventLogger; KLinePublisher kLinePublisher = new KLinePublisher(); kLinePublisher.SetMarketDataStore(storers); m_kLinePublisher = kLinePublisher; this.m_workThread = new Thread(new ThreadStart(DoWork)); this.m_workThread.Start(); }
/// <summary> /// 构造方法。 /// </summary> /// <param name="instrument">合约。</param> /// <param name="klinePublisher">发布者。</param> /// <param name="cycle">周期。</param> /// <param name="eventLogger">日志。</param> public MinKLineFactory(USeInstrument instrument, IKLinePublisher klinePublisher, DayTradeRange tradeRange, IAppLogger eventLogger, USeCycleType cycle, bool isMainContract) : base(instrument, klinePublisher, tradeRange, eventLogger) { if (cycle != USeCycleType.Min1) { throw new NotSupportedException(string.Format("Not support {0} ", cycle)); } m_cycle = cycle; m_isMainContract = isMainContract; if (isMainContract) { string varieties = USeTraderProtocol.GetVarieties(instrument.InstrumentCode); m_mainContract = USeTraderProtocol.GetMainContractCode(varieties, instrument.Market); } }
private List <USeInstrumentDetail> m_insDetailList = null; //合约的信息列表 #endregion #region construction /// <summary> /// 构造方法。 /// </summary> /// <param name="product">品种。</param> /// <param name="publisher">发布者。</param> /// <param name="tradeRange">交易时段。</param> /// <param name="publishInterval">发布间隔。</param> public IndexDayKLineFactory(USeProduct product, List <USeInstrument> instrumentList, USeKLine initKLine, TimeSpan publishInterval, IKLinePublisher publisher, DayTradeRange tradeRange, IAppLogger eventLogger, USeTradingInstrumentManager instrumentManager) : base(USeTraderProtocol.GetVarietiesIndexCode(product), publisher, tradeRange, eventLogger) { Debug.Assert(product.PriceTick > 0); Debug.Assert(instrumentList != null && instrumentList.Count > 0); m_publishInterval = publishInterval; m_nextPublishTime = DateTime.Now.AddTicks(publishInterval.Ticks); m_product = product; m_componentDic = new Dictionary <string, USeMarketData>(); foreach (USeInstrument instrument in instrumentList) { m_componentDic.Add(instrument.InstrumentCode, null); } if (initKLine != null) { Debug.Assert(initKLine.InstrumentCode == USeTraderProtocol.GetVarietiesIndexCode(product).InstrumentCode); m_kLine = initKLine; } else { m_kLine = CreateDefaultKLine(); } //获取该数据库下的合约详细信息 try { Debug.Assert(instrumentManager != null); m_insDetailList = instrumentManager.GetAllInstrumentDetails(); } catch (Exception ex) { throw new Exception("IndexDayKLineFactory 获取全部合约详细信息异常:" + ex.Message); } }
/// <summary> /// 构造方法。 /// </summary> /// <param name="indexInstrument">指数合约。</param> /// <param name="klinePublisher">发布者。</param> /// <param name="cycle">周期。</param> /// <param name="eventLogger">日志。</param> public IndexMinKLineFactory(USeProduct product, List <USeInstrument> instrumentList, USeCycleType cycle, IKLinePublisher klinePublisher, DayTradeRange tradeRange, IAppLogger eventLogger, USeTradingInstrumentManager instrumentManager) : base(USeTraderProtocol.GetVarietiesIndexCode(product), klinePublisher, tradeRange, eventLogger) { if (cycle != USeCycleType.Min1) { throw new NotSupportedException(string.Format("Not support {0} ", cycle)); } Debug.Assert(product.PriceTick > 0); Debug.Assert(instrumentList != null && instrumentList.Count > 0); m_cycle = cycle; m_product = product; m_componentDic = new Dictionary <string, USeMarketData>(); foreach (USeInstrument instrument in instrumentList) { m_componentDic.Add(instrument.InstrumentCode, null); } //if (initKLine != null) //{ // Debug.Assert(initKLine.InstrumentCode == USeTraderProtocol.GetVarietiesIndexCode(product).InstrumentCode); // m_kLine = initKLine; //} //获取该数据库下的合约详细信息 try { Debug.Assert(instrumentManager != null); m_insDetailList = instrumentManager.GetAllInstrumentDetails(); } catch (Exception ex) { throw new Exception("IndexDayKLineFactory 获取全部合约详细信息异常:" + ex.Message); } }