def applyRiskRules()

in src/backend/domain/services/steps/risk_limit.py [0:0]


    def applyRiskRules(self, trading_stats_by_symbol, strategy_stats, checkDateTime, date_to_index, callback=None):
        for symbol, stats in trading_stats_by_symbol.items():
            if symbol in self.symbolDetails and self.symbolDetails[symbol].TradingSuspended:
                continue
            for rule in self.riskRules:
                if rule.scope == Scope.Symbol and not rule.triggered:
                    action = rule.checkRule(stats["acct_ccy_pnl"], checkDateTime, date_to_index)
                    if action:
                        self.applyAction(symbol, rule, action.value)
                        period_end_time = self.calculatePeriodEndTime(rule, checkDateTime)
                        self.triggeredRules.append(TriggeredRule(checkDateTime, period_end_time, symbol, rule))
                        if callback:
                            callback(symbol, rule)

        if not self.TradingSuspended:
            for rule in self.riskRules:
                if rule.scope == Scope.Strategy and not rule.triggered:
                    action = rule.checkRule(strategy_stats["acct_ccy_pnl"], checkDateTime, date_to_index)
                    if action:
                        self.applyAction(None, rule, action.value)
                        period_end_time = self.calculatePeriodEndTime(rule, checkDateTime)
                        self.triggeredRules.append(TriggeredRule(checkDateTime, period_end_time, None, rule))
                        if callback:
                            callback(None, rule)

        self.cleanTriggeredRules(checkDateTime)