b540b7611c
- 删除 AGENTS/ 目录下 8 个拆分 .md 文件,统一为根目录 AGENTS.md - 删除 .reasonix.toml,配置合并到 reasonix.toml - reasonix.toml 精简为仅保留实际生效的 3 项配置 - KlineInterval 类型导出源从 kline.entity 改到 ../../types
3.7 KiB
3.7 KiB
trade — 数字货币量化交易系统
Python + TypeScript (Bun) 混合架构:数据层 TS 采集行情入库,业务层 Python 跑策略/回测/风控。
项目
data/:TypeScript (Bun),行情采集、K 线合成、数据写入 TimescaleDB。workdir 必须是data/。engine/:Python 3.10+,策略引擎、回测、信号分发。workdir 必须是engine/,导入用from common import ...。- 两模块通过 Redis Pub/Sub 通信(设计阶段,尚未实现)。
- 数据库:TimescaleDB(Docker Compose 启动,端口 5432)。配置在根
env.yaml。
命令
# 基础设施
docker compose up -d # 启动 TimescaleDB + Adminer(:8080)
# data/ (TS) — 必须先 cd data
cd data && bun install # 安装依赖
bun run data/run/exchange.ts --concurrency 2 # 拉取历史 K 线
bun run data/run/build_aggregates_sql.ts # 连续聚合刷新 (dry-run)
bun run data/run/build_aggregates_sql.ts --execute # 实际执行聚合刷新
bun run lint # eslint
bun run format # prettier
bun run build # tsc 类型检查
架构
data/ engine/
exchanges/rest.ts Binance common/base.py 策略基类
types/base.ts 类型定义 common/models.py Pydantic 数据模型
types/kline.ts K线类型 common/logger.py 日志
entities/ TypeORM backtest/ 回测引擎
run/exchange.ts 拉取入口 indicators/ 技术指标
run/build_aggregates_sql.ts example/ 策略示例+回测脚本
- K 线复合主键:
[exchange, symbol, interval, time],TimescaleDB 超表按time分区。 synchronize: false:TypeORM 不自动 sync schema,改实体需手动迁移。@timescaledb/typeorm是 v0.0.1 实验版,连续聚合用原生 SQL 视图(klines_5m/klines_15m等)。- TS 侧价格字段为
string(精度),Python 侧 Pydanticfield_validator转 float。 KLINE_INTERVAL_MS定义在data/exchanges/rest.ts和data/types/kline.ts两处,新增周期需同步。
约定
- 中文优先:所有回答和推理用中文;代码、标识符、文件名、技术术语保持原文。
- 运行时是 Bun,不是 Node.js:TS 执行用
bun run <file>,禁止node/npm/npx。 - workdir 严格分离:TS 命令在
data/,Python 命令在engine/。package.json在data/中。 - 先确认再动手:涉及多文件或架构决策时先出方案等用户点头。不做未要求的改动。
- 一次改一处:逐步 edit_file,不批量 multi_edit。改完让用户看到再继续。
- 拒绝时先问原因:操作被 declined 不要立即换方式重试。
- 配置单一源:
env.yaml是 TS 和 Python 共享的唯一配置,含 API Key,禁止硬编码密钥。 - Python 虚拟环境:
engine/.venv/,未安装依赖(pydantic 等)需先pip install。
现状
- ✅ TS 数据模块:配置加载、TypeORM 实体、Binance REST K 线拉取+UPSERT、连续聚合刷新。
- ❌ 未实现:WebSocket 行情、K 线合成管道、Redis 发布、策略管理器、信号总线、回测引擎、参数优化器、风控、交易执行、API 网关。
- ❌ 无测试、无 CI。
data/run/main.ts不存在,dev/start脚本指向未创建文件。
注意事项
env.yaml含明文密钥且被 git 追踪,不可提交到公开仓库。- 数据库当前指向远程
10.0.0.7,本地开发改env.yaml中 host 为localhost。 db/pgsql/是 Docker volume 数据目录,已在.gitignore。