精选88ccxt(GitHub Releases)语言与库
ccxt v4.5.75:重构 Binance authenticate,修复多所 WS 鉴权竞态
v4.5.75
推荐理由
Binance 的 authenticate 接口发生破坏性重构(折叠方法),依赖该接口的代码必须同步调整;同时修复了多个主流交易所的 WebSocket 鉴权竞态与数据解析错误,建议量化开发者尽快升级以避免交易或行情中断。
What's Changed
更新内容
- test(bitmex): skip the last-vs-median ticker check through the wind-down by @kroitor in #29914
- bingx: fix websocket balance routing by @AresArtemius in #29936
- fix(poloniex): map futures v3 error codes by @rayBastard in #29920
- fix(krakenfutures): parse unrealizedPnl in parsePosition by @shuxue6662-a11y in #29937
- fix(binance): deduplicate and merge keepAliveStockListenKey into keepAliveListenKey by @kroitor in #29908
- fix(krakenfutures): don't resolve watchPositions with empty list on malformed frame by @shuxue6662-a11y in #29943
- fix(extended): stop account ws frames falling through to handleOrderBook by @carlotestor in #29942
- fix(binance): guard option and stock from the linear/inverse rewrite in authenticate by @kroitor in #29946
- perf(pro): speed up ArrayCache append hot path -63%..-93% by @carlotestor in #29945
- refactor(binance)!: fold authenticateStock into authenticate by @kroitor in #29950
- fix(cs): settle Future.reject once, under the resolve lock by @kroitor in #29951
- fix(poloniex): TRC20 withdrawals must send network TRX, not TRON by @rayBastard in #29954
- ci: move language workflows back to GitHub-hosted runners by @frosty00 in #29957
- Revert "ci: move language workflows back to GitHub-hosted runners" by @frosty00 in #29959
- fix(build): go ws client casts panic when the transport hands a *WSClient by @carlosmiei in #29962
- fix(cs): normalize mixed numeric boxes in sortBy keys by @kroitor in #29964
- fix(poloniex): map unified clientOrderId to clOrdId for swap orders by @rayBastard in #29966
- fix(phemex): apply amount precision to swap order quantity in createOrder by @rayBastard in #29967
- refactor(binance): centralize user-data type derivation in resolveAuthType by @kroitor in #29969
- fix(krakenfutures): map open_orders cancel reason to unified status by @official-burak in #29970
- fix(kucoin): priceChgPct on contracts is a ratio, so scale it by @mkzung in #29918
- fix(kraken): watchOHLCV returned strings in descending order by @mkzung in #29976
- fix(toobit): strip the _OPEN and _CLOSE suffix from the order side by @mkzung in #29974
- fix(foxbit): drop the misspelt fecthOrderBook capability flag by @mkzung in #29973
- feat(base): ws auth single-flight primitives by @kroitor in #29903
- fix(bitmex): the watchPositions flag is spelled watchPostions by @mkzung in #29972
- refactor(binance): migrate authenticate to the singleFlight primitives by @kroitor in #29977
- fix(aster): prevent concurrent ws auth races via base single-flight guard by @kroitor in #29984
- fix(binance): reject the auth flight on an empty listenKey by @kroitor in #29986
- fix(bingx): prevent concurrent ws auth races via base single-flight guard by @kroitor in #29987
- test(exchange): exempt option markets from ticker percentage bounds by @kroitor in #29988
- chore(tests): store JSON request fixture output as objects by @carlotestor in #29980
- fix(toobit): a reduce-only order was sent on the opposite side by @mkzung in #29982
- perf(js): precise methods (version 1) by @ttodua in #29952
- fix(phemex): correct fetchPositionsADLRank jsdoc name and unify scale getters by @rayBastard in #29985
- chore: remove this[method] from rest side by @carlosmiei in #30003
- revert(pro): drop Client.resolve pending-results queue by @carlotestor in #30008
- fix(java): guard WsClient futures/rejections with a monitor by @carlotestor in #30004
- fix(bitmex, cryptocom): watchPositions never resolves for a symbol-filtered subscription by @mkzung in #29981
- fix(binance): load stock markets if in options by @carlosmiei in #30010
- refactor(pro): inline the ws auth single-flight logic into authenticate() by @carlotestor in #29992
- test(bitmex): 通过 @kroitor 在 #29914 中跳过清算期间的最后价格与中位数行情检查
- bingx: 通过 @AresArtemius 在 #29936 中修复 WebSocket 余额路由问题
- fix(poloniex): 通过 @rayBastard 在 #29920 中映射期货 v3 错误代码
- fix(krakenfutures): 通过 @shuxue6662-a11y 在 #29937 中的 parsePosition 解析未实现盈亏 (unrealizedPnl)
- fix(binance): 通过 @kroitor 在 #29908 中去重并将 keepAliveStockListenKey 合并到 keepAliveListenKey 中
- fix(krakenfutures): 通过 @shuxue6662-a11y 在 #29943 中避免在格式错误的帧上使用空列表解析 watchPositions
- fix(extended): 通过 @carlotestor 在 #29942 中阻止账户 WebSocket 帧落入 handleOrderBook 处理逻辑
- fix(binance): 通过 @kroitor 在 #29946 中在 authenticate 期间保护期权和股票免受线性/反向重写影响
- perf(pro): 通过 @carlotestor 在 #29945 中加速 ArrayCache append 热路径,性能提升 63%..93%
- refactor(binance)!: 通过 @kroitor 在 #29950 中将 authenticateStock 折叠进 authenticate
- fix(cs): 通过 @kroitor 在 #29951 中在 resolve 锁下一次性结算 Future.reject
- fix(poloniex): 通过 @rayBastard 在 #29954 中 TRC20 提币必须发送网络 TRX,而非 TRON
- ci: 通过 @frosty00 在 #29957 中将语言工作流移回 GitHub 托管的运行器
- Revert "ci: move language workflows back to GitHub-hosted runners" by @frosty00 in #29959
- fix(build): 通过 @carlosmiei 在 #29962 中修复当传输层交付 *WSClient 时 Go WebSocket 客户端转换引发的 panic
- fix(cs): 通过 @kroitor 在 #29964 中规范化 sortBy 键中的混合数值框
- fix(poloniex): 通过 @rayBastard 在 #29966 中为掉期订单将统一客户端 orderClientId 映射为 clOrdId
- fix(phemex): 通过 @rayBastard 在 #29967 中在 createOrder 中将数量精度应用于掉期订单数量
- refactor(binance): 通过 @kroitor 在 #29969 中将用户数据类型推导集中到 resolveAuthType 中
- fix(krakenfutures): 通过 @official-burak 在 #29970 中将 open_orders 取消原因映射为统一状态
- fix(kucoin): 合约上的 priceChgPct 是比率,因此需进行缩放,由 @mkzung 在 #29918 中完成
- fix(kraken): 通过 @mkzung 在 #29976 中修复 watchOHLCV 以降序返回字符串的问题
- fix(toobit): 通过 @mkzung 在 #29974 中从订单方向剥离 _OPEN 和 _CLOSE 后缀
- fix(foxbit): 由 @mkzung 在 #29973 中移除拼写错误的 fecthOrderBook 功能标志
- feat(base): 由 @kroitor 在 #29903 中添加 ws auth single-flight 原语
- fix(bitmex): 由 @mkzung 在 #29972 中修正 watchPositions 标志的拼写错误(原为 watchPostions)
- refactor(binance): 由 @kroitor 在 #29977 中将 authenticate 迁移至 singleFlight 原语
- fix(aster): 由 @kroitor 在 #29984 中通过 base single-flight guard 防止并发 ws auth 竞争
- fix(binance): 由 @kroitor 在 #29986 中拒绝空 listenKey 上的 auth flight
- fix(bingx): 由 @kroitor 在 #29987 中通过 base single-flight guard 防止并发 ws auth 竞争
- test(exchange): 由 @kroitor 在 #29988 中将期权市场从 ticker 百分比边界中排除
- chore(tests): 由 @carlotestor 在 #29980 中将 JSON 请求 fixture 输出存储为对象
- fix(toobit): 由 @mkzung 在 #29982 中修复了减少单被发送到相反方向的问题
- perf(js): 精确方法(版本 1) by @ttodua in #29952
- fix(phemex): 由 @rayBastard 在 #29985 中修正 fetchPositionsADLRank jsdoc 名称并统一 scale getters
- chore: 由 @carlosmiei 在 #30003 中从 rest 端移除 this[method]
- revert(pro): 由 @carlotestor 在 #30008 中移除 Client.resolve pending-results 队列
- fix(java): 由 @carlotestor 在 #30004 中使用 monitor 保护 WsClient futures/rejections
- fix(bitmex, cryptocom): 由 @mkzung 在 #29981 中修复针对符号过滤订阅时 watchPositions 永不解析的问题
- fix(binance): 由 @carlosmiei 在 #30010 中在 options 模式下加载 stock markets
- refactor(pro): 由 @carlotestor 在 #29992 中将 ws auth single-flight 逻辑内联至 authenticate() 中
New Contributors
新贡献者
- @shuxue6662-a11y made their first contribution in #29937
- @official-burak made their first contribution in #29970
- @shuxue6662-a11y 在 #29937 中完成了首次贡献
- @official-burak 在 #29970 中完成了首次贡献
Full Changelog: v4.5.74...v4.5.75
完整更新日志: v4.5.74...v4.5.75
更进一步:量化金融体系
看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力