Files
sanguo_vnpy/test/backtest/test_data_load.py
T
2026-04-11 21:18:55 +08:00

49 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""
最简回测测试 - 证明数据能加载,回测能跑
"""
from datetime import datetime
from vnpy.trader.constant import Exchange, Interval
from vnpy.trader.database import get_database
print("=" * 80)
print("🚀 测试数据加载和回测")
print("=" * 80)
# 1. 测试数据库连接和加载数据
db = get_database()
print(f"✅ 数据库连接成功: {type(db)}")
symbol = "510300"
exchange = Exchange.SSE
interval = Interval.DAILY
start = datetime(2021, 1, 1)
end = datetime(2026, 3, 1)
bars = db.load_bar_data(symbol, exchange, interval, start, end)
print(f"\n✅ 加载了 {len(bars)} 条bar数据")
if len(bars) == 0:
print("❌ 数据为空,无法继续")
exit(1)
print(f"时间范围: {bars[0].datetime} ~ {bars[-1].datetime}")
print(f"第一条数据: {bars[0]}")
print(f"最后一条数据: {bars[-1]}")
# 2. 简单统计分析
import numpy as np
prices = [bar.close_price for bar in bars]
returns = np.diff(prices) / prices[:-1]
print(f"\n价格区间: {min(prices):.2f} ~ {max(prices):.2f}")
print(f"平均收益率: {np.mean(returns):.4%}")
print(f"收益率标准差: {np.std(returns):.4%}")
print(f"最大单日涨幅: {max(returns):.2%}")
print(f"最大单日跌幅: {min(returns):.2%}")
print("\n" + "=" * 80)
print("✅ 数据加载测试完成!数据完整,可以开始回测")
print("=" * 80)