crypto.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. // SignalR Ticker 데이터
  2. export interface TickerData {
  3. market: string;
  4. symbol: string;
  5. openingPrice: number;
  6. highPrice: number;
  7. lowPrice: number;
  8. tradePrice: number;
  9. prevClosingPrice: number;
  10. change: string;
  11. changePrice: number;
  12. signedChangePrice: number;
  13. changeRate: number;
  14. signedChangeRate: number;
  15. tradeVolume: number;
  16. accTradeVolume: number;
  17. accTradeVolume24h: number;
  18. accTradePrice: number;
  19. accTradePrice24h: number;
  20. tradeDate: string;
  21. tradeTime: string;
  22. tradeTimestamp: number;
  23. askBid: string;
  24. accAskVolume: number;
  25. accBidVolume: number;
  26. highest52WeekPrice: number;
  27. highest52WeekDate: string;
  28. lowest52WeekPrice: number;
  29. lowest52WeekDate: string;
  30. marketState: string;
  31. delistingDate: string | null;
  32. marketWarning: string;
  33. timestamp: number;
  34. streamType: string;
  35. }
  36. // 코인 메타 정보 (korName, engName, logoImage — REST에서만 제공)
  37. export interface TickerMeta {
  38. korName: string;
  39. engName: string;
  40. logoImage: string | null;
  41. }
  42. // REST 시세 응답 (GET /api/crypto/tickers) — 배열로 반환
  43. export interface TickerRestData {
  44. market: string;
  45. symbol: string;
  46. korName: string;
  47. engName: string;
  48. logoImage: string | null;
  49. openingPrice: number;
  50. highPrice: number;
  51. lowPrice: number;
  52. tradePrice: number;
  53. prevClosingPrice: number;
  54. change: string;
  55. changePrice: number;
  56. signedChangePrice: number;
  57. changeRate: number;
  58. signedChangeRate: number;
  59. tradeVolume: number;
  60. accTradeVolume: number;
  61. accTradeVolume24h: number;
  62. accTradePrice: number;
  63. accTradePrice24h: number;
  64. isFeatured: boolean;
  65. displayOrder: number;
  66. }
  67. // SignalR Trade 데이터
  68. export interface TradeData {
  69. market: string;
  70. symbol: string;
  71. tradePrice: number;
  72. tradeVolume: number;
  73. askBid: string;
  74. prevClosingPrice: number;
  75. change: string;
  76. changePrice: number;
  77. tradeDate: string;
  78. tradeTime: string;
  79. tradeTimestamp: number;
  80. sequentialId: number;
  81. timestamp: number;
  82. streamType: string;
  83. bestAskPrice: number;
  84. bestAskSize: number;
  85. bestBidPrice: number;
  86. bestBidSize: number;
  87. }
  88. // REST 체결 응답 항목 (GET /api/crypto/{market}/trades)
  89. export interface TradeRestData {
  90. timestamp: number;
  91. tradePrice: number;
  92. tradeVolume: number;
  93. prevClosingPrice: number;
  94. changePrice: number;
  95. askBid: string;
  96. sequentialId: number;
  97. }
  98. // SignalR Orderbook 데이터
  99. export interface OrderbookData {
  100. market: string;
  101. symbol: string;
  102. totalAskSize: number;
  103. totalBidSize: number;
  104. units: OrderbookUnitData[];
  105. timestamp: number;
  106. level: number;
  107. streamType: string;
  108. }
  109. export interface OrderbookUnitData {
  110. askPrice: number;
  111. bidPrice: number;
  112. askSize: number;
  113. bidSize: number;
  114. }
  115. // REST 호가 응답 (GET /api/crypto/{market}/orderbook)
  116. export interface OrderbookRestData {
  117. totalAskSize: number;
  118. totalBidSize: number;
  119. units: OrderbookUnitData[];
  120. timestamp: number;
  121. level: number;
  122. }
  123. // SignalR Candle 데이터
  124. export interface CandleData {
  125. market: string;
  126. symbol: string;
  127. candleDateTimeUtc: string;
  128. candleDateTimeKst: string;
  129. openingPrice: number;
  130. highPrice: number;
  131. lowPrice: number;
  132. tradePrice: number;
  133. candleAccTradeVolume: number;
  134. candleAccTradePrice: number;
  135. timestamp: number;
  136. streamType: string;
  137. }
  138. // REST 캔들 응답 항목 (GET /api/crypto/{market}/candles/*)
  139. export interface CandleRestData {
  140. candleDateTimeUtc: string;
  141. candleDateTimeKst: string;
  142. openingPrice: number;
  143. highPrice: number;
  144. lowPrice: number;
  145. tradePrice: number;
  146. timestamp: number;
  147. candleAccTradePrice: number;
  148. candleAccTradeVolume: number;
  149. unit?: number;
  150. }
  151. // REST 마켓 목록 응답 (GET /api/crypto/markets)
  152. export interface MarketInfo {
  153. market: string;
  154. koreanName: string;
  155. englishName: string;
  156. marketEvent: MarketEvent | null;
  157. }
  158. export interface MarketEvent {
  159. warning: boolean;
  160. caution: MarketCaution | null;
  161. }
  162. export interface MarketCaution {
  163. priceFluctuations: boolean;
  164. tradingVolumeSoaring: boolean;
  165. depositAmountSoaring: boolean;
  166. globalPriceDifferences: boolean;
  167. concentrationOfSmallAccounts: boolean;
  168. }
  169. // lightweight-charts 호환 캔들 바
  170. export interface CandleBar {
  171. time: number;
  172. open: number;
  173. high: number;
  174. low: number;
  175. close: number;
  176. }
  177. // lightweight-charts 호환 볼륨 바
  178. export interface VolumeBar {
  179. time: number;
  180. value: number;
  181. color: string;
  182. }
  183. // lightweight-charts 호환 MA 라인 데이터
  184. export interface MAData {
  185. time: number;
  186. value: number;
  187. }