Exemple #1
0
        private async void LearnBtn_Click(object sender, RoutedEventArgs e)
        {
            if (_aggregator.IsProcess)
            {
                return;
            }

            if (_days.Count == 0)
            {
                MessageBox.Show("_days.Count==0");
                return;
            }
            var count = 0;

            ProgressBar.Maximum = _days.Sum(day => day.Trades.Count);
            var scale = (decimal)ProgressBar.Maximum / 100;

            if (!_aggregator.IsStart)
            {
                _aggregator.SimTrader.NewTrade += trade =>
                {
                    count++;
                    if (count < scale)
                    {
                        return;
                    }

                    Dispatcher.Invoke(new Action(() => ProgressBar.Value += count));
                    count = 0;
                };

                _aggregator.Finish += signals =>
                {
                    var newSignLst = new List <List <Signal> >(signals);
                    _signals.AddRange(newSignLst);
                    _aggregator.DaysSignals.Clear();

                    Dispatcher.Invoke(() =>
                    {
                        LoadBtn.Background = new SolidColorBrush(Colors.White);
                        ProgressBar.Value  = 0;
                        _days.Clear();
                        Dqn();
                    });
                };
            }
            _aggregator.AddDays(_days);

            await Task.Factory.StartNew(_aggregator.ProcessDays);
        }