コード例 #1
0
        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;
        }
コード例 #2
0
 public ChartDataThread(ChartDataSeries ctsChartData, EZChartDataSeries chartData, DateTime startDate, DateTime endDate)
 {
     this.ctsChartData = ctsChartData;
     this.chartData    = chartData;
     this.startDate    = startDate;
     this.endDate      = endDate;
 }
コード例 #3
0
        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();
        }
コード例 #4
0
        /// <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);
             * }*/
        }
コード例 #5
0
        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);
        }