CCXT.Collector 2.1.7

dotnet add package CCXT.Collector --version 2.1.7
                    
NuGet\Install-Package CCXT.Collector -Version 2.1.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CCXT.Collector" Version="2.1.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CCXT.Collector" Version="2.1.7" />
                    
Directory.Packages.props
<PackageReference Include="CCXT.Collector" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CCXT.Collector --version 2.1.7
                    
#r "nuget: CCXT.Collector, 2.1.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CCXT.Collector@2.1.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CCXT.Collector&version=2.1.7
                    
Install as a Cake Addin
#tool nuget:?package=CCXT.Collector&version=2.1.7
                    
Install as a Cake Tool

CCXT.Collector

NuGet .NET License

A powerful .NET library for real-time cryptocurrency exchange data collection with unified WebSocket streaming and technical indicator analysis.


πŸ“Š Overview

CCXT.Collector is a comprehensive library that connects to cryptocurrency exchanges worldwide via WebSocket to receive real-time market data and calculate technical indicators. It provides a unified interface for handling data from multiple exchanges, making it easy to build trading bots, market analysis tools, and data collection systems.

✨ Key Features

  • πŸš€ Real-time WebSocket Streaming - Low-latency market data streaming with exponential backoff reconnection
  • πŸ”„ Unified Data Classes - Consistent data format across all exchanges (STicker, SOrderBook, STrade, SCandle)
  • πŸ“ˆ 25+ Technical Indicators - Real-time calculation per exchange/market with optimized algorithms
  • πŸ”Œ Callback Architecture - Asynchronous event-driven data handling with typed callbacks
  • πŸ” Automatic Reconnection - Resilient WebSocket connection management with subscription restoration
  • ⚑ High Performance - System.Text.Json for 20-30% faster parsing, 15-25% less memory usage
  • πŸ“Š Channel Management - Advanced subscription tracking with batch mode and statistics
  • πŸ›‘οΈ Security Ready - Authentication framework for private channels (implementation in progress)

🏒 Supported Exchanges (130 Active)

Exchange Status Management

The library now includes automatic exchange status tracking to prevent connections to closed or unavailable exchanges. When attempting to connect to a closed exchange, you'll receive a clear error message with suggested alternatives.

Major Exchanges by Region
Region Exchanges Count
πŸ‡ΊπŸ‡Έ United States Coinbase, Kraken, Gemini, Bittrex*, Poloniex, Phemex, Crypto.com, and 18 more 25
πŸ‡¨πŸ‡³ China Binance*, OKX, Huobi, Bybit, KuCoin, Gate.io, MEXC, Bitget, and 16 more 24
πŸ‡°πŸ‡· South Korea Upbit, Bithumb, Coinone, Korbit, Gopax, Probit, OKCoinKR 7
πŸ‡―πŸ‡΅ Japan bitFlyer, Coincheck, Bitbank, Zaif, and 4 more 8
πŸ‡ͺπŸ‡Ί Europe Bitstamp, Bitfinex, Bitvavo, EXMO, WhiteBIT, and 8 more 13
πŸ‡¬πŸ‡§ United Kingdom Bitfinex, Bitstamp, CEX.IO, Luno, and 3 more 7
πŸ‡ΈπŸ‡¬ Singapore BitMEX*, Bitrue, Coins.ph, and 5 more 8
🌍 Other Regions Deribit (UAE), BTC Markets (AU), Bitso (MX), NDAX (CA), and more 39

*Note: Exchange locations indicate registration/headquarters, not service availability

Implementation Status (v2.1.7 - 2025-08-13)
Feature Implemented In Progress Planned
WebSocket Clients 132 - -
Korean Exchange WebSockets 6 (Upbit, Bithumb, Coinone, Korbit, Gopax, OKCoinKR) 1 (Probit) -
Major Exchange Implementations 15 (100% Complete) - -
Full WebSocket Implementation 15 - 117
Batch Subscription System 11 4 -
Auto-Resubscription on Reconnect 15 - 117
Authentication/Private Channels - 15 -
Technical Indicators 25+ - 25+ more
Test Coverage 15 exchanges (100% major) - 117 exchanges
βœ… All 15 Major Exchanges (100% Complete)

Binance, Bitget, Bithumb, Bittrex, Bybit, Coinbase, Coinone, Crypto.com, Gate.io, Huobi, Korbit, Kucoin, OKX, Upbit - All functional with standardized WebSocket streaming and batch subscription support

πŸ”’ Security & Testing Status
  • Critical: Authentication implementation needed for private channels
  • Testing: All 15 major exchanges have unified WebSocket test suite
  • Channel Management: Advanced ChannelManager with batch subscription support
  • Security: API key management system under development

πŸ“¦ Installation

NuGet Package Manager

Install-Package CCXT.Collector -Version 2.1.7

.NET CLI

dotnet add package CCXT.Collector --version 2.1.7

Package Reference

<PackageReference Include="CCXT.Collector" Version="2.1.7" />

⚠️ Breaking Changes in v2.1.7

  • Bitget WebSocket: Fixed subscription format with correct instType ("sp" instead of "SPOT") and ping/pong protocol
  • Crypto.com WebSocket: Corrected message parsing and subscription handling
  • Coinone WebSocket: Fixed response_type handling and channel processing
  • Coinbase WebSocket: Changed to level2_batch channel for public access
  • Sample Project: Enhanced with comprehensive testing utilities and multi-exchange support
  • See CHANGELOG for full details

