protected override void Play(object sender, DoWorkEventArgs e)
        {
            _isbusy = true;
            _resultsdict.Clear();
            while (isNextAvail)
            {
                decimal value = NextParam;
                int     id    = _id;

                if (ChangeValue(ref _strategy, value))
                {
                    //OptimizerEngine ge = new OptimizerEngine(s, hsim);
                    //Thread.SpinWait(1000);
                    //debugControl1.GotDebug("Starting a Optimizer instance");
                    Debug("Started Optimizer Engine: " + id);
                    Go();

                    List <Trade>         trades = _simbroker.GetTradeList();
                    PerformanceEvaluator result = new PerformanceEvaluator();
                    //result.InitializePositions();
                    result.GenerateReports(trades);

                    decimal rv = 0;
                    GetResult(result, out rv);

                    _resultsdict.Add(value.ToString("N3") + " : " + rv.ToString("N3"), result);

                    Debug("optimize " + id + " finished.  Used: " + value + " -> " + OptimizeDecisionsName + ": " + rv + " trades: " + trades.Count + " SimsRemaining: " + OptimizeRemain);
                    progress(_id, OptimizeCount);
                }
                else
                {
                    Debug("Unable to start Optimizer engine: " + id + " with: " + value);
                }
            }
            Debug("All optimization runs complete, computing optimum...");
            // unbind
            UnbindEvents();
            _isbusy = false;
        }
 void _backtestengine_SendPlayCompleteEvent(int obj)
 {
     _performevaluator = new PerformanceEvaluator();
     //_performevaluator.InitializePositions();
     _performevaluator.GenerateReports(_tradelist);
     System.Windows.Application.Current.Dispatcher.Invoke(() =>
     {
         _performevaluator.FillGrid(_resultstable);
     });
 }
        protected override void Play(object sender, DoWorkEventArgs e)
        {
            _isbusy = true;
            _resultsdict.Clear();
            while (isNextAvail)
            {
                decimal value = NextParam;
                int id = _id;

                if (ChangeValue(ref _strategy, value))
                {
                    //OptimizerEngine ge = new OptimizerEngine(s, hsim);
                    //Thread.SpinWait(1000);
                    //debugControl1.GotDebug("Starting a Optimizer instance");
                    Debug("Started Optimizer Engine: " + id);
                    Go();

                    List<Trade> trades = _simbroker.GetTradeList();
                    PerformanceEvaluator result = new PerformanceEvaluator();
                    //result.InitializePositions();
                    result.GenerateReports(trades);

                    decimal rv = 0;
                    GetResult(result, out rv);

                    _resultsdict.Add(value.ToString("N3") + " : " + rv.ToString("N3"), result);

                    Debug("optimize " + id + " finished.  Used: " + value + " -> " + OptimizeDecisionsName + ": " + rv + " trades: " + trades.Count + " SimsRemaining: " + OptimizeRemain);
                    progress(_id, OptimizeCount);
                }
                else
                    Debug("Unable to start Optimizer engine: " + id + " with: " + value);

            }
            Debug("All optimization runs complete, computing optimum...");
            // unbind
            UnbindEvents();
            _isbusy = false;
        }
        private void GeneratePerformanceReport(int time)
        {
            _performevaluator = new PerformanceEvaluator();
            //_performevaluator.InitializePositions();
            _performevaluator.GenerateReports(_tradelist);

            System.Windows.Application.Current.Dispatcher.Invoke(() =>
            {
                _performevaluator.FillGrid(_resultstable);
                TabControlSelectedIndex = 3;
            });
        }