Files
trade/engine/example/test_db.py
T
Rekey 1c9339a4db feat(engine): 新增 Python 策略引擎模块
- 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:引擎架构文档
2026-06-08 18:19:50 +08:00

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())