⚠️ Breaking Changes in v2.1.6

  • KuCoin WebSocket: Complete rewrite with dynamic endpoint resolution and proper protocol handling
  • Korbit WebSocket: Migration to v2 API with array-based message format
  • See CHANGELOG for full details

⚠️ Breaking Changes in v2.1.5

  • IMPORTANT: Complete migration from Newtonsoft.Json to System.Text.Json
  • All JSON processing now uses System.Text.Json for better performance and reduced dependencies
  • Added JsonExtensions utility class with safe property access methods
  • Unified subscription handling with MarkSubscriptionActive across all exchanges
  • See CHANGELOG for migration details

⚠️ Breaking Changes in v2.1.2

  • SCandlestick.result changed from single item to List<SCandleItem>
  • OnOrderUpdate event now uses SOrders container instead of single SOrder
  • OnPositionUpdate event now uses SPositions container instead of single SPosition
  • See Migration Guide for details

πŸš€ Quick Start

Basic WebSocket Connection

using CCXT.Collector.Binance;
using CCXT.Collector.Service;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Create WebSocket client
        var client = new BinanceWebSocketClient();
        
        // Register callbacks for real-time data
        client.OnOrderbookReceived += (orderbook) =>
        {
            Console.WriteLine($"Orderbook update: {orderbook.symbol}");
            Console.WriteLine($"Best bid: {orderbook.result.bids[0].price} @ {orderbook.result.bids[0].quantity}");
            Console.WriteLine($"Best ask: {orderbook.result.asks[0].price} @ {orderbook.result.asks[0].quantity}");
        };
        
        client.OnConnected += () => Console.WriteLine("βœ… Connected to Binance");
        client.OnError += (error) => Console.WriteLine($"❌ Error: {error}");
        
        // Connect and subscribe to markets
        await client.ConnectAsync();
        
        // Using the new Market-based subscription (more efficient)
        var market = new Market("BTC", "USDT");
        await client.SubscribeOrderbookAsync(market);
        await client.SubscribeTradesAsync(market);
        
        // Or using traditional string format (backward compatible)
        await client.SubscribeTickerAsync("BTC/USDT");
        
        // Keep the connection alive
        Console.WriteLine("Press any key to stop...");
        Console.ReadKey();
        
        // Cleanup
        await client.DisconnectAsync();
    }
}

Multi-Exchange Data Collection

using CCXT.Collector.Binance;
using CCXT.Collector.Upbit;
using CCXT.Collector.Service;

// Initialize multiple exchanges
var binanceClient = new BinanceWebSocketClient();
var upbitClient = new UpbitWebSocketClient();

// Set up unified callbacks - all exchanges use same data format
Action<STicker> processTicker = (ticker) =>
{
    Console.WriteLine($"[{ticker.exchange}] {ticker.symbol}: " +
                     $"Price={ticker.result.closePrice:F2}, " +
                     $"Volume={ticker.result.volume:F2}");
};

binanceClient.OnTickerReceived += processTicker;
upbitClient.OnTickerReceived += processTicker;

// Connect and subscribe
await Task.WhenAll(
    binanceClient.ConnectAsync(),
    upbitClient.ConnectAsync()
);

// Use Market struct for cleaner code
var btcUsdt = new Market("BTC", "USDT");
var btcKrw = new Market("BTC", "KRW");

await binanceClient.SubscribeTickerAsync(btcUsdt);
await upbitClient.SubscribeTickerAsync(btcKrw);

πŸ“Š Technical Indicators

The library includes 25+ technical indicators. See the Developer Guide for the complete list and usage examples.

βš™οΈ Configuration

{
  "appsettings": {
    "websocket.retry.waiting.milliseconds": "600",
    "use.auto.start": "true",
    "auto.start.exchange.name": "binance",
    "auto.start.symbol.names": "BTC/USDT,ETH/USDT"
  }
}

πŸ—οΈ Architecture

For detailed architecture and system design, see the Developer Guide.

Project Structure

CCXT.Collector/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ Core/             # Core framework components
β”‚   β”œβ”€β”€ Models/           # Data models and structures
β”‚   β”œβ”€β”€ Indicators/       # Technical indicators (25+ indicators)
β”‚   β”œβ”€β”€ Utilities/        # Utility classes
β”‚   └── exchanges/        # Exchange implementations (132 exchanges)
β”‚       β”œβ”€β”€ kr/           # South Korea (7 exchanges)
β”‚       β”œβ”€β”€ us/           # United States (26 exchanges)
β”‚       β”œβ”€β”€ cn/           # China (24 exchanges)
β”‚       └── ...           # 18 more country/region folders
β”œβ”€β”€ tests/                # Test suites
β”œβ”€β”€ samples/              # Example implementations
└── docs/                 # Documentation

πŸ“š Documentation

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

πŸ’¬ Support

πŸ‘₯ Team

Core Development Team


Built with ❀️ by the ODINSOFT Team

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.7 15 8/12/2025
2.1.4 15 8/10/2025
2.1.3 34 8/9/2025
2.1.0 37 8/9/2025
1.5.1 184 9/18/2024
1.4.12 699 1/21/2022
1.4.11 529 1/21/2022
1.3.0 558 11/17/2020
1.2.0 664 3/17/2020

v2.1.7 - Fixed WebSocket implementations for Crypto.com, Coinone, Coinbase, and Bitget exchanges. Enhanced sample project with comprehensive testing utilities. See CHANGELOG.md for details.