Example #1
0
 public void Observe(IGroupRuntimeMetricManager manager)
 {
     if (AfterUpdatedMetrics != null)
     {
         AfterUpdatedMetrics();
     }
 }
        public StandardEvaluationContext(
            ITradingDataProvider provider,
            EquityManager equityManager,
            ILogger logger,
            TradingSettings settings    = null,
            StreamWriter dumpDataWriter = null,
            StockBlockRelationshipManager relationshipManager = null)
        {
            if (equityManager == null || provider == null || logger == null)
            {
                throw new ArgumentNullException();
            }

            _provider      = provider;
            _equityManager = equityManager;
            _logger        = logger;
            _settings      = settings;

            _relationshipManager = relationshipManager;

            var metricManager      = new StandardRuntimeMetricManager(_provider.GetAllTradingObjects().Length);
            var groupMetricManager = new StandardGroupRuntimeMetricManager(metricManager);

            // register the group metric manager as observer of metric manager.
            metricManager.RegisterAfterUpdatedMetricsObserver(groupMetricManager);

            _metricManager      = metricManager;
            _groupMetricManager = groupMetricManager;

            _boardIndexTradingObjects = new Dictionary <string, ITradingObject>();

            var boards = new StockBoard[]
            {
                StockBoard.GrowingBoard,
                StockBoard.MainBoard,
                StockBoard.SmallMiddleBoard
            };

            foreach (var board in boards)
            {
                string         boardIndex    = StockName.GetBoardIndex(board);
                ITradingObject tradingObject = GetTradingObject(boardIndex);
                _boardIndexTradingObjects.Add(boardIndex, tradingObject);
            }

            _dumper = dumpDataWriter == null ? null : new StreamDataDumper(dumpDataWriter, 8, 3, _settings.DumpMetrics, this, _provider);
        }