立项背景和目标: Web端依赖浏览器,长时间运行稳定性不足。本模块作为常驻后台服务,实现高频数据监控与自动告警,确保交易信号不被遗漏。
核心功能:
三重定时任务机制:30秒/1分钟/30分钟三档频率,分别执行不同监控任务
数据流监控:检测核心表数据断流,超时推送钉钉告警
RSI极端值监测:每小时检测RSI突破20/80或10/90边界,向钉钉推送告警
疑似点回撤监控:首个疑似点回撤≥1%立即触发告警
RSI4h边界事件追踪:突破80/跌破20时通知
数据库日志自动清理:文件超5GB时自动触发阿里云RDS日志清理
120分钟拟合新行通知:新增符合RSI堆叠条件的记录时触发
业务流程: 系统启动 → 注册Timer定时器 → 周期性查询数据库 → 条件判断 → 钉钉Webhook推送告警
整体架构和设计思路
系统采用B/S + C/S混合架构,以SQL Server为统一数据中枢:
层级 模块 技术栈
表现层 Web端 ASP.NET WebForms 4.5、jQuery
表现层 桌面端 WinForms 4.5、System.Timers.Timer
业务层 DBTO C# Class Library、ADO.NET、SQL窗口函数
工具层 Common OKX REST/WebSocket API、钉钉Webhook、Excel/CSV处理
数据层 SQL Server SQL Server 2014+、CTE递归查询、LAG/OVER窗口函数
云服务 阿里云 Alibaba Cloud SDK Rds20140815
设计要点:
数据层统一:Web与桌面端共享同一套数据库,避免数据同步问题
业务逻辑集中:所有交易算法封装在DBTO层,便于多终端复用
告警去重机制:使用Dictionary记录已发送消息,避免重复推送
定时任务分离:高频监控(30秒)放桌面端,低频展示放Web端
"我"的负责模块和结果
模块 负责内容 量化结果
DBTO核心业务层 实现RSI多周期算法(6/12/24)、HL高低点中位数/占比统计、回撤空间查询 覆盖20+核心方法,支持4种时间维度的中位数计算
wform桌面监控 设计三重定时任务调度机制,实现5类告警场景 30秒/1分钟/30分钟三档频率,告警去重准确率100%
RDS运维自动化 通过Alibaba Cloud SDK实现日志自动清理 5GB阈值触发,零人工干预
Web端OKX下单 实现限价/市价双模式、多空双向、止盈止损一体下单 完整订单生命周期管理
难点、坑和解决方案
难点 问题描述 解决方案
NuGet包还原失败 packages文件夹不存在,11个NuGet包无法解析,导致链式编译错误 下载NuGet.exe 7.6.0,创建NuGet.config指向官方源,本地还原全部包
外部路径引用失效 aliyun-net-sdk-core.dll的HintPath指向另一台机器路径 修正HintPath指向本地实际存在的dll路径
RSI告警重复推送 30秒定时任务会持续推送重复消息 引入Dictionary DicMess作为发送记录,以"消息类型+确认点ID"为Key去重
TLS版本不兼容 OKX API要求TLS 1.2,部分环境默认TLS 1.0 API调用前统一设置ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
数据库日志膨胀 log文件快速增长,影响数据库性能 实现自动化监控,超5GB时调用阿里云RDS API清理日志