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

143 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
```text
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)
```json
{
"maType": "SMA", // 均线类型SMA(简单移动平均) / EMA(指数移动平均)
"shortPeriod": 20, // 短期均线周期
"longPeriod": 60 // 长期均线周期
}
```
#### 2. 吊灯止损策略 (chandelier_exit)
```json
{
"period": 22, // 周期(通常为 22
"multiplier": 3.0, // ATR 倍数(通常为 3.0
"useClose": false // 是否使用收盘价计算false 表示用最高价/最低价)
}
```
#### 3. 风险平价策略 (risk_parity)
```json
{
"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. 创建双均线策略
```json
{
"name": "双均线策略",
"type": "ma_trend",
"description": "经典趋势跟踪策略",
"riskLevel": "medium",
"tags": ["趋势", "均线"],
"parameters": {
"maType": "SMA",
"shortPeriod": 20,
"longPeriod": 60
}
}
```
#### 2. 创建风险平价策略
```json
{
"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. 创建吊灯止损策略
```json
{
"name": "吊灯止损策略",
"type": "chandelier_exit",
"description": "趋势跟踪止损策略",
"riskLevel": "high",
"tags": ["止损", "趋势"],
"parameters": {
"period": 22,
"multiplier": 3.0,
"useClose": false
}
}
```
**响应示例**:
```json
{
"Id": "12345678-1234-1234-1234-1234567890ab",
"Title": "双均线策略",
"Status": "created"
}
```