Response.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. namespace Application.Features.Api.Stocks.GetMarketMovers;
  2. public sealed class Response
  3. {
  4. /// <summary>기준 거래일 (yyyy-MM-dd) — 데이터 없으면 빈 문자열</summary>
  5. public required string TradeDate { get; init; }
  6. /// <summary>상승 (등락률 &gt; 0, 상한 제외) 상위</summary>
  7. public required Group Advances { get; init; }
  8. /// <summary>하락 (등락률 &lt; 0, 하한 제외) 상위</summary>
  9. public required Group Declines { get; init; }
  10. /// <summary>상한 (등락률 ≥ +29.5% 근사) 상위</summary>
  11. public required Group LimitUp { get; init; }
  12. /// <summary>하한 (등락률 ≤ -29.5% 근사) 상위</summary>
  13. public required Group LimitDown { get; init; }
  14. public sealed class Group
  15. {
  16. /// <summary>그룹 전체 종목 수 — 상승/하락은 상한·하한을 포함한 전체 방향 카운트, 상한/하한은 해당 카운트</summary>
  17. public required int Total { get; init; }
  18. public required IReadOnlyList<Item> Items { get; init; }
  19. }
  20. public sealed class Item
  21. {
  22. public required string Code { get; init; }
  23. public required string Name { get; init; }
  24. /// <summary>시장 (1 KOSPI / 2 KOSDAQ / 3 KONEX)</summary>
  25. public required int Market { get; init; }
  26. public required int Close { get; init; }
  27. /// <summary>전일 대비 (원)</summary>
  28. public required int ChangeVal { get; init; }
  29. /// <summary>등락률 basis point (%×100)</summary>
  30. public required int FlucRateBp { get; init; }
  31. /// <summary>최근 종가 스파크라인 (과거→최신). 데이터 없으면 빈 배열.</summary>
  32. public required IReadOnlyList<int> Spark { get; init; }
  33. }
  34. }