1. Position实体增加TotalCost字段 - 精确追踪卖出后的剩余成本 - 避免用Shares*AvgPrice计算成本的精度问题 2. PortfolioService逻辑更新 - 买入时更新TotalCost - 卖出时按比例减少TotalCost - 所有成本计算改用TotalCost字段 3. 增加关键计算步骤日志 - 创建/更新持仓时记录成本变化 - 持仓计算时记录关键数值 4. 新增金融计算单元测试 - 卖出成本计算测试 - 汇率变化影响测试 - 夏普比率计算测试 - 最大回撤计算测试 - 边界情况测试 5. 提供数据库迁移SQL脚本 |
||
|---|---|---|
| .. | ||
| Repositories | ||
| AssetManager.Data.csproj | ||
| DatabaseExtensions.cs | ||
| DatabaseService.cs | ||
| MarketKlineCache.cs | ||
| MarketPriceCache.cs | ||
| Portfolio.cs | ||
| PortfolioNavHistory.cs | ||
| Position.cs | ||
| README.md | ||
| SqlSugarConfig.cs | ||
| Strategy.cs | ||
| TiingoTicker.cs | ||
| Transaction.cs | ||
| User.cs | ||
AssetManager 数据库使用说明
数据库配置
数据库连接字符串在 SqlSugarConfig.cs 中配置:
ConnectionString = "server=localhost;Database=assetmanager;Uid=root;Pwd=your_password;CharSet=utf8mb4;"
请根据实际情况修改:
server: MySQL服务器地址Database: 数据库名称Uid: 用户名Pwd: 密码
数据库实体类
用户相关
User: 用户基本信息WechatUser: 微信用户信息
资产相关
Asset: 总资产数据Holding: 持仓组合数据
策略相关
Strategy: 策略模板StrategyTag: 策略标签StrategyParameter: 策略参数UserStrategy: 用户自定义策略
投资组合相关
Portfolio: 投资组合Position: 持仓明细Transaction: 交易记录
使用方法
1. 自动初始化(推荐)
在 Program.cs 中已经配置了自动初始化:
builder.Services.AddDatabase();
应用启动时会自动创建所有数据库表。
2. 手动初始化
运行 InitDatabase.cs 中的 Main 方法:
InitDatabase.Main();
这会创建所有表并插入示例数据。
3. 在Service中使用
在Service中注入 DatabaseService 或 ISqlSugarClient:
public class AssetService : IAssetService
{
private readonly ISqlSugarClient _db;
public AssetService(ISqlSugarClient db)
{
_db = db;
}
public List<Holding> GetHoldings()
{
return _db.Queryable<Holding>().ToList();
}
}
Code First 模式
使用 SqlSugar 的 Code First 模式,通过实体类自动创建数据库表:
- 实体类使用
[SugarTable]特性指定表名 - 属性使用
[SugarColumn]特性配置列 - 主键使用
IsPrimaryKey = true - 自增主键使用
IsIdentity = true - 列名映射使用
ColumnName
数据库表结构
users 表
- 用户基本信息、统计数据、会员等级等
wechat_users 表
- 微信用户绑定信息、OpenID、UnionID等
assets 表
- 总资产数据、今日收益、总收益率等
holdings 表
- 持仓组合数据、状态、图标样式等
strategies 表
- 策略模板、风险等级、描述等
strategy_tags 表
- 策略标签关联
strategy_parameters 表
- 策略参数配置
user_strategies 表
- 用户自定义策略配置
portfolios 表
- 投资组合基本信息
positions 表
- 持仓明细、盈亏计算等
transactions 表
- 交易记录、状态跟踪等