Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
39905ed
feat(cafearz): add initial implementation of cafearz exchange
Oct 10, 2025
c61765c
docs: update changelog for v4.9.5 release with Cafearz exchange integ…
Oct 10, 2025
572a0ce
refactor: use extend method for ticker object construction
Oct 11, 2025
0f906b4
refactor(markets): extract market parsing logic into separate method
Oct 11, 2025
df8e1f2
fix: disable spot trading and enable otc trading in cafearz exchange
Oct 11, 2025
5a185e0
feat(exchange): add Bitbarg exchange integration
Oct 11, 2025
d23a019
feat(bydfi): add initial implementation of bydfi exchange integration
Oct 11, 2025
9d46aa6
feat: transpiled files
Oct 11, 2025
a343db7
feat(kifpool): add initial exchange integration with market data endp…
mohammadnasher Oct 13, 2025
74d19da
fix(tetherland): update api url and improve number parsing
mohammadnasher Oct 13, 2025
f307d24
docs: update CHANGELOG.md with Tetherland Exchange fixes
mohammadnasher Oct 13, 2025
abb5785
fix(abantether): update API endpoints and response parsing
mohammadnasher Oct 13, 2025
ca37f70
fix(ticker): update ticker parsing logic for IRT and USDT pairs
mohammadnasher Oct 13, 2025
8f8f1ec
docs: update changelog with Twox Exchange ticker parsing enhancements
mohammadnasher Oct 13, 2025
c1c2da8
fix(afratether): update market and ticker parsing for USDT/IRR pairs
mohammadnasher Oct 13, 2025
bd04244
docs: update changelog with Afratether Exchange changes
mohammadnasher Oct 13, 2025
3f1f00f
docs: update changelog for v4.9.7 release
mohammadnasher Oct 13, 2025
252adbb
fix(pooleno): integrate and implement pooleno exchange
mohammadnasher Oct 13, 2025
35939b2
feat(mazdax): add initial implementation of Mazdax exchange integration
mohammadnasher Oct 13, 2025
db9079e
feat(pingi): add initial implementation for Pingi exchange integration
mohammadnasher Oct 13, 2025
d124cbb
feat(markets): add support for typed market requests and parsing
mohammadnasher Oct 14, 2025
67b5b09
fix(arzplus): remove redundant otcMarkets fetch and update market typ…
mohammadnasher Oct 14, 2025
acf741d
refactor(arzplus): remove default 'type' param from market methods
mohammadnasher Oct 14, 2025
ccc66a9
refactor: remove commented code and clean up market parsing
mohammadnasher Oct 14, 2025
866d0a3
feat: add new exchanges (kifpoolme, mazdax, pingi, pooleno) and updat…
mohammadnasher Oct 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 188 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,193 @@
# Changelog

## v4.9.10 - 2025-10-13

### Added

**Pingi Exchange Integration**: Complete OTC trading support for Pingi exchange

- Initial implementation with abstract class and public API endpoints
- OTC market data fetching capabilities (`fetchMarkets`)
- Parses market data from prices endpoint with real-time trading statistics
- Supports multiple quote currencies including IRT (Iranian Toman) and USDT
- Extracts market volume, price ranges (min/max), and current price data
- Handles market identification via underscore-separated format (BASE_QUOTE)
- Real-time ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Fetches 24h market statistics for all available symbols
- Includes price change tracking (absolute and percentage calculated from start/current price)
- Provides high/low prices, open/close prices, and volume data
- Returns current market price with 24h price movement
- OHLCV candlestick data (`fetchOHLCV`) supporting multiple timeframes
- Timeframes: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w
- Fetches historical price data with open, high, low, close, and volume
- Uses UDF (Universal Data Feed) format for chart data
- Supports custom time ranges via from and to parameters
- Returns properly formatted OHLCV arrays for charting
- Type definitions and parsing logic for OTC markets
- Integration with Pingi API v5:
- Markets/Tickers: https://api5.pingi.co/trading/market/prices/
- OHLCV: https://api5.pingi.co/trading/udf/history/

**Mazdax Exchange Integration**: Complete OTC trading support for Mazdax exchange

