Exemplo n.º 1
0
        // 按因子对象初始因子数据缓存集
        public bool InitDataCaches(IData_Factors infoFactors, IData_Factor infoFactor, bool useEvent = false)
        {
            if (_isInited == false)
            {
                return(false);
            }
            IDataCaches_Manage dataManage = this.GetDataCaches_Manage(infoFactors);

            if (dataManage == null)
            {
                return(false);
            }

            if (dataManage.GetDataCaches(infoFactor, false) == null)
            {
                DataCaches dataCaches = (DataCaches)dataManage.GetDataCaches(infoFactor, true);

                //注册检查集初始事件
                if (useEvent)
                {
                    dataCaches.DataChecks_Initial += new DataCachesChecksInitial_EventHandler(EventHandler_DataCachesChecksInitial);
                    dataCaches.Event_DataChecks_Initial();
                }
                return(this._IndexFactors(infoFactors, infoFactor));
            }
            return(true);
        }
Exemplo n.º 2
0
 public DataCaches(IData_Factor info_Factor, IDataCache_Set srcDataCache_Set, IDataChecks dataChecks = null)
 {
     _DataCache_Set = new DataCache_Set(info_Factor.ID, srcDataCache_Set.Time_Base, typeTimeFrequency.none, 0, info_Factor, srcDataCache_Set);
     _id            = _DataCache_Set.ID;
     dataChecks     = _DataChecks;
     _DataCaches    = new Dictionary <string, IDataCache>();
 }
Exemplo n.º 3
0
        // 按因子对象初始因子数据缓存集
        public bool InitDataCaches(IData_Factors infoFactors, IData_Factor infoFactor)
        {
            //提取管理类
            IDataCaches_Manage dataManage = this.GetDataCaches_Manage(infoFactors, true);

            return(this._IndexFactors(infoFactors, infoFactor) && dataManage.InitDataCaches(infoFactor));
        }
Exemplo n.º 4
0
        public int InitDataCache_Data <T>(IData_Factors infoFactors, IData_Factor infoFactor, string tagName, typeTimeFrequency typeTimeFrequency, Dictionary <DateTime, T> datas, bool useEvent = false)
        {
            if (_isInited == false)
            {
                return(-1);
            }
            DataCaches dataCaches = (DataCaches)this.GetDataCaches(infoFactors, infoFactor);

            if (dataCaches == null)
            {
                return(-1);
            }

            if (dataCaches.GetDataCache <T>(tagName, typeTimeFrequency) == null)
            {
                DataCache <T> dataCache = (DataCache <T>)dataCaches.GetDataCache <T>(tagName, typeTimeFrequency, true, 0);

                //注册事件
                if (useEvent)
                {
                    dataCache.DataCache_Load     += new DataCacheLoad_EventHandler(EventHandler_DataCacheLoad);
                    dataCache.DataChecks_Initial += new DataCacheChecksInitial_EventHandler(EventHandler_DataCacheChecksInitial);
                    dataCache.DataCache_Change   += new DataCacheChange_EventHandler(EventHandler_DataCacheChange);
                    dataCache.Event_DataCache_Load();
                    dataCache.Event_DataChecks_Initial();
                }
                return(dataCache.InitDatas(datas));
            }
            return(-1);
        }
