feat(Core): update DTOs and shared models

This commit is contained in:
2026-08-09 21:01:38 +02:00
parent 6337e63a77
commit 5475c3ac51
58 changed files with 3418 additions and 30 deletions
@@ -0,0 +1,15 @@
using System;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record CandleDto(
[property: JsonPropertyName("timestamp")] DateTime Timestamp,
[property: JsonPropertyName("open")] decimal Open,
[property: JsonPropertyName("high")] decimal High,
[property: JsonPropertyName("low")] decimal Low,
[property: JsonPropertyName("close")] decimal Close,
[property: JsonPropertyName("volume")] long Volume,
[property: JsonPropertyName("bid")] decimal? Bid = null,
[property: JsonPropertyName("ask")] decimal? Ask = null
);
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record PatternPointDto(
[property: JsonPropertyName("time")] DateTime Time,
[property: JsonPropertyName("price")] decimal Price
);
public record BreakoutSignalDto(
[property: JsonPropertyName("time")] DateTime Time,
[property: JsonPropertyName("direction")] string Direction, // "BUY" or "SELL"
[property: JsonPropertyName("triggerPrice")] decimal TriggerPrice,
[property: JsonPropertyName("targetPrice")] decimal TargetPrice,
[property: JsonPropertyName("potentialPercent")] decimal? PotentialPercent = null
);
public record ChartPatternDto(
[property: JsonPropertyName("type")] string Type, // "AscendingTriangle", "DescendingTriangle", "SymmetricalTriangle", "DoubleBottom", "DoubleTop", "HeadAndShoulders"
[property: JsonPropertyName("description")] string? Description,
[property: JsonPropertyName("upperLine")] List<PatternPointDto> UpperLine,
[property: JsonPropertyName("lowerLine")] List<PatternPointDto> LowerLine,
[property: JsonPropertyName("apexTime")] DateTime? ApexTime,
[property: JsonPropertyName("breakoutSignal")] BreakoutSignalDto? BreakoutSignal,
[property: JsonPropertyName("confidencePercent")] decimal? ConfidencePercent = null
);
@@ -0,0 +1,21 @@
using System;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record IndicatorValuesDto(
[property: JsonPropertyName("timestamp")] DateTime Timestamp,
[property: JsonPropertyName("ema20")] decimal? Ema20,
[property: JsonPropertyName("sma50")] decimal? Sma50,
[property: JsonPropertyName("sma200")] decimal? Sma200,
[property: JsonPropertyName("rsi14")] decimal? Rsi14,
[property: JsonPropertyName("macdLine")] decimal? MacdLine,
[property: JsonPropertyName("macdSignal")] decimal? MacdSignal,
[property: JsonPropertyName("macdHistogram")] decimal? MacdHistogram,
[property: JsonPropertyName("atr14")] decimal? Atr14,
[property: JsonPropertyName("vwap")] decimal? Vwap,
[property: JsonPropertyName("supertrendUpper")] decimal? SupertrendUpper,
[property: JsonPropertyName("supertrendLower")] decimal? SupertrendLower,
[property: JsonPropertyName("supertrendDirection")] string? SupertrendDirection,
[property: JsonPropertyName("recommendedStopLoss")] decimal? RecommendedStopLoss
);
@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record LivePriceDto(
[property: JsonPropertyName("isin")]
string Isin,
[property: JsonPropertyName("currentPrice")]
decimal CurrentPrice,
[property: JsonPropertyName("dailyChangePercent")]
decimal DailyChangePercent,
[property: JsonPropertyName("bid")]
decimal? Bid,
[property: JsonPropertyName("ask")]
decimal? Ask
);
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record MarketRegimeDto(
[property: JsonPropertyName("vixValue")] decimal VixValue,
[property: JsonPropertyName("vixRegime")] string VixRegime, // "LowVolatility", "Moderate", "HighVolatility" (>25)
[property: JsonPropertyName("marketTrend")] string MarketTrend, // "Bullish", "Bearish"
[property: JsonPropertyName("dxyValue")] decimal DxyValue,
[property: JsonPropertyName("dxyState")] string DxyState, // "DollarStrengthening", "DollarWeakening"
[property: JsonPropertyName("summaryText")] string SummaryText
);
@@ -0,0 +1,12 @@
using System;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record StrategySignalDto(
[property: JsonPropertyName("type")] string Type, // "GoldenCross", "DeathCross", "RsiDivergenceBullish", "RsiDivergenceBearish", "Breakout"
[property: JsonPropertyName("timestamp")] DateTime Timestamp,
[property: JsonPropertyName("direction")] string Direction, // "BUY", "SELL", "NEUTRAL"
[property: JsonPropertyName("price")] decimal Price,
[property: JsonPropertyName("description")] string Description
);
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
public record TechnicalAnalysisDto(
[property: JsonPropertyName("isin")] string Isin,
[property: JsonPropertyName("ticker")] string Ticker,
[property: JsonPropertyName("companyName")] string CompanyName,
[property: JsonPropertyName("lastUpdated")] DateTime LastUpdated,
[property: JsonPropertyName("candles")] List<CandleDto> Candles,
[property: JsonPropertyName("indicators")] List<IndicatorValuesDto> Indicators,
[property: JsonPropertyName("patterns")] List<ChartPatternDto> Patterns,
[property: JsonPropertyName("signals")] List<StrategySignalDto> Signals,
[property: JsonPropertyName("marketRegime")] MarketRegimeDto MarketRegime,
[property: JsonPropertyName("currency")] string Currency = "EUR"
);