public void SetNewData(bool isHistory, BarsFileData newBarsFileData) { lock (_locked) { BarsFileData bfd = isHistory ? this.History : this.Cache; if (bfd != null) { bfd.CloseStream(); bfd.File.Delete(); } string fn = newBarsFileData.File.FullName; fn = fn.Substring(0, fn.Length - 4); newBarsFileData.File.MoveTo(fn); if (isHistory) { _history = new BarsFileData(new FileInfo(fn)); _session.IncrementsLevel1(); } else { _cache = new BarsFileData(new FileInfo(fn)); _session.IncrementsLevel2(); } } }
public void SaveFileInfo() { lock (_locked) { this.CheckWriter(); _bwriter.BaseStream.Seek(0, SeekOrigin.Begin); _bwriter.Write(VERSION); _bwriter.Write(BarsFileData.GetArray(_symbolName, 8)); _bwriter.Write(_digits); string copyright = "(C)opyright 2007, Gordago Software Corp."; _bwriter.Write(BarsFileData.GetArray(copyright, 60)); _bwriter.Write(BarsFileData.GetArray("", 44 + 4 + 4 + 4)); this.CloseWriter(); } }
public BarsFolder(DirectoryInfo dirTicksFiles) { _dir = new DirectoryInfo(dirTicksFiles.FullName + "\\" + BARS_DIR); if (!_dir.Exists) { _dir.Create(); } FileInfo[] files = _dir.GetFiles("*.gtf"); foreach (FileInfo file in files) { BarsFileData barsFileData = new BarsFileData(file); _files.Add(new FileKey(file), barsFileData); } }
public BarsFileDataCacher(TicksManager ticksManager, BarManager bm, bool isHistory, BarsFileData currentBFD, TimeFrame timeFrame) { _bm = bm; _ticksManager = ticksManager; _currentBarsFileData = currentBFD; _timeFrame = timeFrame; _symbolName = ticksManager.Name; _digits = ticksManager.Digits; _tfsec = timeFrame.Second; _isHistory = isHistory; _directory = isHistory ? ticksManager.DirectoryBarsHistory : ticksManager.DirectoryBarsCache; string fn = string.Format(@"{0}\{1}{2}.gtf.tmp", _directory, _symbolName, _timeFrame.Second); FileInfo file = new FileInfo(fn); if (file.Exists) { file.Delete(); } _newBarsFileData = new BarsFileData(file); }
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(); } }