├── README.md
├── pom.xml
└── src
└── main
└── java
├── GetAccount.java
├── GetExchangeInfo.java
├── MarketData.java
├── Order.java
├── PlaceOrder.java
├── PlaceOrderTestNet.java
├── PrivateConfig.java
├── UserDataStream.java
└── Wallet.java
/README.md:
--------------------------------------------------------------------------------
1 | # Binance Toolbox in Java
2 |
3 | A collection of Java examples that connects to the Binance API endpoints based on `binance-connector-java`.
4 |
5 | - Github repository: https://github.com/binance/binance-connector-java
6 | - Maven repository: https://repo1.maven.org/maven2/io/github/binance/binance-connector-java/
7 | - Javadoc: https://www.javadoc.io/doc/io.github.binance/binance-connector-java/latest/index.html
8 |
9 | Uses `binance-logback` for the logging.
10 |
11 | ## Installation
12 |
13 | Replace `LATEST_VERSION` with the latest version number and paste the snippet below in `pom.xml`
14 | ```
15 |
16 | io.github.binance
17 | binance-connector-java
18 | LATEST_VERSION
19 |
20 | ```
21 | Run `mvn install` where `pom.xml` is located to install the dependency.
22 |
23 | ## Running a java file
24 |
25 | `mvn compile exec:java -Dexec.mainClass=""`
26 |
27 | ## API key & secret
28 |
29 | To get user's information, e.g account balance, you will need to setup API key/secret from
30 |
31 | Production: https://www.binance.com/en/my/settings/api-management
32 |
33 | Testnet: https://testnet.binance.vision/
34 |
35 |
36 | Fill up the API/Secret key parameters in `PrivateConfig.java`
37 |
38 | If you see API server returns error "Invalid API-key, IP, or permissions for action.", please check this topic https://dev.binance.vision/t/why-do-i-see-this-error-invalid-api-key-ip-or-permissions-for-action/93
39 | This forum has plenty of topics covering most of common questions, it's the best place to ask or search API related questions.
40 |
41 | ## License
42 |
43 | MIT
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | binance-toolbox-java
9 | 1.0-SNAPSHOT
10 |
11 |
12 | 8
13 | 8
14 |
15 |
16 |
17 | io.github.binance
18 | binance-connector-java
19 | 2.0.0rc2
20 |
21 |
22 | io.github.binance
23 | binance-logback
24 | 1.0.0
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/main/java/GetAccount.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.exceptions.BinanceClientException;
2 | import com.binance.connector.client.exceptions.BinanceConnectorException;
3 | import com.binance.connector.client.impl.SpotClientImpl;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | import java.util.LinkedHashMap;
8 |
9 | public class GetAccount {
10 | private static final Logger logger = LoggerFactory.getLogger(GetAccount.class);
11 | public static void main(String[] args) {
12 | LinkedHashMap parameters = new LinkedHashMap<>();
13 |
14 | SpotClientImpl client = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
15 |
16 | try {
17 | String result = client.createTrade().account(parameters);
18 | logger.info(result);
19 | }
20 | catch (BinanceConnectorException e) {
21 | logger.error("fullErrMessage: {}", e.getMessage(), e);
22 | }
23 | catch (BinanceClientException e) {
24 | logger.error("fullErrMessage: {} \nerrMessage: {} \nerrCode: {} \nHTTPStatusCode: {}",
25 | e.getMessage(), e.getErrMsg(), e.getErrorCode(), e.getHttpStatusCode(), e);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/GetExchangeInfo.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.impl.SpotClientImpl;
2 | import com.binance.connector.client.impl.spot.Market;
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 |
6 | import java.util.ArrayList;
7 | import java.util.LinkedHashMap;
8 |
9 | public class GetExchangeInfo {
10 | private static final Logger logger = LoggerFactory.getLogger(GetExchangeInfo.class);
11 | public static void main(String[] args) {
12 | SpotClientImpl client = new SpotClientImpl();
13 | Market market = client.createMarket();
14 | LinkedHashMap parameters = new LinkedHashMap<>();
15 |
16 | //Get all symbols
17 | String result = market.exchangeInfo(parameters);
18 | logger.info(result);
19 |
20 | //Get a single symbol
21 | parameters.put("symbol","BTCUSDT");
22 | result = market.exchangeInfo(parameters);
23 | logger.info(result);
24 | parameters.clear();
25 |
26 | //Get multiple symbols
27 | ArrayList symbols = new ArrayList<>();
28 | symbols.add("BTCUSDT");
29 | symbols.add("BNBUSDT");
30 | parameters.put("symbols", symbols);
31 | result = market.exchangeInfo(parameters);
32 | logger.info(result);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/MarketData.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.impl.SpotClientImpl;
2 | import org.slf4j.Logger;
3 | import org.slf4j.LoggerFactory;
4 |
5 | import java.util.LinkedHashMap;
6 |
7 | /**
8 | * Example on how to get market data - klines, aggTrades and trades.
9 | */
10 |
11 | public class MarketData {
12 | private static final Logger logger = LoggerFactory.getLogger(MarketData.class);
13 | private static final SpotClientImpl client = new SpotClientImpl();
14 |
15 | public static void getKlines() {
16 | LinkedHashMap parameters = new LinkedHashMap<>();
17 | parameters.put("symbol","BNBUSDT");
18 | parameters.put("interval", "1m");
19 |
20 | String result = client.createMarket().klines(parameters);
21 | logger.info(result);
22 | }
23 |
24 | public static void getAggTrades() {
25 | LinkedHashMap parameters = new LinkedHashMap<>();
26 | parameters.put("symbol","BNBUSDT");
27 |
28 | String result = client.createMarket().aggTrades(parameters);
29 | logger.info(result);
30 | }
31 |
32 | public static void getTrades() {
33 | LinkedHashMap parameters = new LinkedHashMap<>();
34 | parameters.put("symbol","BNBUSDT");
35 |
36 | String result = client.createMarket().trades(parameters);
37 | logger.info(result);
38 | }
39 |
40 | public static void main(String[] args) {
41 | getKlines();
42 | getAggTrades();
43 | getTrades();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/Order.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.exceptions.BinanceClientException;
2 | import com.binance.connector.client.exceptions.BinanceConnectorException;
3 | import com.binance.connector.client.impl.SpotClientImpl;
4 | import org.json.JSONException;
5 | import org.json.JSONObject;
6 | import org.slf4j.Logger;
7 | import org.slf4j.LoggerFactory;
8 |
9 | import java.util.LinkedHashMap;
10 |
11 | /**
12 | * Example on how to place an order, get the order and cancel the order.
13 | */
14 |
15 | public class Order {
16 | private static final Logger logger = LoggerFactory.getLogger(Order.class);
17 |
18 | //For production environment, uncomment the line below.
19 | //private static final SpotClientImpl client = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
20 | private static final SpotClientImpl client = new SpotClientImpl(PrivateConfig.TESTNET_API_KEY, PrivateConfig.TESTNET_SECRET_KEY, PrivateConfig.BASE_URL);
21 |
22 | public static int placeOrder() {
23 | LinkedHashMap parameters = new LinkedHashMap<>();
24 | parameters.put("symbol", "BTCUSDT");
25 | parameters.put("side", "BUY");
26 | parameters.put("type", "LIMIT");
27 | parameters.put("timeInForce", "GTC");
28 | parameters.put("quantity", 0.001);
29 | parameters.put("price", 10000);
30 |
31 | String result = client.createTrade().newOrder(parameters);
32 | logger.info(result);
33 |
34 | JSONObject jsonObject = new JSONObject(result);
35 | parameters.clear();
36 | return jsonObject.getInt("orderId");
37 | }
38 |
39 | public static void getOrder(int orderId) {
40 | LinkedHashMap parameters = new LinkedHashMap<>();
41 | parameters.put("symbol","BTCUSDT");
42 | parameters.put("orderId", orderId);
43 |
44 | String result = client.createTrade().getOrder(parameters);
45 | logger.info(result);
46 | parameters.clear();
47 | }
48 |
49 | public static void cancelOrder(int orderId) {
50 | LinkedHashMap parameters = new LinkedHashMap<>();
51 | parameters.put("symbol","BTCUSDT");
52 | parameters.put("orderId", orderId);
53 |
54 | String result = client.createTrade().cancelOrder(parameters);
55 | logger.info(result);
56 | parameters.clear();
57 | }
58 |
59 | public static void main(String[] args) {
60 |
61 | try {
62 | int orderId = placeOrder();
63 | getOrder(orderId);
64 | cancelOrder(orderId);
65 |
66 | } catch (BinanceConnectorException e) {
67 | logger.error("fullErrMessage: {}", e.getMessage(), e);
68 | } catch (BinanceClientException e) {
69 | logger.error("fullErrMessage: {} \nerrMessage: {} \nerrCode: {} \nHTTPStatusCode: {}",
70 | e.getMessage(), e.getErrMsg(), e.getErrorCode(), e.getHttpStatusCode(), e);
71 | } catch (JSONException err) {
72 | logger.error(err.toString());
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/main/java/PlaceOrder.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.exceptions.BinanceClientException;
2 | import com.binance.connector.client.exceptions.BinanceConnectorException;
3 | import com.binance.connector.client.impl.SpotClientImpl;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | import java.util.LinkedHashMap;
8 |
9 | public class PlaceOrder {
10 | private static final Logger logger = LoggerFactory.getLogger(PlaceOrder.class);
11 |
12 | public static void main(String[] args) {
13 | LinkedHashMap parameters = new LinkedHashMap<>();
14 |
15 | SpotClientImpl client = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
16 |
17 | parameters.put("symbol", "BTCUSDT");
18 | parameters.put("side", "BUY");
19 | parameters.put("type", "LIMIT");
20 | parameters.put("timeInForce", "GTC");
21 | parameters.put("quantity", 0.001);
22 | parameters.put("price", 50000);
23 |
24 | try {
25 | String result = client.createTrade().testNewOrder(parameters);
26 | logger.info(result);
27 | } catch (BinanceConnectorException e) {
28 | logger.error("fullErrMessage: {}", e.getMessage(), e);
29 | } catch (BinanceClientException e) {
30 | logger.error("fullErrMessage: {} \nerrMessage: {} \nerrCode: {} \nHTTPStatusCode: {}",
31 | e.getMessage(), e.getErrMsg(), e.getErrorCode(), e.getHttpStatusCode(), e);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/PlaceOrderTestNet.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.exceptions.BinanceClientException;
2 | import com.binance.connector.client.exceptions.BinanceConnectorException;
3 | import com.binance.connector.client.impl.SpotClientImpl;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | import java.util.LinkedHashMap;
8 |
9 |
10 | public class PlaceOrderTestNet {
11 | private static final Logger logger = LoggerFactory.getLogger(PlaceOrderTestNet.class);
12 |
13 | public static void main(String[] args) {
14 | LinkedHashMap parameters = new LinkedHashMap<>();
15 |
16 | SpotClientImpl client = new SpotClientImpl(PrivateConfig.TESTNET_API_KEY, PrivateConfig.TESTNET_SECRET_KEY, PrivateConfig.BASE_URL);
17 |
18 | parameters.put("symbol", "BTCUSDT");
19 | parameters.put("side", "BUY");
20 | parameters.put("type", "LIMIT");
21 | parameters.put("timeInForce", "GTC");
22 | parameters.put("quantity", 0.001);
23 | parameters.put("price", 50000);
24 |
25 | try {
26 | String result = client.createTrade().newOrder(parameters);
27 | logger.info(result);
28 | } catch (BinanceConnectorException e) {
29 | logger.error("fullErrMessage: {}", e.getMessage(), e);
30 | } catch (BinanceClientException e) {
31 | logger.error("fullErrMessage: {} \nerrMessage: {} \nerrCode: {} \nHTTPStatusCode: {}",
32 | e.getMessage(), e.getErrMsg(), e.getErrorCode(), e.getHttpStatusCode(), e);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/PrivateConfig.java:
--------------------------------------------------------------------------------
1 | public class PrivateConfig {
2 | public static final String API_KEY = "HgqYVs88y09aQkLfLpkI0Ag0eCefl5X1R8D1QQVudrKcLP7jwjRQDf49R8GeCbs3";
3 | public static final String SECRET_KEY = "ozGtlLjBTYcuyLRw2hZCh3PnAk1L828vR3qsWaFDFLeW4ffCfY3LWxlzYm9FxsZ9";
4 | public static final String BASE_URL = "https://testnet.binance.vision";
5 | public static final String TESTNET_API_KEY = "";
6 | public static final String TESTNET_SECRET_KEY = "";
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/UserDataStream.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.impl.SpotClientImpl;
2 | import com.binance.connector.client.impl.WebsocketStreamClientImpl;
3 | import org.json.JSONObject;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | /**
8 | * Getting listenkey and establing a user data stream.
9 | */
10 |
11 | public class UserDataStream {
12 | private static final Logger logger = LoggerFactory.getLogger(UserDataStream.class);
13 | public static void main(String[] args) {
14 | WebsocketStreamClientImpl wsClient = new WebsocketStreamClientImpl();
15 | SpotClientImpl spotClient = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
16 |
17 | JSONObject obj = new JSONObject(spotClient.createUserData().createListenKey());
18 | String listenKey = obj.getString("listenKey");
19 | logger.info("listenKey:" + listenKey);
20 |
21 | wsClient.listenUserStream(listenKey, ((event) -> {
22 | logger.info(event);
23 | }));
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/Wallet.java:
--------------------------------------------------------------------------------
1 | import com.binance.connector.client.impl.SpotClientImpl;
2 | import org.json.JSONObject;
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 |
6 | import java.util.LinkedHashMap;
7 |
8 | /**
9 | * Example on how to get all coin info, get deposit address and withdraw to deposit address.
10 | */
11 | public class Wallet {
12 | private static final Logger logger = LoggerFactory.getLogger(Wallet.class);
13 | private static final SpotClientImpl client = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
14 |
15 | public static void getCoinInfo() {
16 | LinkedHashMap parameters = new LinkedHashMap<>();
17 | String result = client.createWallet().coinInfo(parameters);
18 | logger.info(result);
19 | }
20 |
21 | public static String getDepositAddress() {
22 | LinkedHashMap parameters = new LinkedHashMap<>();
23 | parameters.put("coin", "BNB");
24 |
25 | String result = client.createWallet().depositAddress(parameters);
26 | logger.info(result);
27 | JSONObject jsonObject = new JSONObject(result);
28 | return jsonObject.getString("address");
29 | }
30 |
31 | public static void withdraw(String address) {
32 | LinkedHashMap parameters = new LinkedHashMap<>();
33 | parameters.put("coin", "BNB");
34 | parameters.put("address", address);
35 | parameters.put("amount", "0.001");
36 |
37 | String result = client.createWallet().withdraw(parameters);
38 | logger.info(result);
39 | }
40 |
41 | public static void main(String[] args) {
42 | getCoinInfo();
43 | String address = getDepositAddress();
44 | withdraw(address);
45 |
46 | }
47 | }
48 |
--------------------------------------------------------------------------------