实现策略引擎核心功能,包括三种策略计算器和相关DTO定义: 1. 添加双均线策略(ma_trend)计算器 2. 添加吊灯止损策略(chandelier_exit)计算器 3. 添加风险平价策略(risk_parity)计算器 4. 定义策略类型常量类和策略配置DTO 5. 实现策略引擎服务接口和扩展方法 6. 更新项目引用和README文档
4.0 KiB
4.0 KiB
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)
功能介绍
策略引擎是系统的核心组件,负责根据配置的策略参数计算交易信号。支持以下三种策略类型:
- 双均线策略 (ma_trend) - 经典的趋势跟踪策略,通过短期均线和长期均线的交叉产生买卖信号
- 吊灯止损策略 (chandelier_exit) - 趋势跟踪止损策略,通过计算最高价/最低价和 ATR(平均真实波幅)来设置止损止盈位
- 风险平价策略 (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"
}