Releases: WrBug/PolyHermes
Releases · WrBug/PolyHermes
Release v2.4.1
🐛 Bug 修复
- #39 修复 Backtest equity curve bug
- #42 修复前端 TypeScript 编译报错
- #43 修复加密价差策略收益曲线显示问题
- #44 修复前端移动端交互问题
- #35 修复价差策略按比例买入时,购买价值小于 1 USDC 会下单失败的问题
🔧 优化
- #45 优化前端通知推送自定义模板
- #46 优化前端仓位管理列表 UI
- #47 优化前端 Leader 列表 UI
- #48 优化通知推送区分输赢并显示可用余额
📦 CI/CD
- 简化 docker-build workflow
- 添加 PR 合并后自动关闭 Issue 的 workflow
- AI 修复的 Issue 关闭时发送 Telegram 通知
Full Changelog: v2.4.0...v2.4.1
v2.4.0
新功能
消息推送自定义模板
- 支持自定义 Telegram 通知模板,可使用变量语法 {{variable}}
- 独立的消息推送设置页面,包含机器人配置和模板配置
- 变量面板支持点击复制、悬停说明
加密价差策略收益曲线
- 新增收益曲线可视化功能,支持今日/7天/30天/全部时间筛选
- 统计卡片展示累计收益、最大回撤等关键指标
- 桌面端和移动端均可查看收益曲线
订单按实际成交价展示
- 订单通知使用实际成交价 (original_size * price / size_matched)
- 数量展示使用 size_matched,数据更准确
- 前端订单推送同步优化
改进优化
UI/UX 优化
- Leader 列表:操作列改用图标按钮,移动端 Cell 样式美化
- 跟单列表:操作列改为图标按钮样式,与策略列表风格统一
- 仓位管理:12列精简为8列,表格更紧凑
- 多个列表页面添加空状态提示
移动端优化
- 消息设置页面:修复 Tooltip 与点击事件冲突,优化变量复制体验
- 加密价差监控:下单弹窗改为 BottomSheet 样式,刷新页面保留策略选择
通知推送优化
- 赎回通知区分输赢:赢的仓位显示"赎回成功",输的显示"已结算"
- 买入/卖出/赎回通知添加钱包可用余额显示
修复
- 修复卖出订单通知 side 字段错误
- 修复创建订单失败时错误信息展示
- 移除未使用变量与导入,消除 TS 报错
New Features
Custom Notification Templates
- Support custom Telegram notification templates with {{variable}} syntax
- Dedicated notification settings page with bot config and template config
- Variable panel with click-to-copy and hover tooltips
Crypto Spread Strategy PnL Curve
- Visual PnL curve with Today/7 Days/30 Days/All time filters
- Statistics cards showing cumulative PnL, max drawdown, etc.
- Available on both desktop and mobile
Order Display with Actual Filled Price
- Order notifications use actual filled price (original_size * price / size_matched)
- Quantity display uses size_matched for more accurate data
- Frontend order push synchronized
Improvements
UI/UX Optimization
- Leader list: Icon buttons for actions, beautified mobile cell style
- Copy trading list: Icon buttons for actions, consistent with strategy list
- Position management: Reduced from 12 to 8 columns for compactness
- Empty state prompts added to multiple list pages
Mobile Optimization
- Notification settings: Fixed Tooltip/click conflict, improved variable copy experience
- Crypto spread monitor: BottomSheet style for order popup, preserve strategy selection on refresh
Notification Push Optimization
- Redeem notifications distinguish win/lose positions
- Wallet available balance added to buy/sell/redeem notifications
Bug Fixes
- Fixed sell order notification side field error
- Fixed error message display when order creation fails
- Removed unused variables and imports, resolved TS errors
v2.3.4 Release
手动下单功能增强
- 后端返回 amountMode 和 amountValue 字段,支持前端获取策略配置
- 手动下单确认弹窗显示用户可用余额(绿色高亮)
- 价格输入框右侧添加获取最新价按钮,支持实时更新价格
- 数量输入框右侧添加最大按钮,根据余额自动计算最大购买数量
数量计算优化
- 修正数量计算逻辑:FIXED 和 RATIO 模式均按实际金额计算数量,保留2位小数
- FIXED 模式:使用配置的固定金额
- RATIO 模式:按比例计算可用余额
- 数量计算使用保留小数方式(而非向上取整),确保精确匹配投入金额
- 示例:固定1U,价格0.4,自动填充2.5张
- 示例:比例30%,余额20U,价格0.4,自动填充15张
移动端体验优化
- 移动端策略选择器:标题与下拉框垂直布局,支持换行显示
- 下拉框选项支持文本换行,避免长策略名称被截断
- 移动端手动下单按钮改为底部悬浮固定显示
- 两个按钮均分屏幕宽度,符合移动端触摸操作规范
Bug 修复
- 修复 RATIO 模式下金额被 Math.floor 错误截断的问题
- 示例:60%比例,余额2.95U,价格0.682
- 修复前:数量 1.47(金额被截断为1U)
- 修复后:数量 2.60(金额正确为1.77U)
- 示例:60%比例,余额2.95U,价格0.682
- 优化最大按钮计算,支持保留2位小数
- 示例:余额2.95U,价格0.86 → 数量 3.43张(充分利用全部余额)
- 限制下单价格最高为 0.99,符合 Polymarket 价格限制
Release v2.3.3
v2.3.3 (2025-02-25)
功能
- 加密价差策略: 尾盘策略统一更名为加密价差策略
- 前端: 尾盘父级菜单与图标优化
- 多语言: 系统更新功能多语言支持与缺失 key 补全
- 尾盘监控: 双连接与分时图优化
修复
- 尾盘监控: 分时图推送节流与前端采样,避免 1 秒内多条数据导致点过密
- 尾盘监控: 优化 WebSocket 订阅管理与日志清理
Release v2.3.2
尾盘策略更新(相对 v2.3.1)
新功能
- 尾盘策略新增 ETH、SOL、XRP 市场(5m/15m),Binance 多币种 K 线支持
- 币安 K 线按需订阅:仅在有启用策略时建连,只订阅用到的市场+周期(如仅开 btc 5min 只建 btc 5min 连接)
修复与优化
- 防止 refreshAndSubscribe 并发重复调用导致日志刷屏(加锁与 isRefreshing)
- BinanceKlineAutoSpreadService 支持完整 slug(如 eth-updown-5m)解析
- 尾盘相关服务 PreDestroy 与内存/缓存清理(OrderbookWs、Notification、Settlement、Execution)
- 健康检查:无策略时币安 WebSocket 显示「未订阅」;前端币安提醒仅在有启用策略时展示
- 前端:up/down 标签去掉箭头图标
Release v2.3.1
Release v2.3.1(相对 v2.3.0)
账户设置
- 后端 execute-setup-step API:步骤1 Safe 一键部署 / 步骤2 启用交易 / 步骤3 代币授权
- Safe 部署:Eip712Encoder、RelayClientService.deploySafeViaBuilderRelayer
- 导入成功有未完成步骤时先弹设置引导;设置弹窗复用 AccountSetupStatusBlock
- BlockchainService:isProxyDeployed、getUsdcAllowance
尾盘策略
- 订单簿 book 事件取最高买价为 bestBid(修复 marketPrice 恒为 0.01)
- 移除 tokenToEntries null 等冗余日志
- 尾盘策略文档补充价差方向(最小/最大价差),文档归集至
docs/crypto-tail-strategy/ - 前端配置指南链接指向新路径
其他
- 账户设置与杂项修复(RPC URL 日志、前端 TS、BlockchainService)
- 自动赎回 Builder Relayer 限流与配额处理
- Neg Risk 市场 WrappedCollateral 赎回与 WCOL 解包轮询
- Builder API Key 等配置前端显示完整值
- unwrap-wcol 脚本入口与 ethers 依赖
Release v2.3.0
v2.3.0 改动梳理
一、尾盘策略功能(加密市场尾盘策略)
1. 核心能力
- 策略 CRUD:创建/更新/删除/查询尾盘策略,支持多账户、多市场。
- 触发与下单:基于 CLOB 订单簿 WebSocket 订阅,价格满足时间窗口与价差条件时自动下单(固定价 0.99)。
- 时间窗口:按 K 线周期(如 5 分钟)配置「区间开始~区间结束」秒数,仅在窗口内检查触发。
- 价格区间:最低价~最高价过滤;最小价差支持三种模式:
- NONE:不校验价差
- FIXED:固定点数
- AUTO:基于币安 BTC 历史 K 线 IQR 剔除后 × 动态系数(50% 基准),按毫秒 progress 计算
- 投入方式:固定金额(USDC)或比例(账户可用余额百分比)。
- 结算与收益:轮询未结算触发记录,拉取 activity 成交数据回写
realizedPnl、winnerOutcomeIndex等,支持总收益与胜率统计。
2. 后端实现要点
- CryptoTailStrategy / CryptoTailStrategyTrigger 实体与 Repository;迁移脚本 V34~V37。
- CryptoTailOrderbookWsService:订阅 CLOB Market WS,多策略共享连接,按策略刷新订阅;
bids为空时防护,避免 Index 0 out of bounds。 - CryptoTailStrategyExecutionService:触发时校验价差、时间窗口,固定价格签名下单,成功/失败写触发记录(含
failReason);取消 FIXED 模式预签,改为触发时再签名。 - CryptoTailSettlementService:轮询未结算订单,用 activity 成交优先
usdcSize更新投入金额与盈亏。 - CryptoTailOrderNotificationPollingService:轮询未通知的成功订单,发送 TG;已结算的触发不再请求 getOrder,直接标记
notification_sent=true。 - BinanceKlineService / BinanceKlineAutoSpreadService:币安 5m/15m K 线 WS、自动价差(历史 20 根 K 线);健康检查接入币安 API/WS 状态。
- TelegramNotificationService:尾盘下单成功 TG 通知(轮询实现,修复自调用问题)。
3. 前端与体验
- 策略列表页(CryptoTailStrategyList):列表/卡片(移动端)、账户筛选、状态筛选;状态列(Switch)PC 端第一列;账户列、时间区间(PC 换行/移动端单行)、价格区间、投入方式、总收益、胜率;操作:编辑、订单、删除。
- 触发记录弹窗:成功/失败分 Tab,失败展示失败原因;分页;按天时间范围(日历,结束日不超过今天);时间范围卡片、空状态、分页总数;订单按钮文案为「订单」。
- 表单:编辑时账户与市场不可修改;策略名称 placeholder「选填,留空将自动生成」;最小价差 NONE/FIXED/AUTO 及前端默认与文案。
- 币安 API 状态:策略页展示币安 API/WS 不可用时的告警与重新检测。
- 多语言(zh-CN/zh-TW/en)与 i18n 键补全。
4. 配置与部署
- DOCKER_VERSION:支持从
.env读取;deploy.sh调整。 - CLOB
/time使用 ResponseBody 解析纯数字;PolymarketApiKeyService 等适配。
5. 文档与脚本
docs/zh/crypto-tail-strategy-*.md:流程、市场数据、最小价差、任务、UI 说明。docs/crypto-tail-auto-spread-dynamic-coefficient.md:AUTO 价差动态系数说明。scripts/fetch_binance_btc_usdc_klines.py、scripts/ws_binance_btc_usdc_klines.js、scripts/fetch_crypto_minute_markets.py等。
二、订单相关 Bug 修复(重点)
1. 订单签名 salt 并发碰撞(fix(order))
- 问题:在高并发或尾盘策略 FIXED 模式预签双单等场景下,
generateSalt()可能生成相同 salt,导致订单冲突或 invalid。 - 修复:
OrderSigningService使用 AtomicLong + 时间戳 生成 salt,保证同一毫秒内多次调用也唯一(时间戳主位 + 自增序列次位),与 Polymarket/TypeScript SDK 语义兼容。 - Commit:
5074bb4fix(order): 修复订单签名 salt 并发碰撞问题。
2. 跟单 invalid signature 与 orderbook 不存在(fix(copytrading))
- 问题:跟单下单时出现 invalid signature;部分市场 orderbook 不存在或 tokenId/合约选择错误。
- 修复:
- tokenId:Activity 解析时写入
trade.tokenId=asset,链上解析时写入 tokenId,优先使用与 CLOB 一致。 - Neg Risk 市场:从 Gamma 读取
negRisk,按市场选择 CTF Exchange 或 Neg Risk Exchange 签约;否则用错合约会 invalid signature。 - 签名:
OrderSigningService支持exchangeContract参数;Credentials 路径与 v 提取、EIP-712 与链上一致。 - 校验:创建订单前校验 signer 与
account.walletAddress一致。 - 数据层:TradeResponse/EventResponse/MarketResponse 增加 tokenId、negRisk 等字段;
MarketService增加getMarketInfoByTokenId、getNegRiskByConditionId。
- tokenId:Activity 解析时写入
- Commit:
63ce410fix(copytrading): 修复跟单 invalid signature 与 orderbook 不存在。
三、其他重要修复与优化
- 账户/赎回:无跟单配置的账户也执行自动赎回,支持仅用尾盘策略的账户仓位赎回(
PositionCheckService)。 - 尾盘下单失败:取消重试并打印完整报错信息;已结算触发不再请求 getOrder,直接标记 notification_sent。
- 健康检查:新增币安 API ping、币安 WebSocket 连接状态;订单簿
bids空防护;自动价差历史 K 线由 30 根改为 20 根。 - 前端:加密尾盘策略列表编辑与展示修复;策略列表文案换行、列宽、移动端 Switch 位置与时间区间单行等体验优化。
四、变更统计(v2.2.0..HEAD)
- 56 个文件变更,约 +5882 / -132 行。
- 新增后端:Controller/Service/Entity/Repository 尾盘策略全链路;Binance K 线与自动价差;健康检查;跟单 OrderSigning、MarketService、CopyOrderTracking 等改动。
- 新增前端:
CryptoTailStrategyList.tsx及多语言、API;Layout 入口。 - 新增 DB 迁移:V34~V37(尾盘策略表、触发记录、结算与通知字段、最小价差字段)。
- 新增/更新文档与脚本见上。
梳理基于 git log v2.2.0..HEAD 与关键 commit 内容,重点为尾盘策略功能与订单/跟单相关 Bug 修复。
Release v2.2.0
Release v2.2.0
对比 v2.1.1 改动摘要
本版本主要新增 Magic(邮箱/社交登录)账户 支持、账户导入与去重逻辑优化、回测价格区间过滤,以及多处前端体验与修复。
新功能
Magic 账户支持
- 支持 Magic(邮箱/社交登录)账户导入和赎回:同一 EOA 可分别以 Magic 与 Safe 代理各导入一个账户。
- 钱包类型枚举:后端新增
WalletType(MAGIC/SAFE),替代字符串硬编码;前端账户列表、详情、导入流程中展示账户类型标签(Magic / Safe)。 - 修复 Magic 账户赎回失败:修正 PROXY ABI 与 gas 估算、API Key 校验时机等,使 Magic 赎回流程与 builder-relayer 一致。
账户导入与去重
- 按代理地址去重:去重由「钱包地址」改为「代理地址」;重复导入同一代理时返回
ACCOUNT_ALREADY_EXISTS(4601),前端弹出多语言「账户已存在」提示。 - 默认账户名:未填写账户名时自动生成
SAFE-xxxx/MAGIC-xxxx(xxxx 为代理地址后 4 位)。 - 数据库 V33:
wallet_accounts唯一约束从wallet_address改为proxy_address;历史账户的wallet_type统一更新为safe。
回测
- 回测任务支持价格区间过滤:可配置价格区间,用于过滤或限制回测标的。
仓位与赎回
- 赎回批量执行与仓位页体验优化:批量赎回与仓位页交互、展示优化。
前端改动
- 导入账户弹窗:步骤条、导入方式按钮化、代理选项卡片(类型 Tag、完整代理地址、有资产绿色、小白说明在卡片内)、私钥/助记词两行且禁止换行、「请选择账户类型」文案。
- 账户列表/详情:展示钱包类型(Magic/Safe);导入失败时统一
message.error,重复(4601) 使用多语言「账户已存在」。
后端改动
- Account:
walletAddress取消 unique,proxyAddress设为 unique。 - AccountRepository:新增
existsByProxyAddress。 - AccountService:导入流程先取代理地址再按
proxy_address去重;默认账户名格式SAFE-xxxx/MAGIC-xxxx。 - AccountController:重复导入时返回
ErrorCode.ACCOUNT_ALREADY_EXISTS。 - RelayClientService / BlockchainService / OrderSigningService:使用
WalletType枚举,Magic 赎回与 PROXY 流程修正。
升级说明
- 数据库:需执行 Flyway 迁移,包含 V32(回测价格区间)、V33(
wallet_accounts唯一约束改为proxy_address并更新历史wallet_type)。 - 首次部署或升级后建议验证:账户导入(含 Magic/Safe)、重复导入提示、赎回(含 Magic 账户)、回测价格区间过滤。
提交列表(v2.1.1..v2.2.0)
Release v2.1.1
新功能
- 回测任务添加最大仓位参数支持
- 回测结算持久化、按配置重新测试、执行时以当前时间为窗口基准
- 回测结算显示市场名称,列表非终态任务 3s 轮询进度
- 失败与已停止的回测任务支持在列表中删除
- Leader 管理展示跟单/回测数量并支持跳转筛选
- 添加交互式部署脚本
- 添加 check-i18n-keys 技能并补全多语言 key
Bug 修复
- 修复 BacktestList 与 AddModal 的 TypeScript 类型错误
- 修复仓位管理点击市场链接打开两个标签页的问题
- 赎回后按 copyTrading 分别生成自动卖出记录
- 创建跟单时带入最大仓位金额参数
- 移除回测轮询服务的冗余日志
- 改进部署信息显示
v2.1.0
v2.1.0
回测系统功能说明:
回测系统允许用户基于历史交易数据,模拟跟单策略的实际执行效果。
通过回测,用户可以:
- 评估不同跟单配置参数(跟单比例、金额限制、风险控制等)的历史表现
- 查看详细的回测结果,包括收益率、胜率、最大回撤等关键指标
- 分析资金变化曲线和交易记录,了解策略的执行情况
- 基于回测结果快速创建跟单配置,将验证过的策略应用到实际跟单中
本版本更新:
- 新增从回测任务一键创建跟单配置功能,支持将验证过的策略快速应用到实际跟单
- 优化详情展示方式,改为 Modal 弹窗,提供更流畅的查看体验
- 完善统计信息展示,包括总交易数、买入/卖出笔数、胜率、最大盈亏等
- 修复回测任务恢复逻辑,支持中断后继续执行
- 优化交易记录和图表展示,提供更清晰的数据可视化