AssetManager.API/README.md
niannian zheng 2d1fbd37d8 feat: 添加策略引擎实现及相关组件
实现策略引擎核心功能,包括三种策略计算器和相关DTO定义:
1. 添加双均线策略(ma_trend)计算器
2. 添加吊灯止损策略(chandelier_exit)计算器
3. 添加风险平价策略(risk_parity)计算器
4. 定义策略类型常量类和策略配置DTO
5. 实现策略引擎服务接口和扩展方法
6. 更新项目引用和README文档
2026-03-02 14:15:34 +08:00

4.0 KiB
Raw Blame History

AssetManager Backend (个人资产策略管理系统)

基于 .NET 8 + MySQL + SqlSugar 构建的高性能资产管理系统后端。采用 Database First (数据库优先) 模式开发,专注于量化策略管理与资产分析。

🛠 技术栈 (Tech Stack)

模块 技术选型 说明
核心框架 .NET 8 Web API 最新长期支持版,高性能
数据库 MySQL 8.0+ 稳定、开源的关系型数据库
ORM SqlSugar 哪怕是 .NET 老手也爱用的国产轻量级 ORM
架构模式 Repository Pattern 仓储模式,解耦业务与数据访问
接口文档 Swagger / Knife4j 在线接口调试

📂 项目结构 (Project Structure)

AssetManager
├── src
│   ├── AssetManager.API            # [入口层] Controllers, DTOs, 全局Filter, IOC配置
│   ├── AssetManager.Services       # [业务层] 核心逻辑 (计算盈亏, 策略信号, 校验)
│   ├── AssetManager.Repository     # [数据层] SqlSugar 仓储实现, UnitOfWork
│   ├── AssetManager.Models         # [实体层] POCO实体 (由数据库自动生成)
│   └── AssetManager.Infrastructure # [基础层] 常用工具类, 外部API调用
└── AssetManager.sln

📊 策略引擎 (Strategy Engine)

功能介绍

策略引擎是系统的核心组件,负责根据配置的策略参数计算交易信号。支持以下三种策略类型:

  1. 双均线策略 (ma_trend) - 经典的趋势跟踪策略,通过短期均线和长期均线的交叉产生买卖信号
  2. 吊灯止损策略 (chandelier_exit) - 趋势跟踪止损策略,通过计算最高价/最低价和 ATR平均真实波幅来设置止损止盈位
  3. 风险平价策略 (risk_parity) - 资产配置策略,通过调整各资产权重使每个资产对组合的风险贡献相等

策略配置示例

1. 双均线策略 (ma_trend)

{
  "maType": "SMA",           // 均线类型SMA(简单移动平均) / EMA(指数移动平均)
  "shortPeriod": 20,         // 短期均线周期
  "longPeriod": 60           // 长期均线周期
}

2. 吊灯止损策略 (chandelier_exit)

{
  "period": 22,              // 周期(通常为 22
  "multiplier": 3.0,         // ATR 倍数(通常为 3.0
  "useClose": false           // 是否使用收盘价计算false 表示用最高价/最低价)
}

3. 风险平价策略 (risk_parity)

{
  "lookbackPeriod": 60,       // 历史数据回看周期
  "rebalanceThreshold": 0.05,  // 再平衡阈值(偏离度超过 5% 触发再平衡)
  "assets": [                  // 目标资产列表(可选,不指定则使用当前持仓)
    { "symbol": "AAPL", "targetWeight": 0.6 },
    { "symbol": "BTC/USD", "targetWeight": 0.4 }
  ]
}

📡 API 示例

创建策略 API

请求 URL: POST /api/v1/strategies

请求体示例:

1. 创建双均线策略

{
  "name": "双均线策略",
  "type": "ma_trend",
  "description": "经典趋势跟踪策略",
  "riskLevel": "medium",
  "tags": ["趋势", "均线"],
  "parameters": {
    "maType": "SMA",
    "shortPeriod": 20,
    "longPeriod": 60
  }
}

2. 创建风险平价策略

{
  "name": "风险平价策略",
  "type": "risk_parity",
  "description": "资产配置策略",
  "riskLevel": "low",
  "tags": ["资产配置", "风险控制"],
  "parameters": {
    "lookbackPeriod": 60,
    "rebalanceThreshold": 0.05,
    "assets": [
      { "symbol": "AAPL", "targetWeight": 0.6 },
      { "symbol": "BTC/USD", "targetWeight": 0.4 }
    ]
  }
}

3. 创建吊灯止损策略

{
  "name": "吊灯止损策略",
  "type": "chandelier_exit",
  "description": "趋势跟踪止损策略",
  "riskLevel": "high",
  "tags": ["止损", "趋势"],
  "parameters": {
    "period": 22,
    "multiplier": 3.0,
    "useClose": false
  }
}

响应示例:

{
  "Id": "12345678-1234-1234-1234-1234567890ab",
  "Title": "双均线策略",
  "Status": "created"
}