/// <summary> /// create barlist from a tik file using given intervals/types /// </summary> /// <param name="filename"></param> /// <param name="uselast"></param> /// <param name="usebid"></param> /// <param name="intervals"></param> /// <param name="types"></param> /// <returns></returns> public static BarList FromTIK(string filename, bool uselast, bool usebid, int[] intervals, BarInterval[] types) { _uselast = uselast; _usebid = usebid; SecurityImpl s = SecurityImpl.FromTik(filename); s.HistSource.GotTick += HistSource_gotTick; _fromepf = new BarListImpl(s.Name, intervals, types); while (s.HistSource.NextTick()) { ; } return(_fromepf); }
/// <summary> /// get a barlist from tick data and optionally use bid/ask data to construct bars /// </summary> /// <param name="filename"></param> /// <param name="uselast"></param> /// <param name="usebid"></param> /// <returns></returns> public static BarList FromTIK(string filename, bool uselast, bool usebid) { _uselast = uselast; _usebid = usebid; SecurityImpl s = SecurityImpl.FromTik(filename); s.HistSource.GotTick += HistSource_gotTick; _fromepf = new BarListImpl(s.Name); while (s.HistSource.NextTick()) { ; } s.HistSource.Close(); return(_fromepf); }
/// <summary> /// insert a bar at particular place in the list. /// REMEMBER YOU MUST REHANDLE GOTNEWBAR EVENT AFTER CALLING THIS. /// </summary> /// <param name="bl"></param> /// <param name="b"></param> /// <param name="position"></param> /// <returns></returns> public static BarListImpl InsertBar(BarList bl, Bar b, int position) { BarListImpl copy = new BarListImpl(bl.Symbol, bl.CustomIntervals, bl.Intervals); // verify bar is valid if (!b.IsValid) { return(copy); } for (int j = 0; j < bl.CustomIntervals.Length; j++) { if ((bl.CustomIntervals[j] != b.CustomInterval) && (bl.Intervals[j] != b.BarInterval)) { continue; } int count = bl.IntervalCount(b.BarInterval, b.CustomInterval); if (count < 0) { throw new Exception("bar has interval: " + b.BarInterval + "/" + b.CustomInterval + " not defined in your barlist for: " + bl.Symbol); } if (count > 0) { for (int i = 0; i < count; i++) { if (i == position) { Addbar(copy, b, j); } Addbar(copy, bl[i, b.BarInterval, b.CustomInterval], j); } } else { Addbar(copy, b, j); } } return(copy); }
internal static void Addbar(BarListImpl b, Bar mybar, int instdataidx) { b._intdata[instdataidx].AddBar(mybar); }