1c9339a4db
- config/settings.py:Pydantic 解析 env.yaml - data/db.py:asyncpg 连接池管理 - data/reader.py:KlineReader 只读查询 TimescaleDB - data/models.py:KlineRecord 等 Pydantic 模型,镜像 TypeORM 实体 - example/test_db.py:数据库查询验证示例 - README.md:引擎架构文档
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
"""
|
|
数据库模块测试示例。
|
|
|
|
运行方式(在项目根目录 trade/ 下):
|
|
python -m engine.example.test_db
|
|
|
|
前提条件:
|
|
docker compose up -d
|
|
data 模块已同步过 K 线数据到 TimescaleDB
|
|
"""
|
|
|
|
import asyncio
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
from engine.config import print_config_summary
|
|
from engine.data import KlineRecord, KlineReader, close_pool
|
|
|
|
async def main():
|
|
print("=" * 60)
|
|
print(" Trade Engine — 数据库模块测试")
|
|
print("=" * 60)
|
|
|
|
print_config_summary()
|
|
|
|
reader = KlineReader()
|
|
|
|
# 获取最近 100 根 BTCUSDT 5m K 线
|
|
klines = await reader.get_klines_by_count(
|
|
symbol="BTCUSDT",
|
|
interval="1m",
|
|
count=5,
|
|
)
|
|
print(f"\n查询到 {len(klines)} 根 K 线:")
|
|
for k in klines[:5]:
|
|
print(f" {k.time.isoformat()} | O={k.open:.2f} H={k.high:.2f} "
|
|
f"L={k.low:.2f} C={k.close:.2f} V={k.volume:.4f}")
|
|
if len(klines) > 5:
|
|
print(f" ... 剩余 {len(klines) - 5} 根")
|
|
|
|
await close_pool()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|