コード例 #1
0
ファイル: BarManager.cs プロジェクト: zeliboba7/gordago
        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();
                }
            }
        }
コード例 #2
0
ファイル: TicksFileData.cs プロジェクト: zeliboba7/gordago
        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();
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: TicksManager.cs プロジェクト: zeliboba7/gordago
        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();
            }
        }