- Initial implementation with abstract class and public API endpoints
- OTC market data fetching capabilities (`fetchMarkets`)
- Parses market data from symbols endpoint with detailed trading parameters
- Supports IRR (Iranian Rial) as quote currency
- Extracts market precision, fees (taker/maker), and order size limits
- Handles active/tradable market status filtering
- Real-time ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Fetches 24h rolling price statistics for all available symbols
- Includes price change tracking (absolute and percentage)
- Provides bid/ask prices, open/high/low prices, and volume data
- Supports timestamp-based data freshness
- OHLCV candlestick data (`fetchOHLCV`) supporting multiple timeframes
- Timeframes: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w
- Fetches historical price data with open, high, low, close, and volume
- Supports custom time ranges via starttime and endtime parameters
- Configurable limit for number of candles returned (up to 1000)
- Order book depth (`fetchOrderBook`)
- Fetches bid/ask levels with price and quantity information
- Configurable depth limit for order book entries
- Real-time order book snapshots
- Type definitions and parsing logic for OTC markets
- Integration with Mazdax API:
- Markets: https://api.mazdax.ir/market/symbols
- Tickers: https://api.mazdax.ir/market/rollingprice
- OHLCV: https://api.mazdax.ir/market/candle
- Order Book: https://api.mazdax.ir/market/order

## v4.9.8 - 2025-10-13

### Added

**Pooleno Exchange Integration**: Complete spot trading support for Pooleno exchange

- Initial implementation with abstract class and public API endpoint
- Spot market data fetching capabilities (`fetchMarkets`)
- Parses market data from payload array with baseAsset/quoteAsset pairs
- Supports multiple quote currencies including TMN (Toman) and USDT
- Creates markets based on API-provided asset pairs
- Supports retrieving all available trading pairs
- Real-time ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Fetches current prices for all available symbols
- Supports filtering by specific symbols or fetching all tickers
- Parses price data with separate handling for TMN and USDT pairs
- Includes 24h price change (absolute and percentage) from sparkline data
- Provides market data including 24h high/low, volume, and market cap
- Type definitions and parsing logic for spot markets
- Integration with Pooleno API v1:
- Markets/Tickers: https://api-beta.pooleno.ir/api/v1/tokens/public
- Comprehensive price data parsing:
- For TMN pairs: Uses `priceTMN` field
- For USDT pairs: Uses `price` field with `volume24h`
- Extracts sparkline data for change tracking
- Parses market metadata including high24h, low24h, volume24h, and marketCap

## v4.9.7 - 2025-10-13

### Fixed

**Twox Exchange**: Enhanced ticker data parsing with complete price information

- Fixed `parseTicker` to properly extract and map `sellPrice`, `buyPrice`, and `latestPrice` fields
- Added proper bid/ask price population based on quote currency type
- Implemented correct last price logic (uses `sellPrice` for IRT pairs, `latestPrice` for USDT pairs)
- Added price change tracking with separate `sellPriceChange` and `buyPriceChange` handling
- Populated percentage field with `priceChangePercent` from API response
- Updated example comment to reflect actual API response structure

**Afratether Exchange**: Updated market and ticker parsing for USDT/IRR pairs

- Changed market type from `spot` to `otc` to reflect OTC trading model
- Updated `parseMarket` to use fixed quote currency (IRR) instead of dynamic quote from API
- Modified `parseTicker` to extract bid/ask prices from `prices.IRR` object structure
- Implemented proper price parsing with `price_sell` and `price_buy` fields
- Added 24h change rate tracking with `changeRate24h` field
- Fixed symbol construction to use proper format (base/quote)
- Updated example comments to reflect new API response structure with IRR pricing

## v4.9.6 - 2025-10-12

### Added

**Kifpool Exchange Integration**: Complete spot trading support for Kifpool exchange

- Initial implementation with abstract class and public API endpoint
- Spot market data fetching capabilities (`fetchMarkets`)
- Parses market data for multiple quote currencies (USDT and IRT)
- Creates separate markets for each base/quote pair combination
- Support for retrieving all available trading pairs
- Real-time ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Fetches buy and sell prices for specified symbols
- Supports filtering by specific symbols or fetching all tickers
- Parses bid/ask prices from market data
- OHLCV candlestick data (`fetchOHLCV`) supporting multiple timeframes
- Timeframes: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w
- Fetches historical price data with open, high, low, close, and volume
- Supports custom time ranges via fromTs and toTs parameters
- Configurable limit for number of candles returned
- Type definitions and parsing logic for spot markets
- Integration with Kifpool API:
- Markets/Tickers: https://api.kifpool.app/api/spot/price
- OHLCV: https://api.kifpool.app/api/spot/tickers/1m

