e91cad79e6
- 新增 data/db/ 数据库访问层:pool 管理、类型定义、Zod 校验、参数化 SQL 查询 - 新增 data/db/config-crud.ts:MonitoredSymbolsRepo / ExchangeConfigRepo / AppConfigRepo 三个 CRUD 服务类 - 新增 data/config.ts:中心化配置模块,零依赖 .env 解析 + Zod 校验 - 新增 data/schema/:klines.sql + config.sql 参考 DDL - 新增 data/exchanges/:交易所类型定义与 Binance WebSocket 封装 - 新增 data/run/:交易所连接启动入口 - 重构 data/init-db/:001_init.sql 仅保留 TimescaleDB + klines,配置表拆分至 002_config.sql - 更新 docker-compose.yml:挂载 init-db 初始化脚本
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
// ============================================================
|
|
// exchanges/types.ts — WebSocket 事件数据类型
|
|
// ============================================================
|
|
|
|
/** 由 WebSocket 推送的单根 K 线数据 */
|
|
export interface KlineWsData {
|
|
/** 交易所标识 */
|
|
exchange: string;
|
|
/** 交易对,如 BTCUSDT */
|
|
symbol: string;
|
|
/** K 线周期,如 1m / 1h / 1d */
|
|
interval: string;
|
|
/** K 线开盘时间(Unix 毫秒时间戳) */
|
|
time: number;
|
|
/** 开盘价 */
|
|
open: number;
|
|
/** 最高价 */
|
|
high: number;
|
|
/** 最低价 */
|
|
low: number;
|
|
/** 收盘价 */
|
|
close: number;
|
|
/** 成交量(基准币种) */
|
|
volume: number;
|
|
}
|
|
|
|
/** ExchangeWs 构造参数 */
|
|
export interface ExchangeWsConfig {
|
|
/** 交易所 ID,ccxt 支持的所有交易所标识 */
|
|
exchangeId: string;
|
|
/** 要订阅的交易对列表,如 ['BTCUSDT', 'ETHUSDT'] */
|
|
symbols: string[];
|
|
/** K 线周期,默认 '1m' */
|
|
interval?: string;
|
|
/** 传递给 ccxt.pro 交易所实例的额外选项(如 agent、apiKey 等) */
|
|
ccxtOptions?: Record<string, unknown>;
|
|
}
|
|
|
|
/** ExchangeWs 连接状态 */
|
|
export type WsConnectionState =
|
|
| "idle" // 尚未启动
|
|
| "connecting" // 正在连接 WebSocket
|
|
| "connected" // 已连接,正在接收数据
|
|
| "disconnected" // 已断开
|
|
| "error"; // 错误状态
|