public ChartWindow(CandleSeries candleSeries, DateTime from, DateTime to) { InitializeComponent(); if (candleSeries == null) throw new ArgumentNullException(nameof(candleSeries)); _candleSeries = candleSeries; _trader = MainWindow.Instance.Trader; Chart.ChartTheme = "ExpressionDark"; var area = new ChartArea(); Chart.Areas.Add(area); _candleElem = new ChartCandleElement { Antialiasing = false, UpFillColor = Colors.White, UpBorderColor = Colors.Black, DownFillColor = Colors.Black, DownBorderColor = Colors.Black, }; area.Elements.Add(_candleElem); _trader.NewCandles += ProcessNewCandles; _trader.SubscribeCandles(_candleSeries, from, to); Title = candleSeries.ToString(); }
static void Main(string[] args) { _candleManager = new CandleManager(); if (!GetSetings()) return; var storageRegistry = new StorageRegistry(); ((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = _historyPath; var cbs = new TradeStorageCandleBuilderSource { StorageRegistry = storageRegistry }; _candleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Sources.Add(cbs); _candleManager.Processing += GetCandles; foreach (var Sec in listOfName) { foreach (var timeFrame in listOfTimeFrame) { _series = new CandleSeries(typeof(TimeFrameCandle), Sec, timeFrame); LisfStreamWriters.Add(_series.ToString(), new StreamWriter(GetFileName(_series), false)); _candleManager.Start(_series, _startTime, _endTime); } } Console.ReadKey(); // Закроем все потоки которые мы записывали foreach (var strim in LisfStreamWriters) { strim.Value.Close(); } }
private void HistoryCandlesClick(object sender, RoutedEventArgs e) { var series = new CandleSeries { CandleType = typeof(TimeFrameCandle), Security = SelectedSecurity, Arg = CandlesPeriods.SelectedItem, }; var wnd = new CandlesWindow { Title = series.ToString() }; _сandles.Add(series, wnd); Trader.SubscribeCandles(series, DateTime.Today.Subtract(TimeSpan.FromTicks(((TimeSpan)series.Arg).Ticks * 30)), DateTime.Now); wnd.Show(); }
private static void GetCandles(CandleSeries series, Candle candle) { if (candle.State == CandleStates.Finished) { LisfStreamWriters[series.ToString()].WriteLine(candle.OpenTime.Date.ToString("d") + " " + candle.OpenTime.DateTime.ToString("T") + " " + candle.OpenPrice.ToString()+ " "+ candle.HighPrice.ToString() +" "+ candle.LowPrice.ToString() +" "+candle.ClosePrice.ToString() +" "+candle.TotalVolume.ToString()); Console.Write("."); } }
private static string GetFileName(CandleSeries candleSeries) { // TimeFrameCandle_SBER@TQBR_00-30-00 TimeSpan temp = (TimeSpan) candleSeries.Arg; string fullPath = _Path + temp.ToString("hhmmss"); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } return fullPath + @"\"+ candleSeries.ToString().Replace("TimeFrameCandle_","") + ".txt"; }