Skip to content

Releases: WrBug/PolyHermes

Release v2.4.1

30 Mar 05:00
2056417

Choose a tag to compare

🐛 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

02 Mar 15:40

Choose a tag to compare

新功能

消息推送自定义模板

  • 支持自定义 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

26 Feb 13:45

Choose a tag to compare

手动下单功能增强

  • 后端返回 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)
  • 优化最大按钮计算,支持保留2位小数
    • 示例:余额2.95U,价格0.86 → 数量 3.43张(充分利用全部余额)
  • 限制下单价格最高为 0.99,符合 Polymarket 价格限制

Release v2.3.3

25 Feb 13:33

Choose a tag to compare

v2.3.3 (2025-02-25)

功能

  • 加密价差策略: 尾盘策略统一更名为加密价差策略
  • 前端: 尾盘父级菜单与图标优化
  • 多语言: 系统更新功能多语言支持与缺失 key 补全
  • 尾盘监控: 双连接与分时图优化

修复

  • 尾盘监控: 分时图推送节流与前端采样,避免 1 秒内多条数据导致点过密
  • 尾盘监控: 优化 WebSocket 订阅管理与日志清理

Release v2.3.2

20 Feb 15:48

Choose a tag to compare

尾盘策略更新(相对 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

18 Feb 03:22

Choose a tag to compare

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

14 Feb 17:48

Choose a tag to compare

v2.3.0 改动梳理

一、尾盘策略功能(加密市场尾盘策略)

1. 核心能力

  • 策略 CRUD:创建/更新/删除/查询尾盘策略,支持多账户、多市场。
  • 触发与下单:基于 CLOB 订单簿 WebSocket 订阅,价格满足时间窗口与价差条件时自动下单(固定价 0.99)。
  • 时间窗口:按 K 线周期(如 5 分钟)配置「区间开始~区间结束」秒数,仅在窗口内检查触发。
  • 价格区间:最低价~最高价过滤;最小价差支持三种模式:
    • NONE:不校验价差
    • FIXED:固定点数
    • AUTO:基于币安 BTC 历史 K 线 IQR 剔除后 × 动态系数(50% 基准),按毫秒 progress 计算
  • 投入方式:固定金额(USDC)或比例(账户可用余额百分比)。
  • 结算与收益:轮询未结算触发记录,拉取 activity 成交数据回写 realizedPnlwinnerOutcomeIndex 等,支持总收益与胜率统计。

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.pyscripts/ws_binance_btc_usdc_klines.jsscripts/fetch_crypto_minute_markets.py 等。

二、订单相关 Bug 修复(重点)

1. 订单签名 salt 并发碰撞(fix(order))

  • 问题:在高并发或尾盘策略 FIXED 模式预签双单等场景下,generateSalt() 可能生成相同 salt,导致订单冲突或 invalid。
  • 修复OrderSigningService 使用 AtomicLong + 时间戳 生成 salt,保证同一毫秒内多次调用也唯一(时间戳主位 + 自增序列次位),与 Polymarket/TypeScript SDK 语义兼容。
  • Commit5074bb4 fix(order): 修复订单签名 salt 并发碰撞问题。

2. 跟单 invalid signature 与 orderbook 不存在(fix(copytrading))

  • 问题:跟单下单时出现 invalid signature;部分市场 orderbook 不存在或 tokenId/合约选择错误。
  • 修复
    • tokenId:Activity 解析时写入 trade.tokenId=asset,链上解析时写入 tokenId,优先使用与 CLOB 一致。
    • Neg Risk 市场:从 Gamma 读取 negRisk,按市场选择 CTF ExchangeNeg Risk Exchange 签约;否则用错合约会 invalid signature。
    • 签名OrderSigningService 支持 exchangeContract 参数;Credentials 路径与 v 提取、EIP-712 与链上一致。
    • 校验:创建订单前校验 signer 与 account.walletAddress 一致。
    • 数据层:TradeResponse/EventResponse/MarketResponse 增加 tokenId、negRisk 等字段;MarketService 增加 getMarketInfoByTokenIdgetNegRiskByConditionId
  • Commit63ce410 fix(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

13 Feb 17:43

Choose a tag to compare

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 位)。
  • 数据库 V33wallet_accounts 唯一约束从 wallet_address 改为 proxy_address;历史账户的 wallet_type 统一更新为 safe

回测

  • 回测任务支持价格区间过滤:可配置价格区间,用于过滤或限制回测标的。

仓位与赎回

  • 赎回批量执行与仓位页体验优化:批量赎回与仓位页交互、展示优化。

前端改动

  • 导入账户弹窗:步骤条、导入方式按钮化、代理选项卡片(类型 Tag、完整代理地址、有资产绿色、小白说明在卡片内)、私钥/助记词两行且禁止换行、「请选择账户类型」文案。
  • 账户列表/详情:展示钱包类型(Magic/Safe);导入失败时统一 message.error,重复(4601) 使用多语言「账户已存在」。

后端改动

  • AccountwalletAddress 取消 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(回测价格区间)、V33wallet_accounts 唯一约束改为 proxy_address 并更新历史 wallet_type)。
  • 首次部署或升级后建议验证:账户导入(含 Magic/Safe)、重复导入提示、赎回(含 Magic 账户)、回测价格区间过滤。