Exemplo n.º 5
0
        /// <summary>按因子对象初始因子数据缓存对象
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="infoFactors">因子对象集</param>
        /// <param name="infoFactor">因子对象</param>
        /// <param name="tagName">标识</param>
        /// <param name="typeTimeFrequency">数据频率</param>
        /// <param name="cacheNums">缓存数据数量</param>
        /// <returns></returns>
        public bool InitDataCache <T>(IData_Factors infoFactors, IData_Factor infoFactor, string tagName, typeTimeFrequency typeTimeFrequency, int cacheNums, bool useEvent = false)
        {
            if (_isInited == false)
            {
                return(false);
            }
            DataCaches dataCaches = (DataCaches)this.GetDataCaches(infoFactors, infoFactor);

            if (dataCaches == null)
            {
                return(false);
            }

            if (dataCaches.GetDataCache <T>(tagName, typeTimeFrequency) == null)
            {
                DataCache <T> dataCache = (DataCache <T>)dataCaches.GetDataCache <T>(tagName, typeTimeFrequency, true, cacheNums);

                //注册事件
                if (useEvent)
                {
                    dataCache.DataCache_Load     += new DataCacheLoad_EventHandler(EventHandler_DataCacheLoad);
                    dataCache.DataChecks_Initial += new DataCacheChecksInitial_EventHandler(EventHandler_DataCacheChecksInitial);
                    dataCache.DataCache_Change   += new DataCacheChange_EventHandler(EventHandler_DataCacheChange);
                    dataCache.Event_DataCache_Load();
                    dataCache.Event_DataChecks_Initial();
                }
                return(this._IndexFactors(infoFactors, infoFactor));
            }
            return(true);
        }
Exemplo n.º 6
0
        //设置正数据对象-修正为同时间频率数据
        public virtual bool SetData(CacheInfo <Data_Quote> pCacheInfo, typeTimeFrequency timeFrequency, typeTimeFrequency timeFrequency2)
        {
            Data_Quote pData = pCacheInfo.Data;

            if (pData == null)
            {
                return(false);
            }
            StockInfo pStockInfo = pData.GetStockInfo();

            if (pStockInfo == null)
            {
                return(false);
            }

            //获取当前时间频率数据
            DateTime   dtEnd    = zxcTimeHelper.CheckTime(pData.DateTime, typeTimeFrequency.m1, true);
            Data_Quote pDataNew = QuoteQuery._Query.Query(pStockInfo, pData.DateTime, timeFrequency, null);

            if (pDataNew == null)
            {
                return(false);
            }
            bool bResult = this.SetData(pDataNew, timeFrequency);

            return(bResult);


            //非时间频率数据,重新修正
            if (pData.QuoteTimeType != timeFrequency)
            {
                string        exType   = pStockInfo.StockExchange.ToString();
                IData_Factors pFactors = _managerCaches._GetFactors(exType);
                if (pFactors != null)
                {
                    IData_Factor           pFactor    = pFactors.GetData_Factor(pStockInfo.StockID_Tag);
                    DataCache <Data_Quote> pDataCache = (DataCache <Data_Quote>)_managerCaches.GetDataCache <Data_Quote>(pFactors, pFactor, "", timeFrequency);

                    //查询最后有效步长数据总数
                    int nCount = pDataCache.DataCaches.Values.Count(e => e.Data.IsDel == true);

                    //获取最数据
                    List <Data_Quote> lstQuotes = QuoteQuery._Query.Query(pStockInfo.StockID_Tag, pDataNew.DateTime, nCount, timeFrequency, true);
                    if (lstQuotes != null)
                    {
                        foreach (var item in lstQuotes)
                        {
                            int nSum = pDataCache.DataCaches.Values.Count(e => e.DateTime == item.DateTime && e.Data.IsDel != true);
                            if (nSum == 0)
                            {
                                item.SetStockInfo(pStockInfo);
                                bResult = bResult && this.SetData(item, timeFrequency);
                            }
                        }
                    }
                }
            }
            return(bResult);
        }
Exemplo n.º 7
0
        //设置缓存数据对象-修正
        //public virtual Data_Quote SetData_ValueCheck(Data_Quote pData, typeTimeFrequency timeFrequency)
        //{
        //    pData.QuoteTimeType = timeFrequency;
        //    return pData;
        //}



        //初始规则信息集合-Caches-弃用
        private bool InitDataChecks_Caches(IData_Factors pFactors, IData_Factor pFactor)
        {
            IDataCaches dataCaches          = _managerCaches.GetDataCaches(pFactors, pFactor);
            IDataChecks poDataChecks_Caches = new DataChecks_Quote(dataCaches.ID, dataCaches);
            bool        bResult             = dataCaches.InitDataChecks(poDataChecks_Caches);

            return(bResult);
        }
