OpenClaw Agent
|
2edac30fd8
|
feat: Yahoo历史数据根据timeframe和limit动态计算开始日期
|
2026-03-17 06:48:27 +00:00 |
|
OpenClaw Agent
|
a91041e168
|
fix: Yahoo股票代码转换,BRK.B → BRK-B(类别股用连字符)
|
2026-03-17 05:47:27 +00:00 |
|
OpenClaw Agent
|
1830b93207
|
refactor: 移除腾讯历史K线降级逻辑,添加废弃标记和注释说明
|
2026-03-17 04:30:53 +00:00 |
|
OpenClaw Agent
|
aa4f63455b
|
refactor: 优化YahooMarketService,复用实例并改进异常类型
|
2026-03-17 04:22:00 +00:00 |
|
niannian zheng
|
2a6512ff48
|
feat(市场数据): 添加Yahoo财经服务并设为优先数据源
- 新增YahooMarketService实现股票实时价格和历史数据获取
- 更新MarketDataService优先使用Yahoo服务,腾讯财经降级为第二选择
- 添加YahooQuotesApi依赖并更新相关NuGet包版本
- 补充Yahoo服务测试用例
|
2026-03-17 12:06:47 +08:00 |
|
OpenClaw Agent
|
9f82ad0a81
|
fix: 腾讯历史K线接口已废弃,改进错误处理优雅降级到Tiingo
|
2026-03-16 09:15:12 +00:00 |
|
OpenClaw Agent
|
da12f6d163
|
fix: 修复编译错误和警告
- PortfolioFacade: 使用同步方法 GetStrategyById
- OkxMarketService: 响应模型属性改为可空类型
|
2026-03-15 13:18:24 +00:00 |
|
OpenClaw Agent
|
4ce29a1036
|
refactor: 架构优化 P0-P3
P0 - 安全修复:
- 移除硬编码 API Key,启动时校验必填环境变量
P1 - 高优先级:
- Entity 拆分:Position.cs, Transaction.cs 独立文件
- Controller Facade 封装:IPortfolioFacade 减少依赖注入
P2 - 中优先级:
- Repository 抽象:IPortfolioRepository, IMarketDataRepository
- MarketDataService 拆分:组合模式整合 Tencent/Tiingo/OKX
P3 - 低优先级:
- DTO 命名规范:统一 PascalCase
- 单元测试框架:xUnit + Moq + FluentAssertions
|
2026-03-15 12:54:05 +00:00 |
|
OpenClaw Agent
|
abcdc7110b
|
refactor: 后端架构优化 P0-P1
P0: 移除硬编码 API Key
- MarketDataService Tiingo Key 改为强制环境变量
P1: 拆分 Entity 文件
- 从 Portfolio.cs 提取 Position.cs
- 从 Portfolio.cs 提取 Transaction.cs
- 每个实体独立文件,符合单一职责原则
|
2026-03-15 11:44:06 +00:00 |
|
OpenClaw Agent
|
267b0bd6ba
|
feat: 添加腾讯财经历史K线数据接口
- 新增 GetStockHistoricalFromTencentAsync 方法
- 腾讯财经历史数据免费无限制,解决 Tiingo 429 限流问题
- 获取历史数据时优先使用腾讯财经,失败后降级 Tiingo
- 支持日/周/月K线数据
- 数据格式: [日期, 开盘, 收盘, 最高, 最低, 成交量]
|
2026-03-15 10:06:14 +00:00 |
|
OpenClaw Agent
|
da86aa43e6
|
fix: 行情获取失败时不写入错误数据,添加 429 限流重试机制
1. GetHistoricalPriceAsync 返回 decimal? 而非 decimal
- 价格获取失败时返回 null 而非 0
2. BackfillNavHistoryInternalAsync 检查价格有效性
- 任何持仓价格获取失败时跳过该日期
- 不写入 totalValue=0 的错误数据
3. MarketDataService 添加 GetWithRetryAsync 方法
- 处理 429 Too Many Requests 限流
- 最多重试 3 次,指数退避
|
2026-03-15 10:02:52 +00:00 |
|
OpenClaw Agent
|
1977dd609d
|
fix: 请求收益曲线时自动回填历史数据
- GetNavHistoryAsync现在会自动检查是否有历史数据
- 无历史数据时自动调用BackfillNavHistoryInternalAsync
- 拆分内部回填方法,避免重复验证权限
|
2026-03-13 16:21:31 +00:00 |
|
niannian zheng
|
f5d693ac66
|
fix
|
2026-03-12 14:45:04 +08:00 |
|
|
|
447eb9ef4f
|
移除无用的价格Clamp检测,仅保留8位小数截断
|
2026-03-12 06:26:57 +00:00 |
|
|
|
a62d892b4b
|
添加价格范围限制,确保不超过decimal(20,8)最大范围
|
2026-03-12 06:11:55 +00:00 |
|
|
|
f9d24203c6
|
修复行情缓存字段溢出问题:价格保留8位小数,字段长度扩展为20位
|
2026-03-12 06:08:57 +00:00 |
|
|
|
4ce5e1b7f9
|
修复腾讯财经接口GBK编码报错问题:注册编码提供程序,手动解析GBK响应
|
2026-03-12 05:53:42 +00:00 |
|
|
|
57e9c69a87
|
回滚到腾讯财经行情接口
|
2026-03-12 05:18:46 +00:00 |
|
|
|
534ba7c343
|
替换股票行情接口为东方财富:返回实际交易价格,与券商显示一致,无复权偏差
|
2026-03-12 05:11:50 +00:00 |
|
|
|
049050d88e
|
简化行情缓存策略:股票固定缓存5分钟,不再区分交易时段
|
2026-03-12 04:43:36 +00:00 |
|
|
|
f7626b1113
|
添加腾讯财经接口价格日志,方便排查当日盈亏为0问题
|
2026-03-12 04:38:39 +00:00 |
|
|
|
ff102f70da
|
修复腾讯财经接口代码大小写问题:改为大写
|
2026-03-12 04:33:08 +00:00 |
|
|
|
ece055fc10
|
替换股票行情接口为腾讯财经:免费无限制,支持盘前盘后实时价格,自动降级Tiingo
|
2026-03-12 04:24:56 +00:00 |
|
|
|
7685782bb4
|
优化行情缓存策略:美股交易时段缓存15分钟,非交易时段缓存24小时,节省API配额
|
2026-03-12 03:33:03 +00:00 |
|
|
|
949fa8e85b
|
实现行情缓存系统:实时价格+历史K线双层缓存,减少API调用提升响应速度
|
2026-03-10 13:21:54 +00:00 |
|
|
|
1b8c98b7d6
|
fix: 更换汇率API为开放免费接口,解决403错误
|
2026-03-10 07:32:47 +00:00 |
|
|
|
658cfe90e1
|
fix: 移除所有IConfiguration依赖,完全从环境变量读取配置,解决编译错误
|
2026-03-09 09:39:02 +00:00 |
|
|
|
f2d4351145
|
refactor: 所有配置优先从环境变量读取,完全支持Docker环境变量注入
|
2026-03-09 08:56:26 +00:00 |
|
|
|
739a37f24d
|
refactor: 所有配置改为从appsettings.json/环境变量读取,移除硬编码
|
2026-03-09 08:49:31 +00:00 |
|
niannian zheng
|
4ac8a5f063
|
feat(市场数据服务): 添加获取价格和历史数据的模拟方法
新增 GetPriceAsync 和 GetHistoricalDataAsync 方法到 MockMarketDataService 类中,用于模拟市场数据服务。同时添加 Microsoft.Extensions.Caching.Abstractions 包依赖以支持后续缓存功能。
|
2026-03-09 15:11:05 +08:00 |
|
虾球
|
53b4f4501e
|
feat: 完成三个优先级任务:1. 汇率服务替换为真实数据源(带缓存和降级);2. MarketDataService增加统一入口自动路由多数据源;3. 简化PortfolioService调用逻辑
|
2026-03-09 06:50:22 +00:00 |
|
虾球
|
20ab0c5173
|
feat: 接入 OKX 加密货币数据源(实时价格+历史K线)
|
2026-03-07 03:08:46 +00:00 |
|
niannian zheng
|
95a29cf86a
|
删除股票字典表时间字段
|
2026-03-06 17:33:39 +08:00 |
|
虾球
|
5f0c0e9636
|
feat: 加密货币接口留空,待接入 OKX API
|
2026-03-06 08:50:07 +00:00 |
|
虾球
|
0cee3afe2f
|
fix: 移除 GetTiingoResampleFreq 残留调用
|
2026-03-06 08:47:03 +00:00 |
|
虾球
|
647fde9219
|
fix: 历史数据接口和示例保持一致(移除 resampleFreq)
|
2026-03-06 08:36:09 +00:00 |
|
虾球
|
d9a8ea84c7
|
fix: 更新 Tiingo API Key & 统一使用 /tiingo/daily 端点
|
2026-03-06 08:33:55 +00:00 |
|
虾球
|
14b51e636a
|
feat: 替换市场数据源为 Tiingo(移除 Alpaca)
|
2026-03-06 08:31:55 +00:00 |
|
niannian zheng
|
b5499ef7fe
|
refactor: 将模型属性改为可为空类型以增强健壮性
- 修改ApiResponse、RiskParityConfig等DTO类的属性为可空类型
- 在策略计算器中添加空值检查逻辑
- 更新服务层代码处理可能的空值情况
- 添加发布配置文件FolderProfile.pubxml
|
2026-03-06 15:51:59 +08:00 |
|
虾球
|
567504119c
|
feat: 完成 P1 任务 - 今日盈亏、风险平价补全、Mock 数据 PreviousClose
|
2026-03-06 06:00:38 +00:00 |
|
fanfpy
|
4816980d62
|
feat: 完成 P0-1 实时价格/盈亏计算和 P0-2 汇率服务接口预留
|
2026-03-05 11:28:49 +00:00 |
|
fanfpy
|
f442f0cd1b
|
feat(策略引擎): 实现技术指标库、Mock市场数据、吊灯止损/双均线策略、策略信号API
|
2026-03-05 09:46:33 +00:00 |
|
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 |
|
niannian zheng
|
8e75b894ad
|
feat(市场数据): 添加Alpaca市场数据服务实现
添加IMarketDataService接口及实现,支持获取股票和加密货币的实时价格及历史数据
添加MarketDTO定义市场价格和历史数据结构
添加Alpaca.Markets和Microsoft.Extensions.Logging.Abstractions依赖包
在Program.cs中注册MarketDataService服务
|
2026-02-28 18:49:05 +08:00 |
|
niannian zheng
|
2fe0b0c134
|
Remove bin and obj directories from Git tracking
|
2026-02-24 19:25:28 +08:00 |
|
niannian zheng
|
a1cec21ea1
|
chore: 更新项目构建缓存文件和.gitignore配置
更新各项目的构建缓存文件,包括assets.cache和AssemblyInfo相关文件
添加.gitignore文件以忽略常见的构建输出和开发环境文件
|
2026-02-24 17:10:48 +08:00 |
|
|
|
cd5c3aedbe
|
feat: 初始化项目结构并添加基础功能
- 创建解决方案及各项目层
- 添加API基础控制器和DTO定义
- 实现JWT认证服务和微信登录服务
- 添加Swagger文档支持
- 配置项目依赖和构建文件
|
2026-02-18 20:36:09 +08:00 |
|