void UnbindBacktestEngine(ref BacktestEngine _engine)
        {
            try
            {
                _engine.SendEngineDebugEvent -= _backtestengine_SendEngineDebugEvent;
                _engine.SendEngineStatusEvent -= _backtestengine_SendEngineStatusEvent;
                _engine.GotFillEvent -= _backtestengine_GotFillEvent;
                _engine.GotIndicatorEvent -= _backtestengine_GotIndicatorEvent;
                _engine.GotOrderEvent -= _backtestengine_GotOrderEvent;
                _engine.GotTickEvent -= _backtestengine_GotTickEvent;

                _engine.SendPlayCompleteEvent -= _backtestengine_SendPlayCompleteEvent;
                _engine.SendPlayProgressEvent -= _backtestengine_SendPlayProgressEvent;
            }
            catch { }
        }
 void CreateNewEngine(string type)
 {
     // CheckPrerequisite() is alrready done at playto
     switch (type)
     {
         case "Backtest":
             {
                 // Init inidcator datatable
                 InitIndicatorTable();
                 _backtestengine = new BacktestEngine(_strategy, _tickfiles);
                 BindBacktestEngine(ref _backtestengine);
                 break;
             }
         case "Optimize":
             {
                 Reset(false);
                 _optimengine = new OptimizeEngine(_strategy, _tickfiles);
                 break;
             }
         default:
             return;
     }
 }