/// <summary> /// Lets the user pick a file to which save currently displayed candles /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSaveCandles_Click(object sender, EventArgs e) { using (var sfd = new SaveFileDialog()) { sfd.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*"; sfd.FilterIndex = 1; sfd.RestoreDirectory = true; sfd.InitialDirectory = Application.ExecutablePath; if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { CandlesProvider.SaveCandlesToCSV(sfd.FileName, _candles); } } }
/// <summary> /// Loads candles after clicking on Refresh button /// </summary> /// <param name="minDate"></param> /// <param name="isRealtime"></param> /// <param name="candlesDurationInMinutes"></param> /// <param name="maxDate"></param> private void LoadCandles(DateTime minDate, int candlesDurationInMinutes, DateTime?maxDate) { var currencyPair = dataSelector.SelectedPair; Task.Factory.StartNew(() => CandlesProvider.LoadCandles(currencyPair, minDate, candlesDurationInMinutes, maxDate)) .ContinueWith(taskResult => { if (taskResult.Result != null) { _candles = taskResult.Result; myChartControl.DrawChart(taskResult.Result, Constants.PriceSerieName); } }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); }
/// <summary> /// Called when slow timer ticks, to update displayed candles with latest data /// </summary> /// <param name="fetchLiveData"></param> /// <param name="candlesDurationInMin"></param> private void UpdateCandles(DateTime fromDate, int candlesDurationInMin, CurrencyPair pair) { lock (this) { // First load history if (_candles.Count > 0) { UpdateStatus("Fetching new data"); CandlesProvider.UpdateCandlesWithLiveData(fromDate, candlesDurationInMin, _candles, pair); } try { UpdateStatus("Ready..."); } catch (Exception ex) { UpdateStatus(string.Format("Error during Update: {0}", ex.Message)); } } }
/// <summary> /// Loads chart data from a csv file /// </summary> /// <param name="fileName"></param> private void LoadChartFromCSVCandlesFile(string fileName) { _candles = CandlesProvider.ReadCandlesFromCSV(fileName, chartSelector.FromDate, chartSelector.ToDate); chartCtrl.DrawChart(_candles, Constants.PriceSerieName); }