v4.5.74

parruda/swarmv4.5.74Aug 17, 2026by ccxt-release[bot]

AI Summary

Adds new exchange endpoints for fiat transactions and trailing stop orders while improving the Continuous Integration pipeline for new integrations.

Key Highlights

  • Added OKX fiat deposit and withdrawal endpoints
  • Added WOO cancel all orders via DELETE endpoint
  • Added XT trailing stop order creation and cancellation
  • Improved CI for scoped live tests for first-time integrations

New Features

  • OKX fiat endpoints
  • WOO cancel all orders
  • XT trailing stop orders
  • CI improvements for scoped live tests

Full Release Notes

## What's Changed
* test: add empty dict test by @ttodua in https://github.com/ccxt/ccxt/pull/29759
* feat(okx): add fiat deposit and withdrawal endpoints by @kroitor in https://github.com/ccxt/ccxt/pull/29769
* fix(doc): correct lighter sdk url by @sc0Vu in https://github.com/ccxt/ccxt/pull/29767
* feat(woo): cancelAllOrders via DELETE /v3/trade/allOrders by @rayBastard in https://github.com/ccxt/ccxt/pull/29763
* feat(woofipro): add fetchOpenInterest and fetchOpenInterests by @rayBastard in https://github.com/ccxt/ccxt/pull/29764
* feat(xt): add fetchTradingFee and fetchTradingFees by @rayBastard in https://github.com/ccxt/ccxt/pull/29765
* test(whitebit): add fetchOpenOrders and fetchClosedOrders static fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29768
* coinex error mapping by @ndubel in https://github.com/ccxt/ccxt/pull/29773
* fix(ws): retain results resolved without a waiter in ts, php and cs clients by @kroitor in https://github.com/ccxt/ccxt/pull/29772
* fix(tokocrypto): declare ticker/24hr as dual-shape like binance does by @kroitor in https://github.com/ccxt/ccxt/pull/29777
* fix(cs): default indexed orderbook snapshot to an empty dict like its siblings by @kroitor in https://github.com/ccxt/ccxt/pull/29776
* fix(cs): count any inbound ws frame as keepalive liveness by @kroitor in https://github.com/ccxt/ccxt/pull/29778
* feat(weex): add createTriggerOrder via capi/v3/algoOrder by @rayBastard in https://github.com/ccxt/ccxt/pull/29766
* fix(bitrue): declare the dapi ticker and klines shapes like their fapi twins by @kroitor in https://github.com/ccxt/ccxt/pull/29780
* fix(binance): declare the dual-shape ticker/price leaves per the api docs by @kroitor in https://github.com/ccxt/ccxt/pull/29781
* feat(krakenfutures): add fetchTradingFees by @rayBastard in https://github.com/ccxt/ccxt/pull/29779
* feat(krakenfutures): add fetchLedger by @rayBastard in https://github.com/ccxt/ccxt/pull/29782
* fix(ci): guard against entry-point imports in exchange files by @kroitor in https://github.com/ccxt/ccxt/pull/29783
* fix(weex): enable has flags for implemented unWatchOrderBook methods by @rayBastard in https://github.com/ccxt/ccxt/pull/29784
* test(whitebit): add fetchMyTrades and fetchOrderTrades static fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29785
* fix(ci): run scoped live tests for first-time exchange integrations by @kroitor in https://github.com/ccxt/ccxt/pull/29787
* fix(base): take the primary symbol from the selected symbols array in private tests by @kroitor in https://github.com/ccxt/ccxt/pull/29788
* fix(base): pass the symbol variable instead of a string literal in leverage-tiers and margin-modes tests by @kroitor in https://github.com/ccxt/ccxt/pull/29789
* fix(cli): prefer the local typescript sources over built artifacts so new integrations work without any build steps by @kroitor in https://github.com/ccxt/ccxt/pull/29790
* fix(cli): correct the inverted partial-function check that reversed method arguments whenever --param was used by @kroitor in https://github.com/ccxt/ccxt/pull/29791
* fix(cli): make --no-keys actually strip credentials loaded from the keys files by @kroitor in https://github.com/ccxt/ccxt/pull/29792
* fix(cli): detect implicit api methods under the ts-sources loader when placing the params object by @kroitor in https://github.com/ccxt/ccxt/pull/29794
* fix(krakenfutures): fix positions REST fail-open and WS crash regressions by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29713
* fix(tokocrypto): unwrap data.list envelope in fetchOHLCV for non-USDT markets by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29664
* chore: reuse go binary in the live-tests section by @carlosmiei in https://github.com/ccxt/ccxt/pull/29712
* chore(tests): add static tests to Watch methods by @carlosmiei in https://github.com/ccxt/ccxt/pull/29795
* chore: fix injectWsMessages sleep by @carlosmiei in https://github.com/ccxt/ccxt/pull/29797
* fix(ci): exclude deleted files from scoped exchange collection by @kroitor in https://github.com/ccxt/ccxt/pull/29799
* refactor: js prop optim by @ttodua in https://github.com/ccxt/ccxt/pull/29650
* fix!(exmo): delist by @ttodua in https://github.com/ccxt/ccxt/pull/29796
* fix(xt): regenerate implicit api to type step-rate endpoints by @kroitor in https://github.com/ccxt/ccxt/pull/29803
* fix(go): compare numeric sort keys numerically in sortBy by @kroitor in https://github.com/ccxt/ccxt/pull/29802
* test(whitebit): add deposit history static fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29810
* feat(xt): add trailing stop order creation and cancellation by @rayBastard in https://github.com/ccxt/ccxt/pull/29811
* fix(nado): watchOrderBook by @sc0Vu in https://github.com/ccxt/ccxt/pull/29808
* docs(woo): add developer.woox.io as primary doc url by @rayBastard in https://github.com/ccxt/ccxt/pull/29812
* fix(bitstamp): accumulate currencies locally instead of a shared options scratch key by @kroitor in https://github.com/ccxt/ccxt/pull/29815
* bitstamp parseOrder id fix by @ndubel in https://github.com/ccxt/ccxt/pull/29809
* feat(lighter): add ws api by @sc0Vu in https://github.com/ccxt/ccxt/pull/29770
* fix(go): mirror the javascript delete semantics on missing keys in remove by @kroitor in https://github.com/ccxt/ccxt/pull/29814
* feat(kucoin): uta fetchPosition new response field updateTime by @Dan-krm in https://github.com/ccxt/ccxt/pull/29805
* fix(deribit): read baseVolume from stats.volume and quoteVolume from stats.volume_notional by @mkzung in https://github.com/ccxt/ccxt/pull/29807
* fix(hashkey): omit the zero last price on dormant listings by @kroitor in https://github.com/ccxt/ccxt/pull/29816
* test(whitebit): add fetchWithdrawals and fetchFundingHistory fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29817
* refactor(woo): dedupe transfer and transaction status parsers by @rayBastard in https://github.com/ccxt/ccxt/pull/29823
* feat(xt): add trailing stop order fetching by @rayBastard in https://github.com/ccxt/ccxt/pull/29818
* fix(lbank): unmap the price band ratios from the absolute price limits by @kroitor in https://github.com/ccxt/ccxt/pull/29819
* feat(xt): add trailing stop orders mass cancellation by @rayBastard in https://github.com/ccxt/ccxt/pull/29826
* test(whitebit): add transfer and fetchAccounts fixtures, fix fetchAcсounts parsing by @rayBastard in https://github.com/ccxt/ccxt/pull/29824
* test(whitebit): add deposit address static fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29831
* chore(woo): audit network mappings against live token networks by @rayBastard in https://github.com/ccxt/ccxt/pull/29827
* fix(php): compare strictly against the filter value in filter by by @kroitor in https://github.com/ccxt/ccxt/pull/29829
* refactor(xt): replace safeValue with typed safe methods by @rayBastard in https://github.com/ccxt/ccxt/pull/29833
* test(whitebit): add setLeverage, fetchBorrowInterest, fetchStatus and withdraw fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29836
* chore(woo): remove dead v2 api section by @rayBastard in https://github.com/ccxt/ccxt/pull/29835
* test(xt): remove stale loadMarkets taker/maker skips by @rayBastard in https://github.com/ccxt/ccxt/pull/29837
* test(whitebit): add fetchTradingFees static fixtures by @rayBastard in https://github.com/ccxt/ccxt/pull/29844
* fix(xt): throw NotSupported for market-type guards instead of BadSymbol by @rayBastard in https://github.com/ccxt/ccxt/pull/29845
* fix(alpaca): quoteVolume was the trade count by @mkzung in https://github.com/ccxt/ccxt/pull/29841
* chore: add ws static tests to different exchanges by @carlosmiei in https://github.com/ccxt/ccxt/pull/29800
* fix(toobit): scale swap baseVolume from contracts to base units by @mkzung in https://github.com/ccxt/ccxt/pull/29842
* fix(delta): read spot quoteVolume from turnover_usd, not the base-denominated turnover by @mkzung in https://github.com/ccxt/ccxt/pull/29840
* feat(woofipro): add margin mode and position margin methods by @rayBastard in https://github.com/ccxt/ccxt/pull/29821
* perf(transpile): skip impossible base-method renames by @carlotestor in https://github.com/ccxt/ccxt/pull/29854
* fix(bitget): price24hPcnt is a ratio, so scale it to a percentage by @mkzung in https://github.com/ccxt/ccxt/pull/29857
* fix(hashkey): scale swap baseVolume from contracts to base units by @mkzung in https://github.com/ccxt/ccxt/pull/29851
* fix(poloniex): scale swap baseVolume from contracts to base units by @mkzung in https://github.com/ccxt/ccxt/pull/29852
* fix(upbit): signed_change_rate is a ratio, so scale it to a percentage by @mkzung in https://github.com/ccxt/ccxt/pull/29855
* fix(toobit): 'pcp' is a ratio, so scale it to a percentage by @mkzung in https://github.com/ccxt/ccxt/pull/29856
* fix!(bybit): fetchOrders classic accounts removal by @ttodua in https://github.com/ccxt/ccxt/pull/29847
* perf(python): drop redundant OrderBookSide __getitem__ override and hoist hot lookups -23% by @carlotestor in https://github.com/ccxt/ccxt/pull/29858
* perf(php): drop exchangeArray on OrderBookSide update -31% by @carlotestor in https://github.com/ccxt/ccxt/pull/29862
* fix(test): tolerate quote-side rounding in the ticker volume identity by @kroitor in https://github.com/ccxt/ccxt/pull/29865
* test(pro): pick most-active market for watchOrderBook live tests by @carlotestor in https://github.com/ccxt/ccxt/pull/29875
* perf(go): bound OrderBookSide index memmove -12% by @carlotestor in https://github.com/ccxt/ccxt/pull/29861
* perf(java): skip BigDecimal for the order book amount field -43% by @carlotestor in https://github.com/ccxt/ccxt/pull/29860
* fix(pro): python ArrayCache tuple index, max_size=0, and clear() reset by @carlotestor in https://github.com/ccxt/ccxt/pull/29870
* fix(binance): single-flight ws auth via existing client futures by @carlotestor in https://github.com/ccxt/ccxt/pull/29878
* refactor(pro): type-hint Python ArrayCache by @carlotestor in https://github.com/ccxt/ccxt/pull/29877
* fix(tests): stop ws OHLCV live tests requesting sub-minute candles by @carlotestor in https://github.com/ccxt/ccxt/pull/29880
* fix(pro): php ArrayCache field-merge, two-field match, and clear() by @carlotestor in https://github.com/ccxt/ccxt/pull/29871
* fix(pro): reset ArrayCache maps on clear and stop short-OHLCV stale tails by @carlotestor in https://github.com/ccxt/ccxt/pull/29869
* refactor(pro): python ArrayCache seen_updates_by_symbol for int counts by @carlotestor in https://github.com/ccxt/ccxt/pull/29884
* fix(pro): csharp ArrayCacheByTimestamp eviction and in-place merge by @carlotestor in https://github.com/ccxt/ccxt/pull/29872
* fix(pro): java ArrayCache hashmap, getLimit, BySide, and move-to-end by @carlotestor in https://github.com/ccxt/ccxt/pull/29873
* perf(cs): single-lock OrderBookSide bisect -61% and atomic Copy() by @carlotestor in https://github.com/ccxt/ccxt/pull/29859
* fix(htx): fetchStatus via live endpoints, drop the dead statuspage hosts by @kroitor in https://github.com/ccxt/ccxt/pull/29876
* fix(krakenfutures): populate market maker/taker so parseTrade computes fees by @rayBastard in https://github.com/ccxt/ccxt/pull/29881
* fix(toobit): send amount for market sell orders by @rayBastard in https://github.com/ccxt/ccxt/pull/29885
* test(pro): add single-flight base ws unit test via client.future by @carlotestor in https://github.com/ccxt/ccxt/pull/29891
* fix(toobit): correct fetchLeverage response parsing and marginMode by @rayBastard in https://github.com/ccxt/ccxt/pull/29893
* fix(php): let ClientTrait spawn and delay take over in the async exchange by @kroitor in https://github.com/ccxt/ccxt/pull/29897
* docs(contributing): require language mirrors for base ws runtime changes by @kroitor in https://github.com/ccxt/ccxt/pull/29898
* fix(build): repair broken Python, PHP and Go base builds on master by @carlotestor in https://github.com/ccxt/ccxt/pull/29895
* fix(pro): store Go ArrayCache counts as ints with seenUpdatesBySymbol by @carlotestor in https://github.com/ccxt/ccxt/pull/29900
* test(java): point the connect-atomicity storm at a blackhole address by @kroitor in https://github.com/ccxt/ccxt/pull/29904
* fix(pro): count the global and the symbol getLimit scopes independently by @kroitor in https://github.com/ccxt/ccxt/pull/29905
* fix: route OKX RPI order book updates by @mvanhorn in https://github.com/ccxt/ccxt/pull/29886
* fix(latoken): drop non-positive book levels and skip the stale-ticker median check by @kroitor in https://github.com/ccxt/ccxt/pull/29906
* fix(bit2c): drop dead zero-amount orders from the full book snapshot by @kroitor in https://github.com/ccxt/ccxt/pull/29907
* fix(binance): skip stocks endpoint if apiKey is "" by @carlosmiei in https://github.com/ccxt/ccxt/pull/29909
* fix(bybit): fetchCrossBorrowRate by @carlosmiei in https://github.com/ccxt/ccxt/pull/29912
* fix(poloniex): remove obsolete swap OHLCV timeframe restrictions by @rayBastard in https://github.com/ccxt/ccxt/pull/29911
* fix(toobit): convert network code to exchange id in withdraw() by @rayBastard in https://github.com/ccxt/ccxt/pull/29910
* chore: fix abstract by @carlosmiei in https://github.com/ccxt/ccxt/pull/29913
* BTSE integration by @yzh-pelle in https://github.com/ccxt/ccxt/pull/27862
* chore: fix ws npm comamnd by @carlosmiei in https://github.com/ccxt/ccxt/pull/29916


**Full Changelog**: https://github.com/ccxt/ccxt/compare/v4.5.73...v4.5.74