Ejemplo n.º 1
0
        public SessionModel(HubConfigurationModel hubConfig, BrokerConfigurationModel brokerConfig,
                            ResponseConfigurationModel responseConfig, ReportConfigurationModel reportConfig)
        {
            _hub          = DarkLightFactory.GetHub(hubConfig);
            _broker       = DarkLightFactory.GetBroker(_hub, brokerConfig);
            _responseList = DarkLightFactory.GetResponseList(_hub, responseConfig);
            _reporter     = DarkLightFactory.GetReporter(_hub, reportConfig);
            //_riskMgr = DarkLightFactory.GetRiskManager(_hub, reportConfig);
            //_portfolioMgr = DarkLightFactory.GetPortfolioManager(_hub, reportConfig);

            //_hub.EventDict[EventType.ReportMessage]
        }
Ejemplo n.º 2
0
        public static List <IDarkLightResponse> GetResponseList(IHub hub, ResponseConfigurationModel config)
        {
            var dlResponseList = new List <IDarkLightResponse>();

            foreach (var response in config.ResponseList)
            {
                IDarkLightResponse dlResponse = new DarkLightResponse(hub, config);
                dlResponseList.Add(dlResponse);
            }

            return(dlResponseList);
        }
Ejemplo n.º 3
0
        public DarkLightResponse(IHub hub, ResponseConfigurationModel config)
            : base(hub, config)
        {
            _type = ActorType.Response;

            //Plug into Tradelink
            _response = config.ResponseList[0];
            _response.SendBasketEvent     += PublishBasket;
            _response.SendCancelEvent     += PublishCancelOrder;
            _response.SendChartLabelEvent += PublishChartLabel;
            _response.SendIndicatorsEvent += PublishIndicators;
            _response.SendDebugEvent      += PublishMessage;
            _response.SendOrderEvent      += PublishOrder;
        }
        private void RunBacktestButton_Click2(object sender, System.Windows.RoutedEventArgs e)
        {
            UnbindInitializationModels();
            UnbindReportModels();

            _backtest2.Clear();
            _activityModel.Status = "Backtest started.";
            var tickDataGroups = BacktestingTickFileControl.GetSelectedFilePaths();

            _activityModel.NumberTestsToRun     = tickDataGroups.Count;
            _activityModel.NumberTestsCompleted = 0;

            Task.Factory.StartNew(() =>
            {
                _activityModel.AllRunsCompleted.WaitOne();
                if (_backtest2.BacktestReports.Any())
                {
                    _backtest2.SelectedReport = _backtest2.BacktestReports.First();
                    BindStatisticsModels2("Results");
                }
            });

            foreach (var _tickDataGroup in tickDataGroups)
            {
                var hubConfig = new HubConfigurationModel(HubType.Local);

                var brokerConfig = new BrokerConfigurationModel(BrokerType.Sim);
                brokerConfig.PlayToValue       = _backtestingConfigurationModel.SelectedPlayToValue;
                brokerConfig.SimUseBidAskFills = false;
                brokerConfig.TickFiles         = _tickDataGroup;
                brokerConfig.SubscriptionList  = new List <byte[]> {
                    EventType.Basket, EventType.CancelOrder, EventType.Order
                };

                var responseConfig = new ResponseConfigurationModel();
                responseConfig.ResponseList.Add(_backtestingConfigurationModel.GetFreshResponseInstance());
                responseConfig.SubscriptionList = new List <byte[]> {
                    EventType.CancelOrderAck, EventType.Fill, EventType.Message, EventType.OrderAck, EventType.Tick
                };

                var reportConfig = new ReportConfigurationModel();
                reportConfig.Type             = ReportType.Batch;
                reportConfig.ActivityInstance = _activityModel;
                var info = TickFileNameInfo.GetTickFileInfoFromLongName(_tickDataGroup.First());
                reportConfig.ReportName       = "Y:" + info.Year.ToString() + ",M:" + info.Month.ToString() + ",D:" + info.Day.ToString();
                reportConfig.SubscriptionList = new List <byte[]> {
                    EventType.ChartLabel, EventType.Fill, EventType.Indicator, EventType.Message, EventType.Order, EventType.ServiceTransition, EventType.Tick
                };
                reportConfig.FilterMode = true;

                var sessionModel = new SessionModel(hubConfig, brokerConfig, responseConfig, reportConfig);

                _backtest2.AddRun(sessionModel);

                sessionModel.Reporter.RegisterDispatcher(EventType.Fill, FillsTab.Dispatcher);
                sessionModel.Reporter.RegisterDispatcher(EventType.Indicator, IndicatorTab.Dispatcher);
                sessionModel.Reporter.RegisterDispatcher(EventType.Message, MessagesTab.Dispatcher);
                sessionModel.Reporter.RegisterDispatcher(EventType.Order, OrdersTab.Dispatcher);
                sessionModel.Reporter.RegisterDispatcher(EventType.Plot, BacktestPlotter.Dispatcher);
                sessionModel.Reporter.RegisterDispatcher(EventType.Position, PositionTab.Dispatcher);
            }

            BindInitializationModels2();
            _backtest2.Start(0);
        }