GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - knowm/XChange: XChange is a Java library providing a streamlined API for interacting with 60+ Bitcoin and Altcoin exchanges providing a consistent interface for trading and accessing market data.

BranchesTags
Open more actions menu

Latest commit

 

History

14,597 Commits
14,597 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.junie/memory
.junie/memory
 
 
.proxyai/checkpoints/01181a67-68da-4c8a-a40b-1209a9862d51
.proxyai/checkpoints/01181a67-68da-4c8a-a40b-1209a9862d51
 
 
etc
etc
 
 
xchange-ascendex
xchange-ascendex
 
 
xchange-bibox
xchange-bibox
 
 
xchange-binance
xchange-binance
 
 
xchange-bitcoincore
xchange-bitcoincore
 
 
xchange-bitcoinde
xchange-bitcoinde
 
 
xchange-bitfinex
xchange-bitfinex
 
 
xchange-bitflyer
xchange-bitflyer
 
 
xchange-bitget-futures
xchange-bitget-futures
 
 
xchange-bitget
xchange-bitget
 
 
xchange-bithumb
xchange-bithumb
 
 
xchange-bitso
xchange-bitso
 
 
xchange-bitstamp
xchange-bitstamp
 
 
xchange-blockchain
xchange-blockchain
 
 
xchange-btcmarkets
xchange-btcmarkets
 
 
xchange-btcturk
xchange-btcturk
 
 
xchange-bybit
xchange-bybit
 
 
xchange-cexio
xchange-cexio
 
 
xchange-coinbase
xchange-coinbase
 
 
xchange-coincheck
xchange-coincheck
 
 
xchange-coinjar
xchange-coinjar
 
 
xchange-coinmarketcap
xchange-coinmarketcap
 
 
xchange-coinmate
xchange-coinmate
 
 
xchange-coinone
xchange-coinone
 
 
xchange-coinsph
xchange-coinsph
 
 
xchange-core
xchange-core
 
 
xchange-cryptocom
xchange-cryptocom
 
 
xchange-dase
xchange-dase
 
 
xchange-deribit
xchange-deribit
 
 
xchange-dvchain
xchange-dvchain
 
 
xchange-enigma
xchange-enigma
 
 
xchange-examples
xchange-examples
 
 
xchange-exmo
xchange-exmo
 
 
xchange-gateio-v4
xchange-gateio-v4
 
 
xchange-gemini
xchange-gemini
 
 
xchange-hitbtc
xchange-hitbtc
 
 
xchange-huobi
xchange-huobi
 
 
xchange-independentreserve
xchange-independentreserve
 
 
xchange-kraken
xchange-kraken
 
 
xchange-krakenfutures
xchange-krakenfutures
 
 
xchange-kucoin
xchange-kucoin
 
 
xchange-latoken
xchange-latoken
 
 
xchange-luno
xchange-luno
 
 
xchange-mercadobitcoin
xchange-mercadobitcoin
 
 
xchange-okex
xchange-okex
 
 
xchange-openexchangerates
xchange-openexchangerates
 
 
xchange-paribu
xchange-paribu
 
 
xchange-paymium
xchange-paymium
 
 
xchange-simulated
xchange-simulated
 
 
xchange-stream-binance
xchange-stream-binance
 
 
xchange-stream-bitfinex
xchange-stream-bitfinex
 
 
xchange-stream-bitget
xchange-stream-bitget
 
 
xchange-stream-bitstamp
xchange-stream-bitstamp
 
 
xchange-stream-btcmarkets
xchange-stream-btcmarkets
 
 
xchange-stream-bybit
xchange-stream-bybit
 
 
xchange-stream-cexio
xchange-stream-cexio
 
 
xchange-stream-coincheck
xchange-stream-coincheck
 
 
xchange-stream-coinjar
xchange-stream-coinjar
 
 
xchange-stream-coinmate
xchange-stream-coinmate
 
 
xchange-stream-coinsph
xchange-stream-coinsph
 
 
xchange-stream-core
xchange-stream-core
 
 
xchange-stream-cryptocom
xchange-stream-cryptocom
 
 
xchange-stream-deribit
xchange-stream-deribit
 
 
xchange-stream-gateio
xchange-stream-gateio
 
 
xchange-stream-gemini-v2
xchange-stream-gemini-v2
 
 
xchange-stream-gemini
xchange-stream-gemini
 
 
xchange-stream-hitbtc
xchange-stream-hitbtc
 
 
xchange-stream-huobi
xchange-stream-huobi
 
 
xchange-stream-kraken-v2
xchange-stream-kraken-v2
 
 
xchange-stream-kraken
xchange-stream-kraken
 
 
xchange-stream-krakenfutures
xchange-stream-krakenfutures
 
 
xchange-stream-kucoin
xchange-stream-kucoin
 
 
xchange-stream-okex
xchange-stream-okex
 
 
xchange-stream-service-core
xchange-stream-service-core
 
 
xchange-stream-service-netty
xchange-stream-service-netty
 
 
xchange-truefx
xchange-truefx
 
 
xchange-upbit
xchange-upbit
 
 
xchange-yobit
xchange-yobit
 
 
xchange-zaif
xchange-zaif
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CONTRIBUTORS
CONTRIBUTORS
 
 
LICENSE
LICENSE
 
 
PROXYAI.md
PROXYAI.md
 
 
README.md
README.md
 
 
jitpack.yml
jitpack.yml
 
 
pom.xml
pom.xml
 
 

