Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
        }