Exemplo n.º 1
0
        public void SetNewData(bool isHistory, TicksFileMapData newTicksFileMap)
        {
            lock (_locked) {
                TicksFileMapData tfm = isHistory ? this.History : this.Cache;
                if (tfm != null)
                {
                    tfm.CloseStream();
                    tfm.File.Delete();
                }

                string fn = newTicksFileMap.File.FullName;
                fn = fn.Substring(0, fn.Length - 4);
                newTicksFileMap.File.MoveTo(fn);

                if (isHistory)
                {
                    _history = new TicksFileMapData(new FileInfo(fn));
                }
                else
                {
                    _cache = new TicksFileMapData(new FileInfo(fn));
                }
                _sessionId++;
            }
        }
Exemplo n.º 2
0
        public MapsFolder(DirectoryInfo dirTicksFiles)
        {
            _dir = new DirectoryInfo(dirTicksFiles.FullName + "\\" + MAPS_DIR);
            if (!_dir.Exists)
            {
                _dir.Create();
            }

            FileInfo[] files = _dir.GetFiles("*.gmp");
            foreach (FileInfo file in files)
            {
                TicksFileMapData ticksFileMapData = new TicksFileMapData(file);
                _files.Add(new FileKey(file), ticksFileMapData);
            }
        }
Exemplo n.º 3
0
        public TicksFileMapDataCacher(TicksManager ticksManager,
                                      bool isHistory,
                                      TicksFileMapData currentBFD)
        {
            _ticksManager = ticksManager;
            _currentBFD   = currentBFD;
            _symbolName   = ticksManager.Name;
            _isHistory    = isHistory;
            _directory    = isHistory ? ticksManager.DirectoryMapsHistory : ticksManager.DirectoryMapsCache;

            string   fn   = string.Format(@"{0}\{1}.gmp.tmp", _directory, _symbolName);
            FileInfo file = new FileInfo(fn);

            if (file.Exists)
            {
                file.Delete();
            }
            _newBFD = new TicksFileMapData(file);
        }
Exemplo n.º 4
0
        private void CacheBars(bool isHistory, Dictionary <int, BarsFileData> bfds, long beginTime)
        {
            List <BarsFileDataCacher> cacher = new List <BarsFileDataCacher>();
            TicksFileData             tfd    = isHistory ? this.History : this.Cache;
            TicksFileMapData          tfmd   = isHistory ? this.Map.History : this.Map.Cache;

            TicksFileMapDataCacher mapCacher = new TicksFileMapDataCacher(this, isHistory, tfmd);

            foreach (BarManager bm in (BarsManager)this.BarsDataList)
            {
                BarsFileData bfdBad = null;
                bfds.TryGetValue(bm.TimeFrame.Second, out bfdBad);
                BarsFileDataCacher bfdc =
                    new BarsFileDataCacher(this, bm, isHistory, bfdBad, bm.TimeFrame);

                cacher.Add(bfdc);
            }

            long time = DateTime.Now.Ticks;

            for (int i = 0; i < tfd.Count; i++)
            {
                Tick tick = tfd.Read(i);
                for (int ii = 0; ii < cacher.Count; ii++)
                {
                    cacher[ii].Add(tick);
                }

                mapCacher.Add(tick);
                if (DateTime.Now.Ticks - time > 5000000L)
                {
                    this.OnTaskProcessChanged(new TicksManagerProcessEventArgs(_currentTask.Task, tfd.Count, i));
                    time = DateTime.Now.Ticks;
                }

                if (this.CheckTaskPriority())
                {
                    _abortTask = true;
                    break;
                }
            }

            for (int i = 0; i < cacher.Count; i++)
            {
                if (_abortTask)
                {
                    cacher[i].Abort();
                }
                else
                {
                    /* блокировка */
                    lock (_locked)
                        cacher[i].Complete();
                }
            }
            if (_abortTask)
            {
                mapCacher.Abort();
            }
            else
            {
                lock (_locked)
                    mapCacher.Complete();
            }
        }