Exemplo n.º 8
0
        /// <summary>按因子对象初始因子数据缓存对象
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="infoFactors">因子对象集</param>
        /// <param name="infoFactor">因子对象</param>
        /// <param name="tagName">标识</param>
        /// <param name="typeTimeFrequency">数据频率</param>
        /// <param name="cacheNums">缓存数据数量</param>
        /// <returns></returns>
        public bool InitDataCache <T>(IData_Factors infoFactors, IData_Factor infoFactor, string tagName, typeTimeFrequency typeTimeFrequency, int cacheNums)
        {
            //提取管理类
            IDataCaches_Manage dataManage = this.GetDataCaches_Manage(infoFactors, true);

            return(this._IndexFactors(infoFactors, infoFactor) &&
                   dataManage.InitDataCache <T>(infoFactor, tagName, typeTimeFrequency, cacheNums));
        }
Exemplo n.º 9
0
 // 初始单个
 public bool InitDataCaches(IData_Factor infoFactor)
 {
     if (this.GetDataCaches(infoFactor) == null)
     {
         DataCaches data = new DataCaches(infoFactor, _DataCache_Set);
         _DataCaches[data.ID] = data;
         return(true);
     }
     return(false);
 }
Exemplo n.º 10
0
        /// <summary>按因子对象集、因子对象等提取缓存数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="infoFactors">因子对象集标识</param>
        /// <param name="infoFactor">因子对象标识</param>
        /// <param name="strTag">自定义标识</param>
        /// <param name="dtTime">数据时间</param>
        /// <param name="typeTimeFrequency">时间频率</param>
        /// <returns></returns>
        public T GetData <T>(string tagFactors, string tagFactor, string strTag, DateTime dtTime, typeTimeFrequency typeTimeFrequency = typeTimeFrequency.none)
        {
            IData_Factors dataFactors = this._GetFactors(tagFactors);

            if (dataFactors != null)
            {
                IData_Factor dataFactor = dataFactors.GetData_Factor(tagFactor);
                return(GetData <T>(dataFactors, dataFactor, strTag, dtTime, typeTimeFrequency));
            }
            return(default(T));
        }
Exemplo n.º 11
0
        public T GetData <T>(IData_Factor infoFactor, string strTag, DateTime dtTime, typeTimeFrequency typeTimeFrequency = typeTimeFrequency.None)
        {
            IDataCache <T> dataCache = GetDataCache <T>(infoFactor, strTag, typeTimeFrequency);

            if (dataCache == null)
            {
                return(default(T));
            }

            return(dataCache.GetData(dtTime));
        }
Exemplo n.º 12
0
        public bool SetData <T>(IData_Factor infoFactor, string strTag, DateTime dtTime, T data, typeTimeFrequency typeTimeFrequency = typeTimeFrequency.None)
        {
            IDataCache <T> dataCache = GetDataCache <T>(infoFactor, strTag, typeTimeFrequency);

            if (dataCache == null)
            {
                return(false);
            }

            return(dataCache.SetData(dtTime, data));
        }
Exemplo n.º 13
0
 /// <summary>索引因子集对象(便于用标识查找因子集)
 /// </summary>
 /// <param name="infoFactors">因子对象集</param>
 /// <param name="infoFactor">因子对象</param>
 /// <returns></returns>
 protected bool _IndexFactors(IData_Factors infoFactors, IData_Factor infoFactor)
 {
     if (infoFactors == null)
     {
         return(false);
     }
     if (this._GetFactors(infoFactors.ID) == null)
     {
         _Data_Factorss.Add(infoFactors.ID, infoFactors);
     }
     return(infoFactors.IndexData_Factor(infoFactor));
 }
Exemplo n.º 14
0
        /// <summary>提取指定因子对象集、因子对象的数据缓存集
        /// </summary>
        /// <param name="infoFactors">因子对象集</param>
        /// <param name="infoFactor">因子对象</param>
        /// <param name="autoInit">是否自动初始</param>
        /// <returns></returns>
        public IDataCaches GetDataCaches(IData_Factors infoFactors, IData_Factor infoFactor, bool autoInit = false)
        {
            //提取管理类
            IDataCaches_Manage dataManage = this.GetDataCaches_Manage(infoFactors, autoInit);

            if (dataManage == null)
            {
                return(null);
            }

            return(dataManage.GetDataCaches(infoFactor, autoInit));
        }
