void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { lock (Locker) { IBars bars = data.GetBars(data.GetSymbol(textBox1.Text), data.GetScale(ScaleEnum.tick, 1)); int tickNum = bars.Count; int secNum = tickNum / 4 + 1; TimeFor timeFor = (TimeFor)(tickNum % 4); float price = 0; switch (timeFor) { case TimeFor.Open: price = secNum + 2; break; case TimeFor.Low: price = secNum + 1; break; case TimeFor.High: price = secNum + 4; break; case TimeFor.Close: price = secNum + 3; break; } // DateTime dt = new DateTime(2010,11,12,15,0,0) + new TimeSpan(secNum * 10000000); DateTime dt = startDT + new TimeSpan(secNum * 10000000); OpenWealth.Simple.Tick t = new OpenWealth.Simple.Tick(dt, tickNum, price, 1); bars.Add(dataProvider, t); } }
/// <summary> /// Вселенское зло спит тут! /// </summary> /// <remarks> /// Обязательно!!!!! Необходимо соблюсти порядок столбцов в квике! /// Номер,Дата, Время, Класс Код, Код инстурмента, цена, кол-во! /// </remarks> /// <returns></returns> internal static void GetDeals(byte[] rawData) { if (data == null) { return; } int rowsNumber = BitConverter.ToInt16(new byte[] { rawData[4], rawData[5] }, 0); XLTableTyped table = new XLTableTyped(rawData); for (int i = 0; i < rowsNumber; i++) { double number = -1; try { table.MoveNext(); number = (double)table.Current; table.MoveNext(); string DateStr = (string)table.Current; table.MoveNext(); string TimeStr = (string)table.Current; table.MoveNext(); string MarketStr = (string)table.Current; table.MoveNext(); string CodeStr = (string)table.Current; table.MoveNext(); double price = (double)table.Current; table.MoveNext(); double volume = (double)table.Current; IBar tick = new OpenWealth.Simple.Tick(ParseDateTimeWithCache(String.Concat(DateStr, " ", TimeStr)), (int)number, (float)price, (int)volume); l.Debug("GetDeals Tick " + MarketStr + "." + CodeStr + " " + tick.ToString()); // TODO избавится от null data.GetBars(data.GetSymbol(MarketStr, CodeStr), tickScale).Add(null, tick); } catch (Exception e) { l.Error("Exception в GetDeals, при обработке сделки номер " + number, e); } } }
/// <summary> /// Вселенское зло спит тут! /// </summary> /// <remarks> /// Обязательно!!!!! Необходимо соблюсти порядок столбцов в квике! /// Номер,Дата, Время, Класс Код, Код инстурмента, цена, кол-во! /// </remarks> /// <returns></returns> internal static void GetDeals(byte[] rawData) { if (data == null) return; int rowsNumber = BitConverter.ToInt16(new byte[] { rawData[4], rawData[5] }, 0); XLTableTyped table = new XLTableTyped(rawData); for (int i = 0; i < rowsNumber; i++) { double number = -1; try { table.MoveNext(); number = (double)table.Current; table.MoveNext(); string DateStr = (string)table.Current; table.MoveNext(); string TimeStr = (string)table.Current; table.MoveNext(); string MarketStr = (string)table.Current; table.MoveNext(); string CodeStr = (string)table.Current; table.MoveNext(); double price = (double)table.Current; table.MoveNext(); double volume = (double)table.Current; IBar tick = new OpenWealth.Simple.Tick(ParseDateTimeWithCache(String.Concat(DateStr, " ", TimeStr)), (int)number, (float)price, (int)volume); l.Debug("GetDeals Tick " + MarketStr + "." + CodeStr + " " + tick.ToString()); // TODO избавится от null data.GetBars(data.GetSymbol(MarketStr, CodeStr), tickScale).Add(null, tick); } catch (Exception e) { l.Error("Exception в GetDeals, при обработке сделки номер " + number, e); } } }