/// <summary> /// find the bar # that matches a given time /// </summary> /// <param name="bl"></param> /// <param name="time"></param> /// <param name="bint"></param> /// <returns></returns> public static int GetNearestIntraBar(BarList bl, int time, BarInterval bint) { long barid = TimeIntervalData.getbarid(time, bl.RecentBar.Bardate, (int)bint); BarListImpl bli = (BarListImpl)bl; TimeIntervalData tid = (TimeIntervalData)bli._intdata[bli._intdataidx[(int)bint]]; for (int i = 0; i < tid.Count(); i++) { if (tid.ids[i] == barid) { return(i); } } return(-1); }
/// <summary> /// creates a barlist with array of custom intervals /// </summary> /// <param name="symbol"></param> /// <param name="intervals"></param> public BarListImpl(string symbol, int[] intervals, BarInterval[] types) { // set symbol _sym = symbol; // set intervals requested _availint = intervals; // size length of interval data to # of requested intervals _intdata = new IntervalData[_availint.Length]; // create interval data object for each interval for (int i = 0; i < _availint.Length; i++) { try { // save index to this data for the interval _intdataidx.Add(_availint[i], i); } // if key was already present, already had this interval catch (Exception) { continue; } // set default interval to first one if (i == 0) { _defaultint = _availint[0]; } // create data object appropriate for type of interval switch (types[i]) { case BarInterval.CustomTicks: _intdata[i] = new TickIntervalData(_availint[i]); break; case BarInterval.CustomVol: _intdata[i] = new VolIntervalData(_availint[i]); break; default: _intdata[i] = new TimeIntervalData(_availint[i]); break; } // subscribe to bar events _intdata[i].NewBar += new SymBarIntervalDelegate(BarListImpl_NewBar); } }
public static int GetNearestIntraBar(BarList bl, int time, BarInterval bint, DebugDelegate debug) { try { long barid = TimeIntervalData.getbarid(time, bl.RecentBar.Bardate, (int)bint); BarListImpl bli = (BarListImpl)bl; TimeIntervalData tid = (TimeIntervalData)bli._intdata[bli._intdataidx[(int)bint]]; for (int i = 0; i < tid.Count(); i++) { if (tid.ids[i] == barid) { return(i); } } } catch (Exception ex) { if (debug != null) { debug("error getting nearest bar from: " + bl.Symbol + " at: " + time + " for: " + bint + " error: " + ex.Message + ex.StackTrace); } } return(-1); }
/// <summary> /// creates a barlist with array of custom intervals /// </summary> /// <param name="symbol"></param> /// <param name="intervals"></param> public BarListImpl(string symbol, int[] intervals, BarInterval[] types) { // set symbol _sym = symbol; // set intervals requested _availint = intervals; // size length of interval data to # of requested intervals _intdata = new IntervalData[_availint.Length]; // create interval data object for each interval for (int i = 0; i < _availint.Length; i++) { try { // save index to this data for the interval _intdataidx.Add(_availint[i], i); } // if key was already present, already had this interval catch (Exception) { continue; } // set default interval to first one if (i == 0) _defaultint = _availint[0]; // create data object appropriate for type of interval switch (types[i]) { case BarInterval.CustomTicks: _intdata[i] = new TickIntervalData(_availint[i]); break; case BarInterval.CustomVol: _intdata[i] = new VolIntervalData(_availint[i]); break; default: _intdata[i] = new TimeIntervalData(_availint[i]); break; } // subscribe to bar events _intdata[i].NewBar += new SymBarIntervalDelegate(BarListImpl_NewBar); } }
/// <summary> /// creates a barlist with array of custom intervals /// </summary> /// <param name="symbol"></param> /// <param name="custintervals"></param> public BarListImpl(string symbol, int[] custintervals, BarInterval[] types) { // set symbol _sym = symbol; _custintervals = custintervals; // set intervals requested _intervaltypes = BarInterval2Int(types); // size length of interval data to # of requested intervals _intdata = new IntervalData[_intervaltypes.Length]; // index the pairs typesize2idx.Clear(); // create interval data object for each interval for (int i = 0; i < _intervaltypes.Length; i++) { // set default interval to first one if (i == 0) { _defaultint = _intervaltypes[0]; _defaultcustint = _custintervals[0]; curintervalidx = 0; } // save index to this size for the interval switch (types[i]) { case BarInterval.CustomTicks: _intdata[i] = new TickIntervalData(_custintervals[i]); break; case BarInterval.CustomVol: _intdata[i] = new VolIntervalData(_custintervals[i]); break; case BarInterval.CustomTime: _intdata[i] = new TimeIntervalData(_custintervals[i]); break; default: _intdata[i] = new TimeIntervalData(_intervaltypes[i]); break; } // subscribe to bar events _intdata[i].NewBar += new SymBarIntervalDelegate(BarListImpl_NewBar); // index the pair typesize2idx.addindex(_intervaltypes[i].ToString() + _custintervals[i].ToString(), i); } }