### Fixed

**Tetherland Exchange**: Critical fixes for API endpoint and data parsing

- Updated public API endpoint from `api.teterlands.com` to `service.tetherland.com`
- Fixed market data parsing by replacing `safeDict` with `safeList` for array responses
- Improved number parsing robustness using `asFloat` with comma removal for price data
- Enhanced ticker price parsing to handle formatted number strings correctly

## v4.9.5 - 2025-10-10

### Added

**Cafearz Exchange Integration**: Complete support for Cafearz exchange

- Initial implementation with abstract class and public API endpoint
- Market data fetching capabilities (`fetchMarkets`)
- Ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Type definitions and parsing logic for market data
- Support for retrieving real-time trading pair information

**Bitbarg Exchange Integration**: Complete support for Bitbarg exchange

- Initial implementation with abstract class and public API endpoint
- Market data fetching capabilities (`fetchMarkets`)
- Ticker price endpoints (`fetchTicker`, `fetchTickers`)
- Type definitions and parsing logic for market data
- Support for retrieving real-time trading pair information with IRT quote
- Integration with Bitbarg API v1 (https://api.bitbarg.com/api/v1/currencies)

**Bydfi Exchange Integration**: Complete spot trading support for Bydfi exchange

- Initial implementation with abstract class and dual API endpoints architecture
- `public` API endpoint: https://www.bydfi.com
- `quote` API endpoint: https://quote.bydfi.pro
- Spot market data fetching capabilities (`fetchMarkets`)
- Parses market metadata including base/quote coins, precision settings, trading limits
- Supports active market filtering based on visibility and trading permissions
- CSV-formatted ticker parsing with comprehensive price data (`fetchTicker`, `fetchTickers`)
- Parses semicolon-separated ticker data with 11 fields per market
- Includes last price, 24h high/low, volume, bid/ask prices, price change percentage
- Order book depth data (`fetchOrderBook`) with bid/ask information
- Supports configurable depth limit
- Returns price and amount for each order level
- OHLCV candlestick data (`fetchOHLCV`) supporting multiple timeframes
- Timeframes: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w, 1M
- TradingView-compatible historical data format
- Returns open, high, low, close, volume, and timestamp arrays
- Type definitions and parsing logic for spot markets
- Proper API method routing using `quoteGetTickers` and `quoteGetMkpaiDepthV2` for quote endpoint
- Integration with Bydfi API v1:
- Markets: https://www.bydfi.com/api/spot/product/list
- Tickers: https://quote.bydfi.pro/tickers
- Order Book: https://quote.bydfi.pro/mkpai/depth-v2
- OHLCV: https://www.bydfi.com/api/tv/tradingView/history

## v4.9.4 - 2025-10-08

### Added
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CCXT – CryptoCurrency eXchange Trading Library

[![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-137-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)
[![NPM Downloads](https://img.shields.io/npm/dy/ccxt.svg)](https://www.npmjs.com/package/ccxt) [![npm](https://img.shields.io/npm/v/ccxt.svg)](https://npmjs.com/package/ccxt) [![PyPI](https://img.shields.io/pypi/v/ccxt.svg)](https://pypi.python.org/pypi/ccxt) [![NuGet version](https://img.shields.io/nuget/v/ccxt)](https://www.nuget.org/packages/ccxt) [![GoDoc](https://pkg.go.dev/badge/github.com/ccxt/ccxt/go/v4?utm_source=godoc)](https://godoc.org/github.com/ccxt/ccxt/go/v4) [![Discord](https://img.shields.io/discord/690203284119617602?logo=discord&logoColor=white)](https://discord.gg/ccxt) [![Supported Exchanges](https://img.shields.io/badge/exchanges-144-blue.svg)](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [![Follow CCXT at x.com](https://img.shields.io/twitter/follow/ccxt_official.svg?style=social&label=CCXT)](https://x.com/ccxt_official)

A `JavaScript` / `Python` / `PHP` / `C#` / `Go` library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets and merchant APIs.

Expand Down Expand Up @@ -243,20 +243,20 @@ console.log(version, Object.keys(exchanges));
All-in-one browser bundle (dependencies included), served from a CDN of your choice:

<<<<<<< HEAD
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.4/dist/ccxt.browser.min.js
* unpkg: https://unpkg.com/ccxt@4.9.4/dist/ccxt.browser.min.js
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.10/dist/ccxt.browser.min.js
* unpkg: https://unpkg.com/ccxt@4.9.10/dist/ccxt.browser.min.js
=======
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.4/dist/ccxt.browser.min.js
* unpkg: https://unpkg.com/ccxt@4.9.4/dist/ccxt.browser.min.js
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.9.10/dist/ccxt.browser.min.js
* unpkg: https://unpkg.com/ccxt@4.9.10/dist/ccxt.browser.min.js
>>>>>>> master

CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.

```HTML
<<<<<<< HEAD
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.4/dist/ccxt.browser.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.10/dist/ccxt.browser.min.js"></script>
=======
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.4/dist/ccxt.browser.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.9.10/dist/ccxt.browser.min.js"></script>
>>>>>>> master
console.log (ccxt.exchanges) // print all available exchanges
```
Expand Down
4 changes: 2 additions & 2 deletions cs/ccxt/api/abantether.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ public partial class abantether : Exchange
{
public abantether (object args = null): base(args) {}

public async Task<object> publicGetManagementAllCoins (object parameters = null)
public async Task<object> publicGetManagerCoinsData (object parameters = null)
{
return await this.callAsync ("publicGetManagementAllCoins",parameters);
return await this.callAsync ("publicGetManagerCoinsData",parameters);
}

}
19 changes: 19 additions & 0 deletions cs/ccxt/api/bitbarg.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// -------------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -------------------------------------------------------------------------------

namespace ccxt;

public partial class bitbarg : Exchange
{
public bitbarg (object args = null): base(args) {}

public async Task<object> publicGetApiV1Currencies (object parameters = null)
{
return await this.callAsync ("publicGetApiV1Currencies",parameters);
}

}
34 changes: 34 additions & 0 deletions cs/ccxt/api/bydfi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// -------------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -------------------------------------------------------------------------------

namespace ccxt;

public partial class bydfi : Exchange
{
public bydfi (object args = null): base(args) {}

public async Task<object> publicGetApiSpotProductList (object parameters = null)
{
return await this.callAsync ("publicGetApiSpotProductList",parameters);
}

public async Task<object> publicGetApiTvTradingViewHistory (object parameters = null)
{
return await this.callAsync ("publicGetApiTvTradingViewHistory",parameters);
}

public async Task<object> quoteGetTickers (object parameters = null)
{
return await this.callAsync ("quoteGetTickers",parameters);
}

public async Task<object> quoteGetMkpaiDepthV2 (object parameters = null)
{
return await this.callAsync ("quoteGetMkpaiDepthV2",parameters);
}

}
19 changes: 19 additions & 0 deletions cs/ccxt/api/cafearz.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// -------------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -------------------------------------------------------------------------------

namespace ccxt;

public partial class cafearz : Exchange
{
public cafearz (object args = null): base(args) {}

public async Task<object> publicGetApiClientV1CurrenciesPricesDigital (object parameters = null)
{
return await this.callAsync ("publicGetApiClientV1CurrenciesPricesDigital",parameters);
}

}
24 changes: 24 additions & 0 deletions cs/ccxt/api/kifpoolme.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// -------------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -------------------------------------------------------------------------------

namespace ccxt;

public partial class kifpoolme : Exchange
{
public kifpoolme (object args = null): base(args) {}

public async Task<object> publicGetApiSpotPrice (object parameters = null)
{
return await this.callAsync ("publicGetApiSpotPrice",parameters);
}

public async Task<object> publicGetApiSpotTickers1m (object parameters = null)
{
return await this.callAsync ("publicGetApiSpotTickers1m",parameters);
}

}
34 changes: 34 additions & 0 deletions cs/ccxt/api/mazdax.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// -------------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -------------------------------------------------------------------------------

namespace ccxt;

public partial class mazdax : Exchange
{
public mazdax (object args = null): base(args) {}

public async Task<object> publicGetMarketSymbols (object parameters = null)
{
return await this.callAsync ("publicGetMarketSymbols",parameters);
}

public async Task<object> publicGetMarketRollingprice (object parameters = null)
{
return await this.callAsync ("publicGetMarketRollingprice",parameters);
}

public async Task<object> publicGetMarketCandle (object parameters = null)
{
return await this.callAsync ("publicGetMarketCandle",parameters);
}

public async Task<object> publicGetMarketOrder (object parameters = null)
{
return await this.callAsync ("publicGetMarketOrder",parameters);
}

}
Loading
Loading