/// <summary> /// Example: to get 15 minute bars, /// interval = ChartInterval.Minute /// period = 15 /// </summary> /// <param name="market"></param> /// <param name="interval"></param> /// <param name="period"></param> /// <param name="startDate"></param> /// <param name="endDate">Leave endDate = null for realtime (endDate = current date)</param> static public EZChartDataSeries MakeChartData(EZInstrument instrument, ezBarInterval barInterval, DateTime startDate, DateTime?endDate = null) { Market market = APIMain.MarketFromInstrument(instrument); // Load the data for the selected market. BarInterval interval = new BarInterval(APIConvert.ToChartInterval(barInterval.Interval), barInterval.Period); ChartDataSeries ctsChartData = new ChartDataSeries(market, interval, SessionTimeRange.Empty); var session = new ezSessionTimeRange(); EZChartDataSeries chartData = new EZChartDataSeries(market.Description, barInterval, session); var chartThread = new ChartDataThread(ctsChartData, chartData, startDate, endDate); var thread = new Thread(new ThreadStart(chartThread.Run)); thread.Name = market.Description + ":" + barInterval; thread.Start(); return(chartData); //dataPoints = new List<ezBarDataPoint>(); /*foreach (HistoricalQuote hq in historical) * { * ezBarDataPoint dp = new ezBarDataPoint(hq.Open, hq.High, hq.Low, hq.Close, 0, hq.Volume); * dataPoints.Add(dp); * }*/ }
private void RequestChartData(EZInstrument instrument, zChartInterval interval, int period) { ChartDataForm chartForm; // Set EndDate to the current trading date. //DateTime dtEndDate = selectedContract.GetTradeDate(DateTime.Now); DateTime dtEndDate = DateTime.Now; DateTime dtStartDate; // Pick a different start date depending on if we are viewing DAYS, HOURS, MINUTES, etc... if (interval == zChartInterval.Week) { dtStartDate = dtEndDate.AddMonths(-16); } else if (interval == zChartInterval.Day) { dtStartDate = dtEndDate.AddMonths(-5); } else if (interval == zChartInterval.Minute) { dtStartDate = dtEndDate; if (period <= 15) // 15 minute (or less) bars { dtStartDate = dtStartDate.AddTradeHours(-4); } else // more than 15 minute bars { dtStartDate = dtStartDate.AddTradeDays(-2); } } else { // Anything we haven't covered, we'll load a couple days (not ideal - needs to be improved). dtStartDate = dtEndDate; dtStartDate = dtStartDate.AddTradeDays(-3); /*// This little loop here will ensure that we load the previous trade date as well as today and will account for weekends * // and holidays. * while ((selectedContract.GetTradeDate(dtStartDate) == dtEndDate)) * { * dtStartDate = dtStartDate.AddDays(-1); * }*/ } // Create a BarInterval object to tell the API what bar interval we want. // So for example, if we wanted a 15 minute bar, we would do: New ezBarInterval(zChartDataType.Minute, 15) ezBarInterval ezbi = new ezBarInterval(interval, period); IChartDataProvider provider = new ChartDataProviderCTS(instrument.Name + " : " + ezbi, ezbi, ezSessionTimeRange.Empty); chartForm = new ChartDataForm(provider); WinForms.SetWaitCursor(true); //provider.LoadHistoricalChartData(APIMain.MarketFromInstrument(instrument), dtStartDate, dtEndDate); provider.LoadRealTimeChartData(APIMain.MarketFromInstrument(instrument), dtStartDate); chartForm.Show(); }
public EZChartDataSeries(string dataSeriesName, ezBarInterval interval, ezSessionTimeRange session) { this.dataSeriesName = dataSeriesName; this.interval = interval; this.session = session; tickDataPoints = new List <ezBarDataPointTicks>(); dataPoints = new List <ezBarDataPoint>(); }