提交列表(v2.1.1..v2.2.0)

  • a067a20 feat: 回测任务支持价格区间过滤
  • bd323fc feat: 支持 Magic(邮箱/社交登录)账户导入和赎回
  • cf2c8a6 feat: 赎回批量执行与仓位页体验优化
  • fc6fa8b fix: 修复 Magic 账户赎回失败问题
  • 3405a1c feat: 钱包类型枚举与前端账号类型展示
  • 72de65d feat(frontend): 优化导入账户弹窗与文案
  • f1ec0a3 feat(account): 按代理地址去重、默认账户名、前端重复提示与 DB 唯一约束

Release v2.1.1

08 Feb 18:59

Choose a tag to compare

新功能

  • 回测任务添加最大仓位参数支持
  • 回测结算持久化、按配置重新测试、执行时以当前时间为窗口基准
  • 回测结算显示市场名称,列表非终态任务 3s 轮询进度
  • 失败与已停止的回测任务支持在列表中删除
  • Leader 管理展示跟单/回测数量并支持跳转筛选
  • 添加交互式部署脚本
  • 添加 check-i18n-keys 技能并补全多语言 key

Bug 修复

  • 修复 BacktestList 与 AddModal 的 TypeScript 类型错误
  • 修复仓位管理点击市场链接打开两个标签页的问题
  • 赎回后按 copyTrading 分别生成自动卖出记录
  • 创建跟单时带入最大仓位金额参数
  • 移除回测轮询服务的冗余日志
  • 改进部署信息显示

v2.1.0

31 Jan 15:05

Choose a tag to compare

v2.1.0

回测系统功能说明:

回测系统允许用户基于历史交易数据,模拟跟单策略的实际执行效果。
通过回测,用户可以:

  • 评估不同跟单配置参数(跟单比例、金额限制、风险控制等)的历史表现
  • 查看详细的回测结果,包括收益率、胜率、最大回撤等关键指标
  • 分析资金变化曲线和交易记录,了解策略的执行情况
  • 基于回测结果快速创建跟单配置,将验证过的策略应用到实际跟单中

本版本更新:

  • 新增从回测任务一键创建跟单配置功能,支持将验证过的策略快速应用到实际跟单
  • 优化详情展示方式,改为 Modal 弹窗,提供更流畅的查看体验
  • 完善统计信息展示,包括总交易数、买入/卖出笔数、胜率、最大盈亏等
  • 修复回测任务恢复逻辑,支持中断后继续执行
  • 优化交易记录和图表展示,提供更清晰的数据可视化