From d9797607a3aa006d02cd519e5d5654feb11eaa9f Mon Sep 17 00:00:00 2001 From: Tomasz Pawicki Date: Thu, 7 Jul 2022 07:49:05 +0200 Subject: [PATCH 1/9] Add FilterType.TRAILING_DELTA --- pom.xml | 2 +- .../java/com/binance/api/client/domain/general/FilterType.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 67e7af532..a57d63dbf 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.1 + 1.0.2 The MIT License diff --git a/src/main/java/com/binance/api/client/domain/general/FilterType.java b/src/main/java/com/binance/api/client/domain/general/FilterType.java index 57c2931db..84a5f8d18 100755 --- a/src/main/java/com/binance/api/client/domain/general/FilterType.java +++ b/src/main/java/com/binance/api/client/domain/general/FilterType.java @@ -22,5 +22,6 @@ public enum FilterType { // Exchange EXCHANGE_MAX_NUM_ORDERS, - EXCHANGE_MAX_ALGO_ORDERS + EXCHANGE_MAX_ALGO_ORDERS, + TRAILING_DELTA } \ No newline at end of file From e5a5b11ead24872e9ede4928aedc090f8161e3a4 Mon Sep 17 00:00:00 2001 From: Tomasz Pawicki Date: Wed, 17 Aug 2022 09:18:36 +0200 Subject: [PATCH 2/9] Add FilterType.PERCENT_PRICE_BY_SIDE --- .../java/com/binance/api/client/domain/general/FilterType.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/binance/api/client/domain/general/FilterType.java b/src/main/java/com/binance/api/client/domain/general/FilterType.java index 84a5f8d18..87653919c 100755 --- a/src/main/java/com/binance/api/client/domain/general/FilterType.java +++ b/src/main/java/com/binance/api/client/domain/general/FilterType.java @@ -19,6 +19,7 @@ public enum FilterType { MARKET_LOT_SIZE, MAX_NUM_ICEBERG_ORDERS, MAX_POSITION, + PERCENT_PRICE_BY_SIDE, // Exchange EXCHANGE_MAX_NUM_ORDERS, From 4106f99dd289c10d9a02682c42e38bc524b2eace Mon Sep 17 00:00:00 2001 From: Tomasz Pawicki Date: Wed, 17 Aug 2022 09:19:37 +0200 Subject: [PATCH 3/9] Add FilterType.PERCENT_PRICE_BY_SIDE --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a57d63dbf..1096a1b15 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.2 + 1.0.3 The MIT License From 01d30dbb94445583d57bc12185920168fbd99b60 Mon Sep 17 00:00:00 2001 From: Tomasz Pawicki Date: Wed, 7 Jun 2023 16:15:55 +0200 Subject: [PATCH 4/9] Add FilterType.PERCENT_PRICE_BY_SIDE --- pom.xml | 2 +- .../com/binance/api/client/domain/general/FilterType.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 1096a1b15..f6957e4f2 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.3 + 1.0.5 The MIT License diff --git a/src/main/java/com/binance/api/client/domain/general/FilterType.java b/src/main/java/com/binance/api/client/domain/general/FilterType.java index 87653919c..31ed96fa4 100755 --- a/src/main/java/com/binance/api/client/domain/general/FilterType.java +++ b/src/main/java/com/binance/api/client/domain/general/FilterType.java @@ -24,5 +24,7 @@ public enum FilterType { // Exchange EXCHANGE_MAX_NUM_ORDERS, EXCHANGE_MAX_ALGO_ORDERS, - TRAILING_DELTA + TRAILING_DELTA, + + NOTIONAL } \ No newline at end of file From 83ecf84c276aa339acee1af32febc545fa640559 Mon Sep 17 00:00:00 2001 From: tpawicki Date: Wed, 23 Apr 2025 14:05:53 +0200 Subject: [PATCH 5/9] cancelOpenOrders --- .../binance/api/client/BinanceApiAsyncRestClient.java | 2 ++ .../api/client/impl/BinanceApiAsyncRestClientImpl.java | 6 ++++++ .../com/binance/api/client/impl/BinanceApiService.java | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java b/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java index d0e3b1c01..0ec0a849b 100755 --- a/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java +++ b/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java @@ -200,6 +200,8 @@ public interface BinanceApiAsyncRestClient { */ void cancelOrder(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback); + void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback); + /** * Get all open orders on a symbol (asynchronous). * diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java b/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java index e6ea387b9..fd6aa2269 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java @@ -169,6 +169,12 @@ public void cancelOrder(CancelOrderRequest cancelOrderRequest, BinanceApiCallbac cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp()).enqueue(new BinanceApiCallbackAdapter<>(callback)); } + @Override + public void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback) { + binanceApiService.cancelOpenOrders(cancelOrderRequest.getSymbol(), + cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp()).enqueue(new BinanceApiCallbackAdapter<>(callback)); + } + @Override public void getOpenOrders(OrderRequest orderRequest, BinanceApiCallback> callback) { binanceApiService.getOpenOrders(orderRequest.getSymbol(), diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiService.java b/src/main/java/com/binance/api/client/impl/BinanceApiService.java index 5825f9844..9cb457a0d 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiService.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiService.java @@ -110,6 +110,11 @@ Call cancelOrder(@Query("symbol") String symbol, @Query("or @Query("origClientOrderId") String origClientOrderId, @Query("newClientOrderId") String newClientOrderId, @Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); + @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) + @DELETE("/api/v3/openOrders") + Call cancelOpenOrders(@Query("symbol") String symbol, + @Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); + @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) @GET("/api/v3/openOrders") Call> getOpenOrders(@Query("symbol") String symbol, @Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); @@ -123,8 +128,8 @@ Call> getAllOrders(@Query("symbol") String symbol, @Query("orderId") @POST("/api/v3/order/oco") Call newOCO(@Query("symbol") String symbol, @Query("listClientOrderId") String listClientOrderId, @Query("side") OrderSide side, @Query("quantity") String quantity, @Query("limitClientOrderId") String limitClientOrderId, @Query("price") String price, - @Query("limitIcebergQty") String limitIcebergQty, @Query("stopClientOrderId")String stopClientOrderId, @Query("stopPrice") String stopPrice, - @Query("stopLimitPrice")String stopLimitPrice, @Query("stopIcebergQty") String stopIcebergQty, @Query("stopLimitTimeInForce") TimeInForce stopLimitTimeInForce, + @Query("limitIcebergQty") String limitIcebergQty, @Query("stopClientOrderId") String stopClientOrderId, @Query("stopPrice") String stopPrice, + @Query("stopLimitPrice") String stopLimitPrice, @Query("stopIcebergQty") String stopIcebergQty, @Query("stopLimitTimeInForce") TimeInForce stopLimitTimeInForce, @Query("newOrderRespType") NewOrderResponseType newOrderRespType, @Query("recvWindow") Long recvWindow, @Query("timestamp") long timestamp); @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) From 1730ea9f4499ebbee22b703ae377379a0282029c Mon Sep 17 00:00:00 2001 From: tpawicki Date: Wed, 23 Apr 2025 14:06:35 +0200 Subject: [PATCH 6/9] cancelOpenOrders --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f6957e4f2..38bced391 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.5 + 1.0.6 The MIT License From 9e48d791c38e3eb599afed7ce22de59751eae2e6 Mon Sep 17 00:00:00 2001 From: tpawicki Date: Wed, 23 Apr 2025 14:14:21 +0200 Subject: [PATCH 7/9] cancelOpenOrders --- pom.xml | 2 +- .../api/client/BinanceApiRestClient.java | 2 + .../client/impl/BinanceApiRestClientImpl.java | 521 +++++++++--------- 3 files changed, 267 insertions(+), 258 deletions(-) diff --git a/pom.xml b/pom.xml index 38bced391..c2c7659f4 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.6 + 1.0.7 The MIT License diff --git a/src/main/java/com/binance/api/client/BinanceApiRestClient.java b/src/main/java/com/binance/api/client/BinanceApiRestClient.java index ebe0b9667..3ffad189f 100755 --- a/src/main/java/com/binance/api/client/BinanceApiRestClient.java +++ b/src/main/java/com/binance/api/client/BinanceApiRestClient.java @@ -173,6 +173,8 @@ public interface BinanceApiRestClient { */ CancelOrderResponse cancelOrder(CancelOrderRequest cancelOrderRequest); + CancelOrderResponse cancelOpenOrders(CancelOrderRequest cancelOrderRequest); + /** * Get all open orders on a symbol. * diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java b/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java index c80c7a06d..7e5836b85 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java @@ -21,261 +21,268 @@ */ public class BinanceApiRestClientImpl implements BinanceApiRestClient { - private final BinanceApiService binanceApiService; - - public BinanceApiRestClientImpl(String apiKey, String secret) { - binanceApiService = createService(BinanceApiService.class, apiKey, secret); - } - - // General endpoints - - @Override - public void ping() { - executeSync(binanceApiService.ping()); - } - - @Override - public Long getServerTime() { - return executeSync(binanceApiService.getServerTime()).getServerTime(); - } - - @Override - public ExchangeInfo getExchangeInfo() { - return executeSync(binanceApiService.getExchangeInfo()); - } - - @Override - public List getAllAssets() { - return executeSync(binanceApiService - .getAllAssets(BinanceApiConfig.getAssetInfoApiBaseUrl() + "assetWithdraw/getAllAsset.html")); - } - - // Market Data endpoints - - @Override - public OrderBook getOrderBook(String symbol, Integer limit) { - return executeSync(binanceApiService.getOrderBook(symbol, limit)); - } - - @Override - public List getTrades(String symbol, Integer limit) { - return executeSync(binanceApiService.getTrades(symbol, limit)); - } - - @Override - public List getHistoricalTrades(String symbol, Integer limit, Long fromId) { - return executeSync(binanceApiService.getHistoricalTrades(symbol, limit, fromId)); - } - - @Override - public List getAggTrades(String symbol, String fromId, Integer limit, Long startTime, Long endTime) { - return executeSync(binanceApiService.getAggTrades(symbol, fromId, limit, startTime, endTime)); - } - - @Override - public List getAggTrades(String symbol) { - return getAggTrades(symbol, null, null, null, null); - } - - @Override - public List getCandlestickBars(String symbol, CandlestickInterval interval, Integer limit, - Long startTime, Long endTime) { - return executeSync( - binanceApiService.getCandlestickBars(symbol, interval.getIntervalId(), limit, startTime, endTime)); - } - - @Override - public List getCandlestickBars(String symbol, CandlestickInterval interval) { - return getCandlestickBars(symbol, interval, null, null, null); - } - - @Override - public TickerStatistics get24HrPriceStatistics(String symbol) { - return executeSync(binanceApiService.get24HrPriceStatistics(symbol)); - } - - @Override - public List getAll24HrPriceStatistics() { - return executeSync(binanceApiService.getAll24HrPriceStatistics()); - } - - @Override - public TickerPrice getPrice(String symbol) { - return executeSync(binanceApiService.getLatestPrice(symbol)); - } - - @Override - public List getAllPrices() { - return executeSync(binanceApiService.getLatestPrices()); - } - - @Override - public List getBookTickers() { - return executeSync(binanceApiService.getBookTickers()); - } - - @Override - public NewOrderResponse newOrder(NewOrder order) { - final Call call; - if (order.getQuoteOrderQty() == null) { - call = binanceApiService.newOrder(order.getSymbol(), order.getSide(), order.getType(), - order.getTimeInForce(), order.getQuantity(), order.getPrice(), order.getNewClientOrderId(), - order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), - order.getTimestamp()); - } else { - call = binanceApiService.newOrderQuoteQty(order.getSymbol(), order.getSide(), order.getType(), - order.getTimeInForce(), order.getQuoteOrderQty(), order.getPrice(), order.getNewClientOrderId(), - order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), - order.getTimestamp()); - } - return executeSync(call); - } - - @Override - public void newOrderTest(NewOrder order) { - executeSync(binanceApiService.newOrderTest(order.getSymbol(), order.getSide(), order.getType(), - order.getTimeInForce(), order.getQuantity(), order.getPrice(), order.getNewClientOrderId(), - order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), - order.getTimestamp())); - } - - // Account endpoints - - @Override - public Order getOrderStatus(OrderStatusRequest orderStatusRequest) { - return executeSync(binanceApiService.getOrderStatus(orderStatusRequest.getSymbol(), - orderStatusRequest.getOrderId(), orderStatusRequest.getOrigClientOrderId(), - orderStatusRequest.getRecvWindow(), orderStatusRequest.getTimestamp())); - } - - @Override - public CancelOrderResponse cancelOrder(CancelOrderRequest cancelOrderRequest) { - return executeSync( - binanceApiService.cancelOrder(cancelOrderRequest.getSymbol(), cancelOrderRequest.getOrderId(), - cancelOrderRequest.getOrigClientOrderId(), cancelOrderRequest.getNewClientOrderId(), - cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp())); - } - - @Override - public List getOpenOrders(OrderRequest orderRequest) { - return executeSync(binanceApiService.getOpenOrders(orderRequest.getSymbol(), orderRequest.getRecvWindow(), - orderRequest.getTimestamp())); - } - - @Override - public List getAllOrders(AllOrdersRequest orderRequest) { - return executeSync(binanceApiService.getAllOrders(orderRequest.getSymbol(), orderRequest.getOrderId(), - orderRequest.getLimit(), orderRequest.getRecvWindow(), orderRequest.getTimestamp())); - } - - @Override - public NewOCOResponse newOCO(NewOCO oco) { - return executeSync(binanceApiService.newOCO(oco.getSymbol(), oco.getListClientOrderId(), oco.getSide(), - oco.getQuantity(), oco.getLimitClientOrderId(), oco.getPrice(), oco.getLimitIcebergQty(), - oco.getStopClientOrderId(), oco.getStopPrice(), oco.getStopLimitPrice(), oco.getStopIcebergQty(), - oco.getStopLimitTimeInForce(), oco.getNewOrderRespType(), oco.getRecvWindow(), oco.getTimestamp())); - } - - @Override - public CancelOrderListResponse cancelOrderList(CancelOrderListRequest cancelOrderListRequest) { - return executeSync(binanceApiService.cancelOrderList(cancelOrderListRequest.getSymbol(), cancelOrderListRequest.getOrderListId(), - cancelOrderListRequest.getListClientOrderId(), cancelOrderListRequest.getNewClientOrderId(), - cancelOrderListRequest.getRecvWindow(), cancelOrderListRequest.getTimestamp())); - } - - @Override - public OrderList getOrderListStatus(OrderListStatusRequest orderListStatusRequest) { - return executeSync(binanceApiService.getOrderListStatus(orderListStatusRequest.getOrderListId(), orderListStatusRequest.getOrigClientOrderId(), - orderListStatusRequest.getRecvWindow(), orderListStatusRequest.getTimestamp())); - } - - @Override - public List getAllOrderList(AllOrderListRequest allOrderListRequest) { - return executeSync(binanceApiService.getAllOrderList(allOrderListRequest.getFromId(), allOrderListRequest.getStartTime(), - allOrderListRequest.getEndTime(), allOrderListRequest.getLimit(), allOrderListRequest.getRecvWindow(), allOrderListRequest.getTimestamp())); - } - - @Override - public Account getAccount(Long recvWindow, Long timestamp) { - return executeSync(binanceApiService.getAccount(recvWindow, timestamp)); - } - - @Override - public Account getAccount() { - return getAccount(BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis()); - } - - @Override - public List getMyTrades(String symbol, Integer limit, Long fromId, Long recvWindow, Long timestamp) { - return executeSync(binanceApiService.getMyTrades(symbol, limit, fromId, recvWindow, timestamp)); - } - - @Override - public List getMyTrades(String symbol, Integer limit) { - return getMyTrades(symbol, limit, null, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis()); - } - - @Override - public List getMyTrades(String symbol) { - return getMyTrades(symbol, null, null, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis()); - } - - @Override - public List getMyTrades(String symbol, Long fromId) { - return getMyTrades(symbol, null, fromId, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis()); - } - - @Override - public WithdrawResult withdraw(String asset, String address, String amount, String name, String addressTag) { - return executeSync(binanceApiService.withdraw(asset, address, amount, name, addressTag, - BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis())); - } - - @Override - public DustTransferResponse dustTranfer(List asset) { - return executeSync(binanceApiService.dustTransfer(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis())); - } - - @Override - public DepositHistory getDepositHistory(String asset) { - return executeSync(binanceApiService.getDepositHistory(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis())); - } - - @Override - public WithdrawHistory getWithdrawHistory(String asset) { - return executeSync(binanceApiService.getWithdrawHistory(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis())); - } - - @Override - public List getSubAccountTransfers() { - return executeSync(binanceApiService.getSubAccountTransfers(System.currentTimeMillis())); - } - - @Override - public DepositAddress getDepositAddress(String asset) { - return executeSync(binanceApiService.getDepositAddress(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, - System.currentTimeMillis())); - } - - // User stream endpoints - - @Override - public String startUserDataStream() { - return executeSync(binanceApiService.startUserDataStream()).toString(); - } - - @Override - public void keepAliveUserDataStream(String listenKey) { - executeSync(binanceApiService.keepAliveUserDataStream(listenKey)); - } - - @Override - public void closeUserDataStream(String listenKey) { - executeSync(binanceApiService.closeAliveUserDataStream(listenKey)); - } + private final BinanceApiService binanceApiService; + + public BinanceApiRestClientImpl(String apiKey, String secret) { + binanceApiService = createService(BinanceApiService.class, apiKey, secret); + } + + // General endpoints + + @Override + public void ping() { + executeSync(binanceApiService.ping()); + } + + @Override + public Long getServerTime() { + return executeSync(binanceApiService.getServerTime()).getServerTime(); + } + + @Override + public ExchangeInfo getExchangeInfo() { + return executeSync(binanceApiService.getExchangeInfo()); + } + + @Override + public List getAllAssets() { + return executeSync(binanceApiService + .getAllAssets(BinanceApiConfig.getAssetInfoApiBaseUrl() + "assetWithdraw/getAllAsset.html")); + } + + // Market Data endpoints + + @Override + public OrderBook getOrderBook(String symbol, Integer limit) { + return executeSync(binanceApiService.getOrderBook(symbol, limit)); + } + + @Override + public List getTrades(String symbol, Integer limit) { + return executeSync(binanceApiService.getTrades(symbol, limit)); + } + + @Override + public List getHistoricalTrades(String symbol, Integer limit, Long fromId) { + return executeSync(binanceApiService.getHistoricalTrades(symbol, limit, fromId)); + } + + @Override + public List getAggTrades(String symbol, String fromId, Integer limit, Long startTime, Long endTime) { + return executeSync(binanceApiService.getAggTrades(symbol, fromId, limit, startTime, endTime)); + } + + @Override + public List getAggTrades(String symbol) { + return getAggTrades(symbol, null, null, null, null); + } + + @Override + public List getCandlestickBars(String symbol, CandlestickInterval interval, Integer limit, + Long startTime, Long endTime) { + return executeSync( + binanceApiService.getCandlestickBars(symbol, interval.getIntervalId(), limit, startTime, endTime)); + } + + @Override + public List getCandlestickBars(String symbol, CandlestickInterval interval) { + return getCandlestickBars(symbol, interval, null, null, null); + } + + @Override + public TickerStatistics get24HrPriceStatistics(String symbol) { + return executeSync(binanceApiService.get24HrPriceStatistics(symbol)); + } + + @Override + public List getAll24HrPriceStatistics() { + return executeSync(binanceApiService.getAll24HrPriceStatistics()); + } + + @Override + public TickerPrice getPrice(String symbol) { + return executeSync(binanceApiService.getLatestPrice(symbol)); + } + + @Override + public List getAllPrices() { + return executeSync(binanceApiService.getLatestPrices()); + } + + @Override + public List getBookTickers() { + return executeSync(binanceApiService.getBookTickers()); + } + + @Override + public NewOrderResponse newOrder(NewOrder order) { + final Call call; + if (order.getQuoteOrderQty() == null) { + call = binanceApiService.newOrder(order.getSymbol(), order.getSide(), order.getType(), + order.getTimeInForce(), order.getQuantity(), order.getPrice(), order.getNewClientOrderId(), + order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), + order.getTimestamp()); + } else { + call = binanceApiService.newOrderQuoteQty(order.getSymbol(), order.getSide(), order.getType(), + order.getTimeInForce(), order.getQuoteOrderQty(), order.getPrice(), order.getNewClientOrderId(), + order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), + order.getTimestamp()); + } + return executeSync(call); + } + + @Override + public void newOrderTest(NewOrder order) { + executeSync(binanceApiService.newOrderTest(order.getSymbol(), order.getSide(), order.getType(), + order.getTimeInForce(), order.getQuantity(), order.getPrice(), order.getNewClientOrderId(), + order.getStopPrice(), order.getIcebergQty(), order.getNewOrderRespType(), order.getRecvWindow(), + order.getTimestamp())); + } + + // Account endpoints + + @Override + public Order getOrderStatus(OrderStatusRequest orderStatusRequest) { + return executeSync(binanceApiService.getOrderStatus(orderStatusRequest.getSymbol(), + orderStatusRequest.getOrderId(), orderStatusRequest.getOrigClientOrderId(), + orderStatusRequest.getRecvWindow(), orderStatusRequest.getTimestamp())); + } + + @Override + public CancelOrderResponse cancelOrder(CancelOrderRequest cancelOrderRequest) { + return executeSync( + binanceApiService.cancelOrder(cancelOrderRequest.getSymbol(), cancelOrderRequest.getOrderId(), + cancelOrderRequest.getOrigClientOrderId(), cancelOrderRequest.getNewClientOrderId(), + cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp())); + } + + @Override + public CancelOrderResponse cancelOpenOrders(CancelOrderRequest cancelOrderRequest) { + return executeSync( + binanceApiService.cancelOpenOrders(cancelOrderRequest.getSymbol(), + cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp())); + } + + @Override + public List getOpenOrders(OrderRequest orderRequest) { + return executeSync(binanceApiService.getOpenOrders(orderRequest.getSymbol(), orderRequest.getRecvWindow(), + orderRequest.getTimestamp())); + } + + @Override + public List getAllOrders(AllOrdersRequest orderRequest) { + return executeSync(binanceApiService.getAllOrders(orderRequest.getSymbol(), orderRequest.getOrderId(), + orderRequest.getLimit(), orderRequest.getRecvWindow(), orderRequest.getTimestamp())); + } + + @Override + public NewOCOResponse newOCO(NewOCO oco) { + return executeSync(binanceApiService.newOCO(oco.getSymbol(), oco.getListClientOrderId(), oco.getSide(), + oco.getQuantity(), oco.getLimitClientOrderId(), oco.getPrice(), oco.getLimitIcebergQty(), + oco.getStopClientOrderId(), oco.getStopPrice(), oco.getStopLimitPrice(), oco.getStopIcebergQty(), + oco.getStopLimitTimeInForce(), oco.getNewOrderRespType(), oco.getRecvWindow(), oco.getTimestamp())); + } + + @Override + public CancelOrderListResponse cancelOrderList(CancelOrderListRequest cancelOrderListRequest) { + return executeSync(binanceApiService.cancelOrderList(cancelOrderListRequest.getSymbol(), cancelOrderListRequest.getOrderListId(), + cancelOrderListRequest.getListClientOrderId(), cancelOrderListRequest.getNewClientOrderId(), + cancelOrderListRequest.getRecvWindow(), cancelOrderListRequest.getTimestamp())); + } + + @Override + public OrderList getOrderListStatus(OrderListStatusRequest orderListStatusRequest) { + return executeSync(binanceApiService.getOrderListStatus(orderListStatusRequest.getOrderListId(), orderListStatusRequest.getOrigClientOrderId(), + orderListStatusRequest.getRecvWindow(), orderListStatusRequest.getTimestamp())); + } + + @Override + public List getAllOrderList(AllOrderListRequest allOrderListRequest) { + return executeSync(binanceApiService.getAllOrderList(allOrderListRequest.getFromId(), allOrderListRequest.getStartTime(), + allOrderListRequest.getEndTime(), allOrderListRequest.getLimit(), allOrderListRequest.getRecvWindow(), allOrderListRequest.getTimestamp())); + } + + @Override + public Account getAccount(Long recvWindow, Long timestamp) { + return executeSync(binanceApiService.getAccount(recvWindow, timestamp)); + } + + @Override + public Account getAccount() { + return getAccount(BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis()); + } + + @Override + public List getMyTrades(String symbol, Integer limit, Long fromId, Long recvWindow, Long timestamp) { + return executeSync(binanceApiService.getMyTrades(symbol, limit, fromId, recvWindow, timestamp)); + } + + @Override + public List getMyTrades(String symbol, Integer limit) { + return getMyTrades(symbol, limit, null, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis()); + } + + @Override + public List getMyTrades(String symbol) { + return getMyTrades(symbol, null, null, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis()); + } + + @Override + public List getMyTrades(String symbol, Long fromId) { + return getMyTrades(symbol, null, fromId, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis()); + } + + @Override + public WithdrawResult withdraw(String asset, String address, String amount, String name, String addressTag) { + return executeSync(binanceApiService.withdraw(asset, address, amount, name, addressTag, + BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis())); + } + + @Override + public DustTransferResponse dustTranfer(List asset) { + return executeSync(binanceApiService.dustTransfer(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, System.currentTimeMillis())); + } + + @Override + public DepositHistory getDepositHistory(String asset) { + return executeSync(binanceApiService.getDepositHistory(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis())); + } + + @Override + public WithdrawHistory getWithdrawHistory(String asset) { + return executeSync(binanceApiService.getWithdrawHistory(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis())); + } + + @Override + public List getSubAccountTransfers() { + return executeSync(binanceApiService.getSubAccountTransfers(System.currentTimeMillis())); + } + + @Override + public DepositAddress getDepositAddress(String asset) { + return executeSync(binanceApiService.getDepositAddress(asset, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, + System.currentTimeMillis())); + } + + // User stream endpoints + + @Override + public String startUserDataStream() { + return executeSync(binanceApiService.startUserDataStream()).toString(); + } + + @Override + public void keepAliveUserDataStream(String listenKey) { + executeSync(binanceApiService.keepAliveUserDataStream(listenKey)); + } + + @Override + public void closeUserDataStream(String listenKey) { + executeSync(binanceApiService.closeAliveUserDataStream(listenKey)); + } } From 1d6a6189569d078b569dc53b4bd43b74f6240c49 Mon Sep 17 00:00:00 2001 From: tpawicki Date: Thu, 24 Apr 2025 07:18:38 +0200 Subject: [PATCH 8/9] filters --- pom.xml | 2 +- .../api/client/domain/general/SymbolInfo.java | 248 +++++++++--------- .../api/client/impl/BinanceApiService.java | 2 +- 3 files changed, 128 insertions(+), 124 deletions(-) diff --git a/pom.xml b/pom.xml index c2c7659f4..4bda8d7d5 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.7 + 1.0.8 The MIT License diff --git a/src/main/java/com/binance/api/client/domain/general/SymbolInfo.java b/src/main/java/com/binance/api/client/domain/general/SymbolInfo.java index ca2723235..e2e197aae 100755 --- a/src/main/java/com/binance/api/client/domain/general/SymbolInfo.java +++ b/src/main/java/com/binance/api/client/domain/general/SymbolInfo.java @@ -5,7 +5,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.apache.commons.lang3.builder.ToStringBuilder; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Symbol information (base/quote). @@ -13,159 +15,161 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class SymbolInfo { - private String symbol; + private String symbol; - private SymbolStatus status; + private SymbolStatus status; - private String baseAsset; + private String baseAsset; - private Integer baseAssetPrecision; + private Integer baseAssetPrecision; - private String quoteAsset; + private String quoteAsset; - private Integer quotePrecision; + private Integer quotePrecision; - private List orderTypes; + private List orderTypes; - private boolean icebergAllowed; + private boolean icebergAllowed; - private boolean ocoAllowed; + private boolean ocoAllowed; - private boolean quoteOrderQtyMarketAllowed; + private boolean quoteOrderQtyMarketAllowed; - private boolean isSpotTradingAllowed; + private boolean isSpotTradingAllowed; - private boolean isMarginTradingAllowed; + private boolean isMarginTradingAllowed; - private List filters; + private List filtersList; + private Map filtersMap; - public String getSymbol() { - return symbol; - } + public String getSymbol() { + return symbol; + } - public void setSymbol(String symbol) { - this.symbol = symbol; - } + public void setSymbol(String symbol) { + this.symbol = symbol; + } - public SymbolStatus getStatus() { - return status; - } + public SymbolStatus getStatus() { + return status; + } - public void setStatus(SymbolStatus status) { - this.status = status; - } + public void setStatus(SymbolStatus status) { + this.status = status; + } - public String getBaseAsset() { - return baseAsset; - } + public String getBaseAsset() { + return baseAsset; + } - public void setBaseAsset(String baseAsset) { - this.baseAsset = baseAsset; - } + public void setBaseAsset(String baseAsset) { + this.baseAsset = baseAsset; + } - public Integer getBaseAssetPrecision() { - return baseAssetPrecision; - } + public Integer getBaseAssetPrecision() { + return baseAssetPrecision; + } - public void setBaseAssetPrecision(Integer baseAssetPrecision) { - this.baseAssetPrecision = baseAssetPrecision; - } + public void setBaseAssetPrecision(Integer baseAssetPrecision) { + this.baseAssetPrecision = baseAssetPrecision; + } - public String getQuoteAsset() { - return quoteAsset; - } + public String getQuoteAsset() { + return quoteAsset; + } - public void setQuoteAsset(String quoteAsset) { - this.quoteAsset = quoteAsset; - } + public void setQuoteAsset(String quoteAsset) { + this.quoteAsset = quoteAsset; + } - public Integer getQuotePrecision() { - return quotePrecision; - } + public Integer getQuotePrecision() { + return quotePrecision; + } - public void setQuotePrecision(Integer quotePrecision) { - this.quotePrecision = quotePrecision; - } + public void setQuotePrecision(Integer quotePrecision) { + this.quotePrecision = quotePrecision; + } - public List getOrderTypes() { - return orderTypes; - } + public List getOrderTypes() { + return orderTypes; + } - public void setOrderTypes(List orderTypes) { - this.orderTypes = orderTypes; - } + public void setOrderTypes(List orderTypes) { + this.orderTypes = orderTypes; + } - public boolean isIcebergAllowed() { - return icebergAllowed; - } + public boolean isIcebergAllowed() { + return icebergAllowed; + } - public void setIcebergAllowed(boolean icebergAllowed) { - this.icebergAllowed = icebergAllowed; - } + public void setIcebergAllowed(boolean icebergAllowed) { + this.icebergAllowed = icebergAllowed; + } - public boolean isOcoAllowed() { - return ocoAllowed; - } + public boolean isOcoAllowed() { + return ocoAllowed; + } - public void setOcoAllowed(boolean ocoAllowed) { - this.ocoAllowed = ocoAllowed; - } + public void setOcoAllowed(boolean ocoAllowed) { + this.ocoAllowed = ocoAllowed; + } - public boolean isQuoteOrderQtyMarketAllowed() { - return quoteOrderQtyMarketAllowed; - } + public boolean isQuoteOrderQtyMarketAllowed() { + return quoteOrderQtyMarketAllowed; + } - public void setQuoteOrderQtyMarketAllowed(boolean quoteOrderQtyMarketAllowed) { - this.quoteOrderQtyMarketAllowed = quoteOrderQtyMarketAllowed; - } + public void setQuoteOrderQtyMarketAllowed(boolean quoteOrderQtyMarketAllowed) { + this.quoteOrderQtyMarketAllowed = quoteOrderQtyMarketAllowed; + } - public boolean isSpotTradingAllowed() { - return isSpotTradingAllowed; - } - - public void setIsSpotTradingAllowed(boolean isSpotTradingAllowed) { - this.isSpotTradingAllowed = isSpotTradingAllowed; - } - - public boolean isMarginTradingAllowed() { - return isMarginTradingAllowed; - } - - public void setIsMarginTradingAllowed(boolean isMarginTradingAllowed) { - this.isMarginTradingAllowed = isMarginTradingAllowed; - } - - public List getFilters() { - return filters; - } - - public void setFilters(List filters) { - this.filters = filters; - } - - /** - * @param filterType filter type to filter for. - * @return symbol filter information for the provided filter type. - */ - public SymbolFilter getSymbolFilter(FilterType filterType) { - return filters.stream() - .filter(symbolFilter -> symbolFilter.getFilterType() == filterType) - .findFirst() - .get(); - } - - @Override - public String toString() { - return new ToStringBuilder(this, BinanceApiConstants.TO_STRING_BUILDER_STYLE) - .append("symbol", symbol) - .append("status", status) - .append("baseAsset", baseAsset) - .append("baseAssetPrecision", baseAssetPrecision) - .append("quoteAsset", quoteAsset) - .append("quotePrecision", quotePrecision) - .append("orderTypes", orderTypes) - .append("icebergAllowed", icebergAllowed) - .append("filters", filters) - .toString(); - } + public boolean isSpotTradingAllowed() { + return isSpotTradingAllowed; + } + + public void setIsSpotTradingAllowed(boolean isSpotTradingAllowed) { + this.isSpotTradingAllowed = isSpotTradingAllowed; + } + + public boolean isMarginTradingAllowed() { + return isMarginTradingAllowed; + } + + public void setIsMarginTradingAllowed(boolean isMarginTradingAllowed) { + this.isMarginTradingAllowed = isMarginTradingAllowed; + } + + public List getFilters() { + return filtersList; + } + + public void setFilters(List filters) { + filtersList = filters; + filtersMap = new HashMap<>(); + for (SymbolFilter filter : filters) { + filtersMap.put(filter.getFilterType(), filter); + } + } + + /** + * @param filterType filter type to filter for. + * @return symbol filter information for the provided filter type. + */ + public SymbolFilter getSymbolFilter(FilterType filterType) { + return filtersMap.get(filterType); + } + + @Override + public String toString() { + return new ToStringBuilder(this, BinanceApiConstants.TO_STRING_BUILDER_STYLE) + .append("symbol", symbol) + .append("status", status) + .append("baseAsset", baseAsset) + .append("baseAssetPrecision", baseAssetPrecision) + .append("quoteAsset", quoteAsset) + .append("quotePrecision", quotePrecision) + .append("orderTypes", orderTypes) + .append("icebergAllowed", icebergAllowed) + .append("filters", filtersList) + .toString(); + } } diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiService.java b/src/main/java/com/binance/api/client/impl/BinanceApiService.java index 9cb457a0d..7ccf4ad57 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiService.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiService.java @@ -113,7 +113,7 @@ Call cancelOrder(@Query("symbol") String symbol, @Query("or @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) @DELETE("/api/v3/openOrders") Call cancelOpenOrders(@Query("symbol") String symbol, - @Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); +@Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) @GET("/api/v3/openOrders") From 6f3436e212a536ccdcc7809af3e82557a0a34023 Mon Sep 17 00:00:00 2001 From: tpawicki Date: Thu, 24 Apr 2025 08:59:51 +0200 Subject: [PATCH 9/9] cancelOpenOrders --- pom.xml | 2 +- .../java/com/binance/api/client/BinanceApiAsyncRestClient.java | 2 +- src/main/java/com/binance/api/client/BinanceApiRestClient.java | 2 +- .../binance/api/client/impl/BinanceApiAsyncRestClientImpl.java | 2 +- .../com/binance/api/client/impl/BinanceApiRestClientImpl.java | 2 +- .../java/com/binance/api/client/impl/BinanceApiService.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 4bda8d7d5..2b1ec7dc2 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.binance.api binance-api-client - 1.0.8 + 1.0.9 The MIT License diff --git a/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java b/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java index 0ec0a849b..fe20f0e2d 100755 --- a/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java +++ b/src/main/java/com/binance/api/client/BinanceApiAsyncRestClient.java @@ -200,7 +200,7 @@ public interface BinanceApiAsyncRestClient { */ void cancelOrder(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback); - void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback); + void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback> callback); /** * Get all open orders on a symbol (asynchronous). diff --git a/src/main/java/com/binance/api/client/BinanceApiRestClient.java b/src/main/java/com/binance/api/client/BinanceApiRestClient.java index 3ffad189f..475bf92bf 100755 --- a/src/main/java/com/binance/api/client/BinanceApiRestClient.java +++ b/src/main/java/com/binance/api/client/BinanceApiRestClient.java @@ -173,7 +173,7 @@ public interface BinanceApiRestClient { */ CancelOrderResponse cancelOrder(CancelOrderRequest cancelOrderRequest); - CancelOrderResponse cancelOpenOrders(CancelOrderRequest cancelOrderRequest); + List cancelOpenOrders(CancelOrderRequest cancelOrderRequest); /** * Get all open orders on a symbol. diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java b/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java index fd6aa2269..9c864b2ca 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiAsyncRestClientImpl.java @@ -170,7 +170,7 @@ public void cancelOrder(CancelOrderRequest cancelOrderRequest, BinanceApiCallbac } @Override - public void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback callback) { + public void cancelOpenOrders(CancelOrderRequest cancelOrderRequest, BinanceApiCallback> callback) { binanceApiService.cancelOpenOrders(cancelOrderRequest.getSymbol(), cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp()).enqueue(new BinanceApiCallbackAdapter<>(callback)); } diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java b/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java index 7e5836b85..df1591ec7 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiRestClientImpl.java @@ -157,7 +157,7 @@ public CancelOrderResponse cancelOrder(CancelOrderRequest cancelOrderRequest) { } @Override - public CancelOrderResponse cancelOpenOrders(CancelOrderRequest cancelOrderRequest) { + public List cancelOpenOrders(CancelOrderRequest cancelOrderRequest) { return executeSync( binanceApiService.cancelOpenOrders(cancelOrderRequest.getSymbol(), cancelOrderRequest.getRecvWindow(), cancelOrderRequest.getTimestamp())); diff --git a/src/main/java/com/binance/api/client/impl/BinanceApiService.java b/src/main/java/com/binance/api/client/impl/BinanceApiService.java index 7ccf4ad57..5a145626a 100755 --- a/src/main/java/com/binance/api/client/impl/BinanceApiService.java +++ b/src/main/java/com/binance/api/client/impl/BinanceApiService.java @@ -112,7 +112,7 @@ Call cancelOrder(@Query("symbol") String symbol, @Query("or @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER) @DELETE("/api/v3/openOrders") - Call cancelOpenOrders(@Query("symbol") String symbol, + Call> cancelOpenOrders(@Query("symbol") String symbol, @Query("recvWindow") Long recvWindow, @Query("timestamp") Long timestamp); @Headers(BinanceApiConstants.ENDPOINT_SECURITY_TYPE_SIGNED_HEADER)