public ChartDataProviderCTS(string chartName, ezBarInterval barInterval, ezSessionTimeRange session) { this.chartName = chartName; // If null has been passed as barInterval or session, then we will use default values for those. if (barInterval == null) { barInterval = new ezBarInterval(zChartInterval.Day, 1); } if (session == null) { session = new ezSessionTimeRange(); } this.BarInterval = barInterval; this.Session = session; // Create the EZChartDataSeries - this will be available via the ChartData property (but the caller // should subscribe to the events to know when the data has finished loading or updates occur). this.chartData = new EZChartDataSeries(chartName, barInterval, session); this.chartData.DataLoadComplete += chartData_DataLoadComplete; this.chartData.DataSeriesUpdated += chartData_DataSeriesUpdated; }
public ChartDataThread(ChartDataSeries ctsChartData, EZChartDataSeries chartData, DateTime startDate, DateTime endDate) { this.ctsChartData = ctsChartData; this.chartData = chartData; this.startDate = startDate; this.endDate = endDate; }
public ChartDataProviderYahoo(string chartName, ezBarInterval barInterval, ezSessionTimeRange session) { this.chartName = chartName; // If null has been passed as barInterval or session, then we will use default values for those. if (barInterval == null) { barInterval = new ezBarInterval(zChartInterval.Day, 1); } if (session == null) { session = new ezSessionTimeRange(); } this.BarInterval = barInterval; this.Session = session; // Create the EZChartDataSeries - this will be available via the ChartData property (but the caller // should subscribe to the events to know when the data has finished loading or updates occur). this.chartData = new EZChartDataSeries(chartName, barInterval, session); //var chartThread = new ChartDataThread(this, chartData, startDate, endDate); //var thread = new Thread(new ThreadStart(chartThread.Run)); //thread.Name = chartName + ":" + barInterval; //thread.Start(); }
/// <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); * }*/ }
public override void UpdateProviderFromPropertyValues() { //selectedMarketData = prop["QuoteItem"]; ezInstrumentKey instrumentKey = APIFactory.InstrumentKeyFromString(prop["InstrumentKey"]); // Get historical data for 1-hour "bars". EZInstrument instrument = APIMain.InstrumentFromKey(instrumentKey); zChartInterval interval = zChartInterval.Hour; int period = 1; // TODO analyze different time periods (ex: different hours of the trading session) to // get a better "AverageVolumePerTimePeriod" calculation. EZChartDataSeries historicalData = api.RequestHistoricalData(instrument, interval, period); if (historicalData == null) { averageVolumePerTimePeriod = prop["AverageVolumePerTimePeriod"] ?? 0; timePeriodLength = prop["TimePeriodLengthMinutes"] ?? 0.0; } else { int totalVolume = 0; int volumeCount = 0; foreach (ezBarDataPoint dp in historicalData.TradeBars) { totalVolume += dp.Volume; ++volumeCount; } double averageVolumePerHour = (double)totalVolume / (double)volumeCount; timePeriodLength = 5.0; // five minutes averageVolumePerTimePeriod = (int)Math.Round(averageVolumePerHour / 20.0); } currentInstrument = APIMain.InstrumentFromKey(instrumentKey); //api.SubscribeToInstrument(instrument.Key); api.OnInsideMarketUpdate += api_OnInsideMarketUpdate; api_OnInsideMarketUpdate(currentInstrument); }