Repository files navigation

XChange XChange

Discord Java CI with Maven on Push

XChange is a Java library providing a simple and consistent API for interacting with 60+ Bitcoin and other cryptocurrency exchanges, providing a consistent interface for trading and accessing market data.

A big thanks to all the contributors who have helped make XChange what it is today! ❤️

Important!

The world of Bitcoin changes quickly and XChange is no exception. For the latest bugfixes and features you should use the snapshot jars or build yourself from the develop branch. See below for more details about building with Maven. To report bugs and see what issues people are currently working on see the issues page.

Description

XChange is a Java based library providing a simple and consistent API for interacting with a diverse set of cryptocurrency exchanges.

Basic usage is very simple: Create an Exchange instance, get the appropriate service, and request data. More complex usages are progressively detailed below.

Integration status

Exchange Status
bitfinex status
bitget status
deribit status
gate.io status
kraken status
stream-bitfinex status
stream-deribit status
stream-kraken-v2 status

REST API

Public Market Data

To use public APIs which do not require authentication:

Exchange bitstamp = ExchangeFactory.INSTANCE.createExchange(BitstampExchange.class);
MarketDataService marketDataService = bitstamp.getMarketDataService();
Ticker ticker = marketDataService.getTicker(CurrencyPair.BTC_USD);
System.out.println(ticker.toString());

Private Account Info

To use APIs which require authentication, create an ExchangeSpecification with your API credentials and pass this to createExchange():

ExchangeSpecification exSpec = new BitstampExchange().getDefaultExchangeSpecification();
exSpec.setUserName("34387");
exSpec.setApiKey("a4SDmpl9s6xWJS5fkKRT6yn41vXuY0AM");
exSpec.setSecretKey("sisJixU6Xd0d1yr6w02EHCb9UwYzTNuj");
Exchange bitstamp = ExchangeFactory.INSTANCE.createExchange(exSpec);

Please Note: while most exchanges use just an API key and secret key, others (such as username on Bitstamp or passphrase on Coinbase Pro) are exchange-specific. For more examples of adding the keys to the ExchangeSpecification, including storing them in a configuration file, see Frequently Asked Questions.

Once you have an authenticated Exchange, the private API services, AccountService and TradeService, can be used to access private data:

// Get the account information
AccountService accountService = bitstamp.getAccountService();
AccountInfo accountInfo = accountService.getAccountInfo();
System.out.println(accountInfo.toString());

All exchange implementations expose the same API, but you can also directly access the underlying "raw" data from the individual exchanges if you need to.

Websocket API

The above API is usually fully supported on all exchanges and is best used for occasional requests and polling on relatively long intervals. Many exchanges, however, heavily limit the frequency that these requests can be made, and advise instead that you use their websocket API if you need streaming or real-time data.

For a smaller number of exchanges, the websocket-based StreamingExchange API is also available. This uses Reactive streams to allow you to efficiently subscribe to changes relating to thousands of coin pairs without requiring large numbers of threads.

You will need to import an additional dependency for the exchange you are using (see below), then example usage is as follows:

// Use StreamingExchangeFactory instead of ExchangeFactory
StreamingExchange exchange = StreamingExchangeFactory.INSTANCE.createExchange(BitstampStreamingExchange.class);

// Connect to the Exchange WebSocket API. Here we use a blocking wait.
exchange.connect().blockingAwait();