Exemplo n.º 15
0
 /// <summary>索引因子集对象(便于用标识查找因子集)
 /// </summary>
 /// <param name="infoFactors">因子对象集</param>
 /// <param name="infoFactor">因子对象</param>
 /// <returns></returns>
 public bool IndexData_Factor(IData_Factor infoFactor)
 {
     if (infoFactor == null)
     {
         return(false);
     }
     if (this.GetData_Factor(infoFactor.ID) == null)
     {
         _factors.Add(infoFactor.ID, infoFactor);
     }
     return(true);
 }
Exemplo n.º 16
0
        public int InitDataCache_Data <T>(IData_Factors infoFactors, IData_Factor infoFactor, string tagName, typeTimeFrequency typeTimeFrequency, Dictionary <DateTime, T> datas)
        {
            //提取管理类
            IDataCache <T> dataCache = GetDataCache <T>(infoFactors, infoFactor, tagName, typeTimeFrequency);

            if (dataCache == null)
            {
                return(-1);
            }

            return(dataCache.InitDatas(datas));
        }
Exemplo n.º 17
0
        public IDataCache <T> GetDataCache <T>(IData_Factor infoFactor, string strTag = "", typeTimeFrequency typeTimeFrequency = typeTimeFrequency.None, bool autoInit = false, int cacheNums = 1)
        {
            IDataCaches dataCaches = GetDataCaches(infoFactor, autoInit);

            if (dataCaches == null)
            {
                return(null);
            }

            IDataCache <T> data = dataCaches.GetDataCache <T>(strTag, typeTimeFrequency, autoInit, cacheNums);

            return(data);
        }
Exemplo n.º 18
0
        /// <summary>按因子对象集、因子对象等设置缓存数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="infoFactors">因子对象集标识</param>
        /// <param name="infoFactor">因子对象标识</param>
        /// <param name="strTag">自定义标识</param>
        /// <param name="dtTime">数据时间</param>
        /// <param name="data">数据(int等或class对象)</param>
        /// <param name="typeTimeFrequency">时间频率</param>
        /// <returns></returns>
        public bool SetData <T>(string tagFactors, string tagFactor, string strTag, DateTime dtTime, T data, typeTimeFrequency typeTimeFrequency = typeTimeFrequency.none)
        {
            IData_Factors dataFactors = this._GetFactors(tagFactors);

            if (dataFactors != null)
            {
                IData_Factor dataFactor = dataFactors.GetData_Factor(tagFactor);
                if (dataFactor != null)
                {
                    return(SetData <T>(dataFactors, dataFactor, strTag, dtTime, data, typeTimeFrequency));
                }
            }
            return(false);
        }
Exemplo n.º 19
0
        public bool InitDataCheck <T>(string tagFactors, string tagFactor, string strTag, typeTimeFrequency typeTimeFrequency, string tagDataCheck, IDataCheck <T> dataCheck, bool isCanCover = false)
        {
            if (tagFactors + "" == "")
            {
                return(false);
            }

            //DataCaches_Manage
            IData_Factors infoFactors = this._GetFactors(tagFactors);

            if (infoFactors == null)
            {
                return(false);
            }
            IDataCaches_Manage dataCaches_Manage = this.GetDataCaches_Manage(infoFactors);

            if (dataCaches_Manage == null)
            {
                return(false);
            }
            if (tagFactor + "" == "")
            {
                return(dataCaches_Manage.InitDataCheck <T>(tagDataCheck, dataCheck, isCanCover));
            }

            //DataCaches
            IData_Factor infoFactor = infoFactors.GetData_Factor(tagFactor);

            if (infoFactor == null)
            {
                return(false);
            }
            IDataCaches dataCaches = this.GetDataCaches(infoFactors, infoFactor);

            if (dataCaches == null)
            {
                return(false);
            }

            IDataCache dataCache = dataCaches.GetDataCache <T>(strTag, typeTimeFrequency);

            if (dataCache == null)
            {
                return(dataCaches.InitDataCheck <T>(tagDataCheck, dataCheck, isCanCover));
            }
            else
            {
                return(dataCache.InitDataCheck(tagDataCheck, dataCheck, isCanCover));
            }
        }
