Example #1
0
        public void ExecuteNextDay()
        {
            // Increment the date
            CurrentSimulationDate = Calendar.NextTradingDay(CurrentSimulationDate);

            //
            // Market Open
            //

            // Process morning trades
            TradeManager.ProcessTradeQueue(CurrentSimulationDate, TimeOfDay.MarketOpen);

            //
            // Market Close
            //

            // Process end of day trades & stops
            TradeManager.ProcessTradeQueue(CurrentSimulationDate, TimeOfDay.MarketEndOfDay);

            // Update stoplosses
            RiskManager.UpdateStoplosses(CurrentSimulationDate);

            // Scale open positions
            //RiskManager.ScalePositions(CurrentSimulationDate);

            // Generate new signals
            var securityUniverse = RiskManager.GetSecurityUniverse();
            var signals          = StrategyManager.GenerateSignals(securityUniverse, CurrentSimulationDate);

            // Send signals for processing
            RiskManager.ProcessSignals(signals, CurrentSimulationDate);

            // End of Day (EOD)
        }