// Subscribe to live trades update.
Disposable subscription1 = exchange.getStreamingMarketDataService()
    .getTrades(CurrencyPair.BTC_USD)
    .subscribe(
        trade -> LOG.info("Trade: {}", trade),
        throwable -> LOG.error("Error in trade subscription", throwable));

// Subscribe order book data with the reference to the subscription.
Disposable subscription2 = exchange.getStreamingMarketDataService()
    .getOrderBook(CurrencyPair.BTC_USD)
    .subscribe(orderBook -> LOG.info("Order book: {}", orderBook));

// Wait for a while to see some results arrive
Thread.sleep(20000);

// Unsubscribe
subscription1.dispose();
subscription2.dispose();

// Disconnect from exchange (blocking again)
exchange.disconnect().blockingAwait();

Authentication, if supported for the exchange, works the same way as for the main API, via an ExchangeSpecification. For more information on what is supported, see the Wiki.

More information

Now go ahead and study some more examples, download the thing and provide feedback.

More information about reactive streams can be found at the RxJava wiki.

Features

  • MIT license
  • consistent API across all implemented exchanges
  • active development
  • very minimal 3rd party dependencies
  • modular components

More Info

Project Site: http://knowm.org/open-source/xchange
Example Code: http://knowm.org/open-source/xchange/xchange-example-code
Change Log: http://knowm.org/open-source/xchange/xchange-change-log/
Java Docs: http://knowm.org/javadocs/xchange/index.html

Talk to us on discord: Discord

Wiki

  • Home
  • FAQ
  • Design Notes
  • Milestones
  • Exchange Support
  • New Implementation Best Practices
  • Installing SSL Certificates into TrustStore
  • Getting Started with XChange for Noobies
  • Code Style

Continuous Integration

Java CI with Maven

Getting Started

Non-Maven

  • XChange Release Jars
  • XChange Snapshot Jars

Maven

The XChange release artifacts are hosted on Maven Central: org.knowm.xchange

Add the following dependencies in your pom.xml file. You will need at least xchange-core. Add the additional dependencies for the exchange modules you are interested in (XYZ shown only for a placeholder). There is example code for all the modules in xchange-examples.

<dependency>
  <groupId>org.knowm.xchange</groupId>
  <artifactId>xchange-core</artifactId>
  <version>6.0.0</version>
</dependency>
<dependency>
  <groupId>org.knowm.xchange</groupId>
  <artifactId>xchange-XYZ</artifactId>
  <version>6.0.0</version>
</dependency>

If it is available for your exchange, you may also want to use the streaming API:

<dependency>
  <groupId>org.knowm.xchange</groupId>
  <artifactId>xchange-stream-XYZ</artifactId>
  <version>6.0.0</version>
</dependency>

For snapshots, add the following repository to your pom.xml file.

<repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

The current snapshot version is:

6.0.1-SNAPSHOT

Building with Maven

Instruction Command
run unit tests mvn clean test
run unit and integration tests mvn clean verify -DskipIntegrationTests=false
install in local Maven repo mvn clean install
create project javadocs mvn javadoc:aggregate
generate dependency tree mvn dependency:tree
check for dependency updates mvn versions:display-dependency-updates
check for plugin updates mvn versions:display-plugin-updates
code format mvn com.spotify.fmt:fmt-maven-plugin:format
pom format/organize mvn com.github.ekryd.sortpom:sortpom-maven-plugin:sort

Bugs

Please report any bugs or submit feature requests to XChange's Github issue tracker.

Contributing

If you'd like to submit a new implementation for another exchange, please take a look at New Implementation Best Practices first, as there are lots of time-saving tips!

For more information such as a contributor list and a list of known projects depending on XChange, visit the Main Project Wiki.


Maintained by Knowm Inc.

XChange is an open-source project sponsored and maintained by the team at Knowm Inc., a company dedicated to neuromorphic computing and machine learning research since 2015.

Our team also powers AI Receptionist, an AI-driven automated phone system for small businesses. We leverage the same high-performance, resilient technical architecture and design principles used in XChange to ensure AI Receptionist never misses a call.

Learn more about our research at Knowm.org.

Connect with the Lead Developer: Tim Molter on LinkedIn | Tim Molter on X (Twitter)

About

XChange is a Java library providing a streamlined API for interacting with 60+ Bitcoin and Altcoin exchanges providing a consistent interface for trading and accessing market data.

knowm.org/open-source/xchange/

Topics

bitcoin

Resources

Readme
MIT license
Activity
Custom properties

Stars

4.1k stars

Watchers

240 watching

Forks

2.0k forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.