Exemplo n.º 20
0
        /// <summary>提取指定标识的因子集对象
        /// </summary>
        /// <param name="strTag"></param>
        /// <returns></returns>
        public IData_Factor GetData_Factor(string strTag)
        {
            if (strTag + "" == "")
            {
                return(null);
            }

            IData_Factor pFactor = null;

            if (_factors.TryGetValue(strTag, out pFactor))
            {
            }
            return(pFactor);
        }
Exemplo n.º 21
0
        //初始规则信息集合-Cache-弃用
        private bool InitDataChecks_Cache(IData_Factors pFactors, IData_Factor pFactor, Data_Quote data)
        {
            //数据缓存集检查
            IDataCaches dataCaches = _managerCaches.GetDataCaches(pFactors, pFactor);

            if (dataCaches == null)
            {
                return(false);
            }

            //初始检查集
            bool bResult = this.InitDataChecks_CheckAll(dataCaches);

            return(bResult);
        }
Exemplo n.º 22
0
 public DataCache_Set(string tagName, DateTime dtBase, typeTimeFrequency typeTimeFrequency, int cacheNums, IData_Factor infoFactor, IDataCache_Set srcDataCache_Set = null) : base(tagName)
 {
     if (tagName == "")
     {
         tagName = infoFactor.ID;
     }
     _id             = tagName;
     _Info_Factor    = infoFactor;
     _tagName        = tagName;
     _Time_Frequency = typeTimeFrequency;
     _sumStep        = cacheNums;
     _dtStep         = (int)_Time_Frequency;
     _dtBase         = dtBase;
     _Parent         = srcDataCache_Set;
     this.InitTime(dtBase, typeTimeFrequency);
 }
Exemplo n.º 23
0
        public IDataCaches GetDataCaches(IData_Factor infoFactor, bool autoInit = false)
        {
            IDataCaches dataCaches = null;

            if (_DataCaches.TryGetValue(infoFactor.ID, out dataCaches))
            {
                //What ever you gonna do next...
            }
            if (autoInit && dataCaches == null)
            {
                if (InitDataCaches(infoFactor))
                {
                    return(GetDataCaches(infoFactor));
                }
            }
            return(dataCaches);
        }
Exemplo n.º 24
0
        public bool InitDataCache <T>(IData_Factor infoFactor, string tagName, typeTimeFrequency typeTimeFrequency, int cacheNums)
        {
            IDataCaches dataCaches = this.GetDataCaches(infoFactor);

            if (dataCaches == null)
            {
                if (InitDataCaches(infoFactor))
                {
                    dataCaches = this.GetDataCaches(infoFactor);
                    if (dataCaches == null)
                    {
                        return(false);
                    }
                }
            }
            return(dataCaches.InitDataCache <T>(tagName, typeTimeFrequency, cacheNums));
        }
Exemplo n.º 25
0
        /// <summary>提取指定因子对象集、因子对象的数据缓存集
        /// </summary>
        /// <param name="infoFactors">因子对象集</param>
        /// <param name="infoFactor">因子对象</param>
        /// <param name="autoInit">是否自动初始</param>
        /// <returns></returns>
        public IDataCaches GetDataCaches(IData_Factors infoFactors, IData_Factor infoFactor, bool autoInit = false)
        {
            //提取管理类
            IDataCaches_Manage dataManage = this.GetDataCaches_Manage(infoFactors, autoInit);

            if (dataManage == null)
            {
                return(null);
            }

            IDataCaches dataCaches = dataManage.GetDataCaches(infoFactor, false);

            if (autoInit && dataCaches == null)
            {
                if (this.InitDataCaches(infoFactors, infoFactor, autoInit))
                {
                    return(GetDataCaches(infoFactors, infoFactor));
                }
            }
            return(dataCaches);
        }
