# Java client for [Binance API](https://www.binance.com/restapipub.html)
## Synopsis
Client for accessing Binance API using Java. An [async](src/main/java/com/github/johnsiu/binance/httpclients/AsyncBinanceClient.java) and a [sync](src/main/java/com/github/johnsiu/binance/httpclients/BinanceClient.java) versions of the client are available.
## Installation
Add the bintray repo to the pom of your maven project:
```xml
bintray-johnsiu-maven-repo
https://dl.bintray.com/johnsiu/maven-repo
```
then, add the dependency:
```xml
com.github.johnsiu
binance-java-client
1.0.1
```
## Usage
### Creating an instance of the async client using Guice
```java
Injector injector = Guice.createInjector(new BinanceClientModule());
AsyncBinanceClient asyncClient = injector.getInstance(AsyncBinanceClient.class);
```
### Creating an instance of the sync client using Guice
```java
Injector injector = Guice.createInjector(new BinanceClientModule());
BinanceClient client = injector.getInstance(BinanceClient.class);
```
### Getting latest price of a symbol
```java
Ticker ticker = client.getTicker("ETHBTC"));
double price = ticker.getLastPrice();
```
### Getting depth of a symbol
```java
Depth depth = client.getDepth("ETHBTC"));
```
### Placing a LIMIT order
```java
Keys keys = new Keys("YOUR_API_KEY", "YOUR_SECRET_KEY");
double quantity = 1;
double price = 0.020041;
Order order = client.placeLimitOrder(keys, "MCOETH", OrderSide.BUY, TimeInForce.GTC, quantity, price);
```
### Placing a MARKET order
```java
double quantity = 1;
Order order = client.placeMarketOrder(keys, "MCOETH", OrderSide.SELL, quantity);
```
### Checking an order’s status
```java
OrderStatus orderStatus = client.checkOrderStatus(keys, order);
```
### Cancelling an order
```java
CancelOrder cancelOrder = client.cancelOrder(keys, order);
// or
CancelOrder cancelOrder = client.cancelOrder(keys, orderStatus);
```
### Getting a list of open orders
```java
List openOrders = client.getOpenOrders(keys, "MCOETH");
```
### Getting a list of current position
```java
Account account = client.getAccount(keys);
Map balances = account.getBalances();
```
### Exception handling
```java
try {
Depth depth = client.getDepth("invalid symbol"));
} catch (ClientErrorException e) {
int httpStatusCode = e.getHttpStatusCode();
String errorCode = e.getErrorDetails().getCode();
String errorMessage = e.getErrorDetails().getMsg();
}
```
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/johnsiu/binance-java-client/tags).
## License
This project is released into the public domain - see the [UNLICENSE](UNLICENSE) file for details.