Esempio n. 1
0
        private string BuildDescription(IRampingRuleBreach breach)
        {
            var description =
                $"Ramping rule breach detected for {breach.Security.Name}. {this.RampingStrategySummary(breach.SummaryPanel.OneDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.FiveDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.FifteenDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.ThirtyDayAnalysis)}";

            return(description);
        }
Esempio n. 2
0
        public async Task Send(IRampingRuleBreach breach)
        {
            if (breach == null)
            {
                this.Logger?.LogInformation("Send received a null rule breach for op ctx. Returning.");
                return;
            }

            var description = this.BuildDescription(breach);

            await this.Send(breach, description);
        }
        public void Send(IRampingRuleBreach breach)
        {
            if (breach == null)
            {
                // ReSharper disable once InconsistentlySynchronizedField
                this._logger.LogInformation("received a null rule breach. Returning.");
                return;
            }

            lock (this._lock)
            {
                this._logger.LogInformation($"received rule breach for {breach.Security.Identifiers}");

                var duplicates = this._messages.Where(_ => _.Trades.PositionIsSubsetOf(breach.Trades)).ToList();
                this._messages = this._messages.Except(duplicates).ToList();
                this._messages.Add(breach);
            }
        }