Exemplo n.º 26
0
        /// <summary>按因子对象集、因子对象提取缓存数据对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="infoFactors">因子对象集</param>
        /// <param name="infoFactor">因子对象</param>
        /// <param name="strTag">自定义标识</param>
        /// <param name="typeTimeFrequency">时间频率</param>
        /// <param name="autoInit">不存在时是否自定初始</param>
        /// <param name="cacheNums">缓存数据数量,autoInit为false时无效</param>
        /// <returns></returns>
        public IDataCache <T> GetDataCache <T>(IData_Factors infoFactors, IData_Factor infoFactor, string strTag = "", typeTimeFrequency typeTimeFrequency = typeTimeFrequency.none, bool autoInit = false, int cacheNums = 1)
        {
            IDataCaches dataCaches = this.GetDataCaches(infoFactors, infoFactor, autoInit);

            if (dataCaches == null)
            {
                return(null);
            }

            IDataCache <T> dataCache = dataCaches.GetDataCache <T>(strTag, typeTimeFrequency);

            if (autoInit && dataCache == null)
            {
                if (this.InitDataCache <T>(infoFactors, infoFactor, strTag, typeTimeFrequency, cacheNums, autoInit))
                {
                    return(GetDataCache <T>(infoFactors, infoFactor, strTag, typeTimeFrequency));
                }
            }

            //事件触发
            return(dataCache);
        }
Exemplo n.º 27
0
        //统一初始数据缓存相关
        public virtual bool InitDataCache(Data_Quote pData)
        {
            if (pData == null)
            {
                return(false);
            }
            StockInfo stockInfo = pData.GetStockInfo();

            if (stockInfo == null)
            {
                return(false);
            }

            string        exType = stockInfo.StockExchange.ToString();
            bool          bExist = true, bResult = true;
            IData_Factors pFactors = _managerCaches._GetFactors(exType);

            if (pFactors == null)
            {
                //提取信息
                pFactors          = new Data_Factors(exType, exType, "", "");
                pFactors.DateTime = pData.DateTime;
                bExist            = false;
            }

            IData_Factor pFactor = pFactors.GetData_Factor(stockInfo.StockID_Tag);

            if (bExist == false || pFactor == null)
            {
                //提取信息
                pFactor          = new Data_Factor(stockInfo.StockID_Tag, stockInfo.StockID_Tag, stockInfo.StockName, "");
                pFactor.DateTime = pFactors.DateTime;

                //初始数据所有缓存对象
                if (this._managerCaches.DataCaches_Manages.Count < 1)
                {
                    this._managerCaches.Init(pFactors.DateTime);
                }
                foreach (var item in _setsDataCache)
                {
                    //提取数据缓存对象、及检查对象集
                    IDataCache <Data_Quote> poDataCache = _managerCaches.GetDataCache <Data_Quote>(pFactors, pFactor, "", item.Key, true, item.Value);

                    //IDataCache poDataCache = null;
                    //if (item.Key == typeTimeFrequency.real)
                    //    poDataCache = _managerCaches.GetDataCache<Data_Quote>(pFactors, pFactor, "", item.Key, true, item.Value);
                    //else
                    //    poDataCache = _managerCaches.GetDataCache<Data_Quote>(pFactors, pFactor, "", item.Key, true, item.Value);
                    //_managerCaches.InitDataCache<Data_Quote_Swap>(pFactors, pFactor, "", item.Key, item.Value);
                }

                //初始规则信息集合-Caches
                //bResult = this.InitDataChecks_Caches(pFactors, pFactor);

                //初始规则信息集合-Cache
                //bResult = bResult && this.InitDataChecks_Cache(pFactors, pFactor, data);
                _dictQuotes[_getTag(pData)] = true;
                return(bResult);
            }
            return(false);
        }