private void History_SymbolAdded(object sender, HistoryManagerEventArgs e) { if (this.InvokeRequired) { this.Invoke(new HistoryManagerEventHandler(History_SymbolAdded), sender, e); return; } ISymbol symbol = e.Symbol; ITicksManager ticksDataCacheEvent = symbol.Ticks as ITicksManager; ticksDataCacheEvent.StartTask += new TicksManagerTaskEventHandler(ticksDataCacheEvent_StartTask); ticksDataCacheEvent.StopTask += new TicksManagerTaskEventHandler(ticksDataCacheEvent_StopTask); ticksDataCacheEvent.TaskProcessChanged += new TicksManagerTaskProcessEventHandler(ticksDataCacheEvent_TaskProcessChanged); DataRow row = _table.NewRow(); row["name"] = symbol.Name; row["digits"] = symbol.Digits; this.UpdateRow(row, symbol.Ticks, ""); _table.Rows.Add(row); this._dataGridView.Refresh(); }
private void ImportFromGC(FileInfo file) { Trace.TraceInformation("CommandManager.ImportFromGC({0}) - Start", file.FullName); DateTimeFormatInfo dateTimeFormatInfo = new CultureInfo("en-us").DateTimeFormat; string sname = ""; ISymbol symbol = null; string dp = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator; List <Tick> ticks = new List <Tick>(); bool error = false; int digits = 0; StreamReader sr = file.OpenText(); try { long time = DateTime.Now.Ticks; string input; while ((input = sr.ReadLine()) != null) { input = input.Replace("\"", ""); string[] sa = input.Split(new char[] { ',' }); string symbolname = sa[1].Replace("/", ""); if (sname == "") { sname = symbolname; symbol = Global.History[symbolname]; } /* normalize GMT */ DateTime dtm = DateTime.Parse(sa[2], dateTimeFormatInfo).AddHours(5); string sbid = sa[3].Replace(".", dp); string sask = sa[4].Replace(".", dp); float bid = Convert.ToSingle(sbid); float ask = Convert.ToSingle(sask); if (symbol == null) { digits = Math.Max(digits, this.GetDigitsGC(sa[3])); } ticks.Add(new Tick(dtm.Ticks, bid)); #region if (DateTime.Now.Ticks - 5000000L > time) {...} if (DateTime.Now.Ticks - 5000000L > time) { this.OnCommandProcess(new CommandProcessEventArgs(file, Convert.ToInt32(file.Length), Convert.ToInt32(sr.BaseStream.Position))); time = DateTime.Now.Ticks; } #endregion } } catch (Exception e) { error = true; Trace.TraceInformation("CommandManager.ImportFromGC({0}) - Error: {1}", file.FullName, e.Message); } if (!error) { Trace.TraceInformation("CommandManager.ImportFromGC({0}) - Load={1}Ticks", file.FullName, ticks.Count); if (symbol == null) { symbol = Global.History.Create(sname, digits); Global.History.Add(symbol); } ITicksManager tm = symbol.Ticks as ITicksManager; tm.Update(ticks.ToArray(), true); sr.Close(); // file.Delete(); } Trace.TraceInformation("CommandManager.ImportFromGC({0}) - Stop", file.FullName); }