using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace FinlyticCore.Dtos.TechnicalAnalysis; /// /// Fully evaluated technical trading setup output from an ITechnicalStrategy. /// /// /// Which FinlyticTechnicals universe-selection mechanism this ISIN was being monitored under at analysis time /// (favorite/discovery/sentiment-spike), or if it was analyzed ad hoc (e.g. a manual /// "Analyze now" call for an ISIN not currently in the scan universe). Carried through unchanged onto /// EngineEvaluationSnapshotEntity so the admin "why no proposals" Web UI can show not just an /// evaluation's scores but why the asset was being watched in the first place. /// /// When the ISIN above entered that scan universe, alongside . /// /// The overall market/asset technical regime () at analysis time - e.g. /// whether this setup fired during a strong trend or a choppy/rangebound market. Forwarded onto the AI /// validation payload (AiReasoningGateService) so the model has the same regime context a human trader /// would use to judge whether a breakout is likely to follow through. /// public record StrategyResultDto( [property: JsonPropertyName("setupId")] Guid SetupId, [property: JsonPropertyName("isin")] string Isin, [property: JsonPropertyName("symbol")] string Symbol, [property: JsonPropertyName("timeframe")] string Timeframe, [property: JsonPropertyName("strategyKey")] string StrategyKey, [property: JsonPropertyName("strategyName")] string StrategyName, [property: JsonPropertyName("direction")] SignalDirection Direction, [property: JsonPropertyName("qualityScore")] decimal QualityScore, [property: JsonPropertyName("currentPrice")] decimal CurrentPrice, [property: JsonPropertyName("entryPrice")] decimal EntryPrice, [property: JsonPropertyName("invalidationPrice")] decimal InvalidationPrice, [property: JsonPropertyName("currentAtr")] decimal CurrentAtr, [property: JsonPropertyName("estimatedRiskRewardRatio")] decimal EstimatedRiskRewardRatio, [property: JsonPropertyName("exitPlan")] ExitPlan ExitPlan, [property: JsonPropertyName("technicalRationale")] string TechnicalRationale, [property: JsonPropertyName("triggeringPatterns")] List TriggeringPatterns, [property: JsonPropertyName("indicatorSnapshot")] Dictionary IndicatorSnapshot, [property: JsonPropertyName("createdAt")] DateTime CreatedAt, [property: JsonPropertyName("expiresAt")] DateTime ExpiresAt, [property: JsonPropertyName("isTopPick")] bool IsTopPick = false, [property: JsonPropertyName("rating")] string Rating = "B", [property: JsonPropertyName("universeSource")] UniverseSource? UniverseSource = null, [property: JsonPropertyName("universeEnteredAtUtc")] DateTime? UniverseEnteredAtUtc = null, [property: JsonPropertyName("regime")] MarketRegime? Regime = null );