WrBug
83a415fb7e
优化代理检查结果展示与地域检测文案
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-27 00:54:22 +08:00
WrBug
8ab8ae5205
style: 全局将 USDC 展示替换为 $ 符号
...
前端所有金额展示从 "100.00 USDC" 改为 "$100.00" 格式,
后端 Telegram 通知模板和错误提示同步更新。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-28 22:23:49 +08:00
WrBug
06a122dd34
fix: 迁移链路外统一改为仅识别 pUSD
...
移除链上监听中对 USDC.e 的抵押品匹配,并将解包与审批相关说明统一为 pUSD 语义,避免在非 swap/wrap 流程继续使用 USDC.e。
Made-with: Cursor
2026-04-28 21:40:41 +08:00
WrBug
fb6b469e9f
fix: 修复 CLOB V2 下代理交易与链上成交解析问题
...
调整 CLOB API 地址并优化 Magic Proxy 的执行与 gas 限制,避免 wrap 与 relay 调用在 V2 环境下异常回滚。同时补充 pUSD/USDC.e 兼容与 ERC1155-only 成交价格回填逻辑,提升链上成交解析稳定性。
Made-with: Cursor
2026-04-28 21:34:43 +08:00
WrBug
22a6544373
feat: CLOB V1 → V2 完整迁移
...
- 更新 EIP-712 签名结构: domain version "1"→"2", 移除 taker/expiration/nonce/feeRateBps, 新增 timestamp/metadata/builder
- 更新合约地址为 V2 (CTF_EXCHANGE, NEG_RISK_EXCHANGE)
- CLOB URL 切换到 clob-v2.polymarket.com
- 抵押品代币 USDC.e → pUSD (0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB)
- 新增 USDC.e → pUSD wrap 功能 (CollateralOnramp 合约)
- SignedOrderObject 补充 API payload 必需的 taker/expiration 字段
- NewOrderRequest 补充 deferExec/postOnly 字段
- 前端账户管理新增 pUSD 迁移按钮
- 移除所有 feeRateBps 相关逻辑
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-20 22:24:50 +08:00
WrBug
04b7505094
Merge branch 'dev'
...
Made-with: Cursor
2026-03-30 12:55:20 +08:00
WrBug
748c871af4
fix: backtest equity curve bugs ( #39 )
...
- Fix SELL logic: correctly reduce position.quantity after selling (core bug)
Previously positions were never decremented, causing sold positions to be
settled again at backtest end, inflating final balance.
- Fix settleRemainingPositions: profitLoss now correctly computes
settlementValue - cost (was incorrectly using settlementValue.negate())
- Fix max drawdown calculation: use current balance instead of previous
iteration's runningBalance
- Frontend: add comment noting chart shows cash balance, not total equity
2026-03-28 18:06:06 +08:00
WrBug
d8a75fc8dd
fix : #35 [Bug] / 价差策略按比例买入,购买的价值小于1usdc时,会下单失败
2026-03-10 12:18:03 +08:00
WrBug
686d14b6e5
fix(account): 卖出订单通知与创建订单失败错误展示
...
- 手动卖出订单通知:side 固定为 SELL,outcome 使用 request.side(市场方向)
- 创建订单失败时从 API errorBody 解析 error 字段(Gson),用于 TG 通知展示
- 成功/失败分支均使用 NewOrderResponse.getErrorMessage() 获取错误文案
Made-with: Cursor
2026-03-02 23:08:23 +08:00
WrBug
561ebf0ce3
feat(订单推送/通知): 按实际成交价与 size_matched 展示价格与数量
...
- 实际成交价公式: original_size * price / size_matched,数量展示用 size_matched
- OrderPushService/OrderStatusUpdateService/CryptoTail: 用公式计算 avgFilledPrice,移除 getTrades 依赖
- TelegramNotificationService: 有 avgFilledPrice 时展示数量用 filled,ORDER_SUCCESS/CRYPTO_TAIL 一致
- 前端订单推送: 有成交时展示 size_matched;无 orderDetail 时用 WebSocket 数据计算价格与数量
- OrderDetailDto 增加 avgFilledPrice;PolymarketClobService 移除 getAvgFilledPriceFromTradeIds
Made-with: Cursor
2026-03-02 23:05:15 +08:00
WrBug
8f0a49493c
refactor(notification): 优化模板配置布局并完善多语言支持
...
- 布局优化:模板类型改为顶部Tabs,内容区70%+变量面板30%
- 变量Tag UI优化:更精致的样式和悬浮效果
- 多语言:添加模板类型描述、变量label/description的i18n key(三语言)
- 后端精简:移除DTO中冗余的label/description/templateTypeName字段
- 清理:移除未使用的templates状态和fetchTemplates方法
Made-with: Cursor
2026-03-02 22:02:00 +08:00
WrBug
e7af4d4821
feat: 消息推送自定义模板与独立设置页
...
后端:
- 新增通知模板表与实体、DTO、Repository、NotificationTemplateService
- 支持 {{variable}} 模板语法,提供模板类型与变量接口
- TelegramNotificationService 改为通过模板渲染发送(ORDER_SUCCESS/ORDER_FAILED/ORDER_FILTERED/CRYPTO_TAIL_SUCCESS/REDEEM_SUCCESS/REDEEM_NO_RETURN)
- 模板 CRUD、重置默认、测试发送接口
- 补全订单过滤相关 i18n key(zh/en/zh-TW)
前端:
- 消息推送设置抽离为独立页 /system-settings/notification
- 系统设置概览改为入口卡片,侧栏增加「消息推送设置」菜单
- NotificationSettingsPage: 机器人配置 + 模板配置双卡片布局(与概览一致)
- 模板配置支持选择类型、编辑内容、变量面板(点击复制、悬停说明)、保存/重置/测试
- 多语言 key 补全(notificationSettings.templates.*、templateTypes.*)
Made-with: Cursor
2026-03-02 21:31:45 +08:00
WrBug
46e10ebdd8
feat(crypto-tail): 加密价差策略收益曲线与交互优化
...
- 后端: 收益曲线 API (pnl-curve)、CryptoTailStrategyService.getPnlCurve、gt 扩展导入
- 前端: CryptoTailPnlCurveModal 弹窗,统计卡片+时间筛选+ECharts 累计收益图
- 策略列表: 桌面/移动端「收益曲线」入口,图标改为蓝色(#1890ff)
- 切换时间范围保留旧数据避免图表容器卸载导致空白
- 今日/7天/30天用折线、全部用平滑曲线
- 多语言: viewPnlCurve、pnlCurve.* (zh-CN/zh-TW/en)
Made-with: Cursor
2026-03-02 17:39:23 +08:00
WrBug
3cc37dac55
feat(backend): 优化通知推送,区分输赢并显示可用余额
...
- 赎回通知区分输赢:赢的仓位显示"赎回成功",输的仓位显示"已结算(无收益)"
- 买入/卖出/赎回通知消息中添加钱包可用余额显示
- 新增多语言文案支持
Made-with: Cursor
2026-03-01 05:41:04 +08:00
WrBug
79b154515d
feat(frontend): 手动下单功能增强与金额模式支持
...
- 后端返回 amountMode 和 amountValue 字段,支持前端获取策略配置
- 手动下单确认弹窗显示用户可用余额(绿色高亮)
- 价格输入框右侧添加"获取最新价"按钮,支持实时更新价格
- 数量输入框右侧添加"最大"按钮,根据余额自动计算最大购买数量
- 修正数量计算逻辑:FIXED 和 RATIO 模式均按实际金额计算数量,保留2位小数
- FIXED 模式:使用配置的固定金额
- RATIO 模式:按比例计算可用余额
- 数量计算使用保留小数方式(而非向上取整),确保精确匹配投入金额
- 示例:固定1U,价格0.4,自动填充2.5张
- 示例:比例30%,余额20U,价格0.4,自动填充15张
Made-with: Cursor
2026-02-26 21:19:06 +08:00
WrBug
cb1f43871a
fix(crypto-tail): 周期切换时按周期拉取 tokenIds,修复手动下单 orderbook 不存在
...
- 后端 initMonitor 支持可选 periodStartUnix,按指定周期取市场与 tokenIds
- 前端周期切换时调用 monitorInit 传入 pushPeriod,确保 tokenIds 与当前周期一致
- 修复切换周期无变化及手动下单报 orderbook does not exist
Made-with: Cursor
2026-02-26 20:43:27 +08:00
WrBug
a2be5b7f52
feat(crypto-tail): 价差策略监控页手动下单与 UI 优化
...
- 后端:手动下单 API,trigger_type 区分 AUTO/MANUAL,价格 4 位小数向上取整
- 前端:监控页手动买入 Up/Down 按钮、二次确认弹窗、策略信息移动端适配
- 下单价格最多 4 位小数;确认页方向仅显示 Up/Down;按钮文案改为「买入 Up/Down」
Made-with: Cursor
2026-02-26 19:23:00 +08:00
WrBug
708d6ddb41
fix(binance): 修复 K 线 WebSocket 断开后无法重连导致 openPrice/closePrice 丢失的问题
...
当 WebSocket 因网络问题断开时,updateSubscriptions() 只检查订阅集合是否相同,
未检查连接是否真的存在,导致断开后无法重连。
现在会额外检查需要的连接是否都存在,如果缺失则重新建立连接。
Made-with: Cursor
2026-02-26 10:28:28 +08:00
WrBug
c5d59dfdf9
refactor: 尾盘策略统一更名为加密价差策略
...
- 前端:菜单父级「加密价差策略」,子项「策略配置」「实时监控」;i18n 与类型注释全部替换
- 后端:i18n、ErrorCode、DTO/实体/服务注释与日志「尾盘」→「加密价差策略」;TG 通知文案
- 文档:README、中英文用户指南、UI 规格、任务、流程、价差流程、市场数据、动态系数等全部更新
- 不修改 API 路径、路由、表名与类名,保持兼容
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 21:30:50 +08:00
WrBug
4b277eaeab
feat(frontend): 尾盘父级菜单与图标优化
...
- 尾盘策略、尾盘监控归入「尾盘」父级菜单,与跟单交易结构一致
- 菜单图标:父级 LineChart,尾盘策略 RocketOutlined,尾盘监控 DashboardOutlined
- 多语言:新增 menu.cryptoTail(尾盘/尾盤/Crypto Tail)
- 含 CryptoTailMonitor 及后端 DTO/Service 等修改
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 21:17:44 +08:00
WrBug
0740abcf16
fix(crypto-tail): 监控分时图推送节流与前端采样,避免1s内多条数据导致点过密
...
- 后端: price_change 推送节流,每策略 1s 内最多推送 1 次,其余靠定时 1.5s 推送补足
- 前端: 同周期内分时图追加点时至少间隔 1s 才追加,保证曲线连续且不过密
- 最新价等展示仍实时更新,仅图表序列做采样
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 20:01:29 +08:00
WrBug
377da4fff6
fix(cryptotail): 优化 WebSocket 订阅管理与日志清理
...
- 使用 createClient() 懒加载 OkHttpClient
- 修复订阅计数归零时未移除策略的问题
- 简化 handleMessage,移除 isFromCurrentPeriod 参数和 book 事件处理
- 清理调试日志,保留关键业务日志
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 19:27:49 +08:00
WrBug
84c79d8812
feat(cryptotail): 尾盘监控双连接与分时图优化
...
- 监控 WebSocket 拆分为当前周期连接与下一周期连接,周期切换时关闭过期连接并新建下一周期
- 下一周期市场未创建时也建立第二条空连接,保证始终两条连接
- refreshSubscription 增加 Mutex 防重入,避免周期结束时定时器与消息同时触发导致重复执行
- 修复 initMonitor/buildPushData 中 getCurrentOpenClose、spreadMode/spreadValue 等 API 与实体字段引用
- 移除重复的 buildSubscriptionMap、buildPushData 等方法,修复 StrategyPriceData.periodStartUnix
- 前端分时图:市场价折线增加 connectNulls,新周期默认 0.5 价格展示
- 多语言与监控页入口、API 类型与 WebSocket 订阅集成
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 17:00:41 +08:00
WrBug
d3196a783f
feat(cryptotail): 尾盘策略多市场与币安按需订阅
...
- 新增 ETH/SOL/XRP 市场选项(5m/15m),Binance 多币种 K 线支持
- 币安 K 线按策略按周期订阅:仅在有启用策略时建连,只订阅用到的市场+周期(如仅 btc 5m 只建 btc 5m)
- BinanceKlineAutoSpreadService 支持完整 slug(如 eth-updown-5m)解析
- 尾盘服务 PreDestroy 与内存/缓存清理(OrderbookWs、Notification、Settlement、Execution)
- 健康检查:无策略时币安 WS 显示「未订阅」;前端币安提醒仅在有启用策略时展示
- 前端:up/down 标签去掉箭头图标
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-20 23:45:24 +08:00
WrBug
4c989a48c4
fix(cryptotail): 防止 refreshAndSubscribe 并发重复调用导致日志刷屏
...
- 增加 refreshLock 与 isRefreshing 状态,串行化刷新逻辑
- 刷新进行中时直接跳过后续调用,避免 1s 内大量重复「倒计时」「已过时间窗口」日志
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-20 23:18:52 +08:00
WrBug
cbcebf6e28
chore: 账户设置与杂项修复
...
- BlockchainService: 新增 isProxyDeployed、getUsdcAllowance(账户设置检查/授权用)
- RetrofitFactory: 移除 RPC URL 替换 debug 日志
- AccountImportForm: 修复 checkSetupStatus/onSuccess 参数类型(使用 newAccount.id)
- AccountSetupStatusBlock: 移除未使用的 isMobile 与 useMediaQuery 引用
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-18 03:17:40 +08:00
WrBug
2013a2eb70
fix: 尾盘策略 book 取最高买价为 bestBid,移除 tokenToEntries null 日志
...
- book 事件 bids 为升序,改为遍历取最高价作为 bestBid(修复 marketPrice 恒为 0.01)
- 移除 onBestBid 中 tokenToEntries null 的 debug 日志
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-18 03:16:22 +08:00
WrBug
de89175c8e
feat: 账户设置后端 action、Safe 部署与设置引导弹窗复用
...
账户设置:
- 后端: execute-setup-step API(步骤1 Safe 一键部署/步骤2 启用交易/步骤3 代币授权)
- Safe 部署: Eip712Encoder SafeCreate/CreateProxy,RelayClientService.deploySafeViaBuilderRelayer
- BuilderRelayerApi: SignatureParams 增加 paymentToken/payment/paymentReceiver,TransactionRequest.nonce 可选
- 导入成功有未完成步骤时先弹设置引导再关导入弹窗;设置弹窗复用 AccountSetupStatusBlock(embedded)
- AccountSetupStatusBlock: 5s 轮询、embedded 模式、onAllCompleted、移除全部完成 Tag、授权信息始终展示且右对齐额度列
- 多语言: 步骤1/2/3 文案与 actionSuccess/actionFailed
CryptoTail:
- SpreadDirection/SpreadMode 枚举及 Converter,V38 迁移,策略列表与 api/types 调整
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-18 03:01:35 +08:00
WrBug
24a4487d0b
fix(cryptotail): 尾盘策略失败订单原因移除 HTTP 状态码,便于移动端显示
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 04:33:27 +08:00
WrBug
24bb7bed40
feat(backend): 自动赎回 Builder Relayer 限流与配额处理
...
- RelayClientService: 429 限流时指数退避重试;解析 quota exceeded/resets in N seconds 并记录冷却时间;暴露 isBuilderRelayerQuotaBlocked 与 getBuilderRelayerQuotaBlockedRemainingSeconds
- PositionCheckService: checkRedeemablePositions 防重入;配额冷却期内跳过自动赎回
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 04:32:52 +08:00
WrBug
c38529546f
feat(system): Builder API Key 等配置前端显示完整值
...
- 后端 SystemConfigService 返回解密后的完整 builderApiKey/Secret/Passphrase,不再脱敏
- 移除未使用的 maskSensitiveValue 方法
- 更新 DTO 与前端类型注释为「完整显示」
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 01:47:52 +08:00
WrBug
08e1219f77
feat(neg-risk): WCOL 解包轮询与 Safe/Magic 一致说明
...
- 新增 WcolUnwrapJobService:每 20s 轮询解包 WCOL,未配置 Builder Key 时直接跳过
- AccountService:赎回流程不再等待确认与解包,由轮询统一处理;新增 runWcolUnwrapForAllAccounts
- BlockchainService:unwrapWcolForProxy 注释说明 Safe/Magic 逻辑一致;waitForTransactionConfirmed 避免 inline lambda 中 continue
- RelayClientService:createUnwrapWcolTx 注释说明共用逻辑;移除 Builder Relayer 调试日志
- docs/neg-risk-redeem.md:更新解包流程与 Safe/Magic 一致说明
- scripts/unwrap-wcol.js:新增脚本支持 Safe/EOA 解包与 Builder Relayer
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 01:46:55 +08:00
WrBug
13662dd0d5
fix(redeem): Neg Risk 市场使用 WrappedCollateral 赎回,并补充文档
...
- RelayClientService: 增加 negRiskWrappedCollateralAddress,createRedeemTx 支持 isNegRisk 选用抵押品
- BlockchainService: redeemPositions/redeemPositionsBatch 支持 isNegRisk,批量请求改为 (conditionId, indexSets, isNegRisk)
- AccountService: 赎回前按市场查询 getNegRiskByConditionId,批量与单笔均传入 isNegRisk
- docs/neg-risk-redeem.md: 新增 Neg Risk 赎回逻辑与对应 JS/TS 代码说明
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 00:11:40 +08:00
WrBug
0f50939625
feat(尾盘策略): 触发记录分页与时间筛选、策略列表与表单优化
...
触发记录:
- 成功/失败分 Tab,失败展示失败原因
- 分页与按天时间范围筛选(日历,结束日不超过今天)
- 后端 startDate/endDate、Repository 时间范围查询
- 弹窗美化:时间范围卡片、空状态、分页总数;移除订单 ID 列
- 查看触发记录按钮文案改为「订单」
策略列表:
- 状态列恢复为 Switch,PC 端放在第一列
- 新增账户列;移除最近触发列
- 文案换行(wordBreak/whiteSpace);时间区间 PC 换行、移动端单行
- 时间区间列宽缩小;移动端 Switch 在底部操作区
- 编辑时账户不可修改;策略名称 placeholder 改为「选填,留空将自动生成」
- 多语言:account、viewTriggers、strategyNamePlaceholder 等
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-15 01:41:53 +08:00
WrBug
a64d1edbf4
feat(crypto-tail): 尾盘策略页币安 API 状态监控与重连间隔调整
...
- 尾盘策略页:进入时检测币安 API/WebSocket,异常时红色强提醒
- 异常时提供「重新检测」按钮,不跳转 API 健康页、不做 60s 轮询
- 文案面向小白:无法连接币安 API、需行情数据、稍后重新检测
- 多语言:zh-CN/zh-TW/en 新增 cryptoTailStrategy.binanceApiAlert
- 币安 K 线 WS 重连延迟由 10s 改为 3s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-15 01:09:34 +08:00
WrBug
a62f1bd6e8
feat(cryptotail): 尾盘策略首次满足条件时打印日志
...
- 在价格与时间区间首次满足且本周期未触发时打印日志
- 日志包含:开盘价、收盘价、当前市场价格、方向、策略名
- 日志放在 passMinSpreadCheck 前
- 使用 Caffeine LRU 缓存(容量100)保证每周期只打印一次
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-15 00:58:14 +08:00
WrBug
63ce4107c6
fix(copytrading): 修复跟单 invalid signature 与 orderbook 不存在
...
- tokenId: Activity 解析时写入 trade.tokenId=asset,链上解析时写入 tokenId,优先使用避免与 CLOB 不一致
- Neg Risk: 从 Gamma 读取 negRisk,按市场选择 CTF Exchange / Neg Risk Exchange 签约
- 签名: OrderSigningService 支持 exchangeContract 参数,Credentials 路径与 v 提取与 EIP-712 一致
- 校验: 创建订单前校验 signer 与 account.walletAddress 一致
- TradeResponse/EventResponse/MarketResponse 增加 tokenId、negRisk 等字段
- MarketService 增加 getMarketInfoByTokenId、getNegRiskByConditionId
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-15 00:47:07 +08:00
WrBug
a136d68e8c
fix(cryptotail): 尾盘策略订单簿 WebSocket 订阅与连接管理优化
...
CryptoTailOrderbookWsService:
- 订阅更新时关闭 WS 后重连(移除不可靠的 unsubscribe)
- tokenIds 未变时不关闭 WS,仅更新倒计时与价差预计算
- 重连前检查是否有启用策略,避免创建无订阅的空连接
- 重连延迟改为 3 秒
- connect() 使用 synchronized 保证线程安全
- handleMessage/onBestBid 在 closedForNoStrategies 时提前返回
- tokenToEntries null 日志改为 DEBUG
CryptoTailStrategyService:
- delete() 发布 CryptoTailStrategyChangedEvent
CryptoTailStrategyExecutionService:
- 移除 AUTO 模式价差校验的 INFO 日志
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 22:50:04 +08:00
WrBug
61a5077d4d
fix(crypto-tail): 多策略订阅时增加重试与跳过原因日志
...
- buildSubscriptionMap 中 fetchEventBySlug 失败时不再静默 continue,按原因打 warn/debug 日志
- 新增 fetchEventBySlugWithRetry,失败最多重试 3 次、间隔 1s,避免瞬时失败导致只订阅到其中一个策略
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 21:29:46 +08:00
WrBug
bd529d9041
feat(cryptotail): 尾盘策略打印初始价差
...
- 周期开始预计算 AUTO 价差后打印 baseSpreadUp/baseSpreadDown
- 触发价差校验时打印初始价差、系数、有效最小价差、当前K线价差及是否通过
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 21:00:01 +08:00
WrBug
5cdcc487d4
feat(cryptotail): AUTO 最小价差 100%→50% 动态系数,progress 按毫秒计算
...
- BinanceKlineAutoSpreadService: 缓存 100% 基准价差,新增 getAutoMinSpreadBase
- CryptoTailStrategyExecutionService: 按窗口内毫秒进度算 coefficient,effectiveMinSpread = baseSpread × (1 - 0.5×progress)
- 新增方案文档 docs/crypto-tail-auto-spread-dynamic-coefficient.md
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 20:48:08 +08:00
WrBug
ca2b1acbb9
fix(cryptotail): 尾盘策略下单取消重试并打印完整报错信息
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 20:34:27 +08:00
WrBug
77b681a40e
chore: 跟单订单状态日志与尾盘 auto 系数调整
...
- OrderStatusUpdateService: 移除「检查 N 个30秒前创建的订单是否成交」debug 日志
- BinanceKlineAutoSpreadService: auto 模式最小价差系数由 80% 改为 70%
- CryptoTailStrategyDto: 同步更新自动最小价差注释
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 19:35:37 +08:00
WrBug
c6f9e5db61
fix(cryptotail): 已结算的触发不再请求 getOrder,直接标记 notification_sent=true
...
- 轮询时若 trigger.resolved 为 true,跳过 CLOB getOrder 请求
- 将 notification_sent 设为 true 并保存,避免已结算订单无限轮询
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 18:09:25 +08:00
WrBug
2ec4ae3f98
refactor(cryptotail): 取消 FIXED 模式预签订单,改为触发时再签名
...
- 移除 PeriodContext.preSignedOrderByOutcome,周期开始仅预取参数(账户、解密、费率、CLOB 等)
- ensurePeriodContext 不再预签两个 outcome 的订单
- placeOrderForTrigger 统一 FIXED/RATIO 流程,均于触发时计算 size 并签名提交
- 每次触发仅对当前 outcome 签名一次,避免预签两张仅用一张的浪费
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 16:01:57 +08:00
WrBug
5074bb4f28
fix(order): 修复订单签名 salt 并发碰撞问题
...
- 使用 AtomicLong + 时间戳保证 generateSalt 在并发下唯一
- 避免尾盘策略 FIXED 模式预签双单等场景产生相同 salt 导致订单冲突
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:32:19 +08:00
WrBug
9fef4bea59
feat: 健康检查加币安 API/WS,订单簿 bids 空防护,自动价差历史取 20 根
...
- ApiHealthCheckService: 新增币安 API(ping)、币安 WebSocket(5m/15m 连接状态)
- BinanceKlineService: 连接状态追踪 getConnectionStatuses 供健康检查
- CryptoTailOrderbookWsService: book 事件 bids 为空时不再取 [0],避免 Index 0 out of bounds
- BinanceKlineAutoSpreadService + 文档 + i18n: 历史 K 线由 30 根改为 20 根
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:27:22 +08:00
WrBug
b50e43c239
feat(crypto-tail): 策略最小价差(无/固定/自动) + 前端默认与文案
...
- 后端: 最小价差 DB/Entity/DTO、Binance K线 REST+WS、自动价差 IQR 预计算与执行时校验
- 前端: 最小价差(自动-固定-无),默认自动,label 旁 info 说明,选择自动不展示建议约
- i18n: minSpreadModeTip 说明不写死标的
- 文档: crypto-tail-strategy-min-spread-flow.md
- scripts: Binance K线拉取与 WS 示例
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:16:44 +08:00
WrBug
7ec9311df2
feat(cryptotail): 创建/修改策略时未填标题则自动生成并入库
...
- create: name 为空时生成「尾盘策略-{marketSlugPrefix}-{yyyyMMddHHmmss}」
- update: 未填且原无标题时同样生成并更新
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 13:13:55 +08:00
WrBug
1f6cf1ecaf
feat(cryptotail): 尾盘 TG 改为轮询实现并修复自调用
...
- 新增 notification_sent 字段与 V36 迁移,轮询未发 TG 的 trigger
- 新增 CryptoTailOrderNotificationPollingService:每 5 秒轮询,CLOB getOrder 后发 TG,与跟单一致
- 通过 ApplicationContextAware + getSelf() 解决 @Transactional 自调用问题
- 删除 CryptoTailOrderNotificationSubscriber,移除 WS 推送方式
- Repository 新增 findByStatusAndOrderIdIsNotNullAndNotificationSentFalseOrderByCreatedAtAsc
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 13:11:21 +08:00