private void chartToolStrip1_TimeFrameChanged(ChartTimeFrame timeFrame) { BarSeries barSeries = new BarSeries(); ((TimeSeries)barSeries).DataSeries = ((TimeSeries)this.instrument.GetDailySeries()).DataSeries; BarSeries series = null; switch (timeFrame) { case ChartTimeFrame.Day: series = barSeries; series.Name = ((FIXInstrument)this.instrument).Symbol + " - Daily"; break; case ChartTimeFrame.Week: series = barSeries.Compress(604800L); series.Name = ((FIXInstrument)this.instrument).Symbol + " - Weely"; break; case ChartTimeFrame.Month: series = barSeries.Compress(2419200L); series.Name = ((FIXInstrument)this.instrument).Symbol + " - Monthly"; break; case ChartTimeFrame.Year: series = barSeries.Compress(29030400L); series.Name = ((FIXInstrument)this.instrument).Symbol + " - Annual"; break; } this.UpdateMe(series); }
/// <summary> /// 按指定的 BarSize 生成新的 Bar,新的 BarSize 应该是原始 BarSize 的整数倍,这个函数可以正确的处理夜盘数据。 /// </summary> /// <param name="series"></param> /// <param name="inst"></param> /// <param name="barSize"></param> /// <returns></returns> public static BarSeries TimeCompress(this BarSeries series, Instrument inst, long barSize) { if (series.Count == 0) { return(new BarSeries()); } var bar = series[0]; if (barSize > bar.Size && barSize % bar.Size == 0) { return(Data.Compression.BarCompressor.GetCompressor(inst, bar.Size, barSize).Compress(new Data.Compression.BarDataEnumerator(series))); } return(series.Compress(barSize)); }