diff --git a/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxAccountService.java b/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxAccountService.java index 0eba0d8be80..48fe12efb96 100644 --- a/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxAccountService.java +++ b/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxAccountService.java @@ -1,7 +1,6 @@ package org.knowm.xchange.bibox.service; import java.io.IOException; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import org.knowm.xchange.Exchange; @@ -11,12 +10,10 @@ import org.knowm.xchange.dto.account.AccountInfo; import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.dto.account.FundingRecord.Type; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.HistoryParamsFundingType; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrency; import org.knowm.xchange.service.trade.params.TradeHistoryParams; -import org.knowm.xchange.service.trade.params.WithdrawFundsParams; /** * @author odrotleff @@ -33,19 +30,6 @@ public AccountInfo getAccountInfo() throws IOException { return BiboxAdapters.adaptAccountInfo(getBiboxAccountInfo()); } - @Override - public String withdrawFunds(Currency currency, BigDecimal amount, String address) - throws IOException { - throw new NotYetImplementedForExchangeException( - "This operation is not yet implemented for this exchange"); - } - - @Override - public String withdrawFunds(WithdrawFundsParams params) throws IOException { - throw new NotYetImplementedForExchangeException( - "This operation is not yet implemented for this exchange"); - } - @Override public String requestDepositAddress(Currency currency, String... args) throws IOException { return requestBiboxDepositAddress(currency); diff --git a/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxTradeService.java b/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxTradeService.java index b577b0bbc14..690b58c0921 100644 --- a/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxTradeService.java +++ b/xchange-bibox/src/main/java/org/knowm/xchange/bibox/service/BiboxTradeService.java @@ -7,10 +7,8 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; import org.knowm.xchange.service.trade.params.CancelOrderParams; @@ -71,21 +69,4 @@ public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException return BiboxAdapters.adaptUserTrades(getBiboxOrderHistory()); } - @Override - public TradeHistoryParams createTradeHistoryParams() { - throw new NotYetImplementedForExchangeException( - "This operation is not yet implemented for this exchange"); - } - - @Override - public OpenOrdersParams createOpenOrdersParams() { - throw new NotYetImplementedForExchangeException( - "This operation is not yet implemented for this exchange"); - } - - @Override - public String placeStopOrder(StopOrder arg0) throws IOException { - throw new NotYetImplementedForExchangeException( - "This operation is not yet implemented for this exchange"); - } } diff --git a/xchange-binance/.gitignore b/xchange-binance/.gitignore new file mode 100644 index 00000000000..42c7d2cd0eb --- /dev/null +++ b/xchange-binance/.gitignore @@ -0,0 +1 @@ +http-client.private.env.json \ No newline at end of file diff --git a/xchange-binance/README.md b/xchange-binance/README.md new file mode 100644 index 00000000000..6f4d4742fa7 --- /dev/null +++ b/xchange-binance/README.md @@ -0,0 +1,11 @@ +## Using IntelliJ Idea HTTP client + +There are *.http files stored in `src/test/resources/rest` that can be used with IntelliJ Idea HTTP Client. + +Some requests need authorization, so the api credentials have to be stored in `http-client.private.env.json` in module's root. Sample content can be found in `example.http-client.private.env.json` + +> [!CAUTION] +> Never commit your api credentials to the repository! + + +[HTTP Client documentation](https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html) \ No newline at end of file diff --git a/xchange-binance/example.http-client.private.env.json b/xchange-binance/example.http-client.private.env.json new file mode 100644 index 00000000000..977c974ecbe --- /dev/null +++ b/xchange-binance/example.http-client.private.env.json @@ -0,0 +1,6 @@ +{ + "default": { + "api_key": "replace_me", + "api_secret": "replace_me" + } +} \ No newline at end of file diff --git a/xchange-binance/http-client.env.json b/xchange-binance/http-client.env.json new file mode 100644 index 00000000000..93cee3f001f --- /dev/null +++ b/xchange-binance/http-client.env.json @@ -0,0 +1,6 @@ +{ + "default": { + "api_host": "https://api.binance.com", + "data_api_host": "https://data-api.binance.vision" + } +} \ No newline at end of file diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAdapters.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAdapters.java index a041731e920..ab2ac00628a 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAdapters.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAdapters.java @@ -7,8 +7,13 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.*; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.knowm.xchange.binance.dto.account.AssetDetail; @@ -18,7 +23,7 @@ import org.knowm.xchange.binance.dto.marketdata.BinanceAggTrades; import org.knowm.xchange.binance.dto.marketdata.BinanceFundingRate; import org.knowm.xchange.binance.dto.marketdata.BinanceKline; -import org.knowm.xchange.binance.dto.marketdata.BinancePriceQuantity; +import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; import org.knowm.xchange.binance.dto.meta.exchangeinfo.BinanceExchangeInfo; import org.knowm.xchange.binance.dto.meta.exchangeinfo.Filter; import org.knowm.xchange.binance.dto.meta.exchangeinfo.Symbol; @@ -36,18 +41,32 @@ import org.knowm.xchange.dto.account.Balance; import org.knowm.xchange.dto.account.OpenPosition; import org.knowm.xchange.dto.account.Wallet; -import org.knowm.xchange.dto.marketdata.*; +import org.knowm.xchange.dto.marketdata.CandleStick; +import org.knowm.xchange.dto.marketdata.CandleStickData; +import org.knowm.xchange.dto.marketdata.FundingRate; +import org.knowm.xchange.dto.marketdata.FundingRates; +import org.knowm.xchange.dto.marketdata.Ticker; +import org.knowm.xchange.dto.marketdata.Trade; +import org.knowm.xchange.dto.marketdata.Trades; import org.knowm.xchange.dto.meta.CurrencyMetaData; import org.knowm.xchange.dto.meta.ExchangeMetaData; import org.knowm.xchange.dto.meta.InstrumentMetaData; import org.knowm.xchange.dto.meta.WalletHealth; -import org.knowm.xchange.dto.trade.*; +import org.knowm.xchange.dto.trade.LimitOrder; +import org.knowm.xchange.dto.trade.MarketOrder; +import org.knowm.xchange.dto.trade.OpenOrders; +import org.knowm.xchange.dto.trade.StopOrder; +import org.knowm.xchange.dto.trade.UserTrade; +import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.instrument.Instrument; public class BinanceAdapters { private static final DateTimeFormatter DATE_TIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final Map SYMBOL_TO_CURRENCY_PAIR = new HashMap<>(); + + private BinanceAdapters() {} /** @@ -134,17 +153,6 @@ public static OrderSide convert(OrderType type) { } } - public static CurrencyPair convert(String symbol) { - // Iterate by base currency priority at binance. - for (Currency base : Arrays.asList(Currency.BTC, Currency.ETH, Currency.BNB, Currency.USDT)) { - if (symbol.contains(base.toString())) { - String counter = symbol.replace(base.toString(), ""); - return new CurrencyPair(base, new Currency(counter)); - } - } - throw new IllegalArgumentException("Could not parse currency pair from '" + symbol + "'"); - } - public static long id(String id) { try { return Long.parseLong(id); @@ -178,23 +186,19 @@ public static OrderType convertType(boolean isBuyer) { return isBuyer ? OrderType.BID : OrderType.ASK; } + + public static void putSymbolMapping(String symbol, CurrencyPair currencyPair) { + SYMBOL_TO_CURRENCY_PAIR.put(symbol, currencyPair); + } + + + public static CurrencyPair toCurrencyPair(String symbol) { + return SYMBOL_TO_CURRENCY_PAIR.get(symbol); + } + + public static Instrument adaptSymbol(String symbol, boolean isFuture) { - int pairLength = symbol.length(); - CurrencyPair currencyPair; - if (symbol.endsWith("USDT")) { - currencyPair = new CurrencyPair(symbol.substring(0, pairLength - 4), "USDT"); - } else if (symbol.endsWith("USDC")) { - currencyPair = new CurrencyPair(symbol.substring(0, pairLength - 4), "USDC"); - } else if (symbol.endsWith("TUSD")) { - currencyPair = new CurrencyPair(symbol.substring(0, pairLength - 4), "TUSD"); - } else if (symbol.endsWith("USDS")) { - currencyPair = new CurrencyPair(symbol.substring(0, pairLength - 4), "USDS"); - } else if (symbol.endsWith("BUSD")) { - currencyPair = new CurrencyPair(symbol.substring(0, pairLength - 4), "BUSD"); - } else { - currencyPair = - new CurrencyPair(symbol.substring(0, pairLength - 3), symbol.substring(pairLength - 3)); - } + CurrencyPair currencyPair = toCurrencyPair(symbol); return (isFuture) ? new FuturesContract(currencyPair, "PERP") : currencyPair; } @@ -243,22 +247,28 @@ public static Order adaptOrder(BinanceOrder order, boolean isFuture) { return builder.build(); } - private static Ticker adaptPriceQuantity(BinancePriceQuantity priceQuantity, boolean isFuture) { + + public static Ticker toTicker(BinanceTicker24h binanceTicker24h, boolean isFuture) { + Instrument instrument = (isFuture) ? new FuturesContract(binanceTicker24h.getCurrencyPair(), "PERP"): binanceTicker24h.getCurrencyPair(); return new Ticker.Builder() - .instrument(adaptSymbol(priceQuantity.symbol, isFuture)) - .ask(priceQuantity.askPrice) - .askSize(priceQuantity.askQty) - .bid(priceQuantity.bidPrice) - .bidSize(priceQuantity.bidQty) + .instrument(instrument) + .open(binanceTicker24h.getOpenPrice()) + .ask(binanceTicker24h.getAskPrice()) + .bid(binanceTicker24h.getBidPrice()) + .last(binanceTicker24h.getLastPrice()) + .high(binanceTicker24h.getHighPrice()) + .low(binanceTicker24h.getLowPrice()) + .volume(binanceTicker24h.getVolume()) + .vwap(binanceTicker24h.getWeightedAvgPrice()) + .askSize(binanceTicker24h.getAskQty()) + .bidSize(binanceTicker24h.getBidQty()) + .quoteVolume(binanceTicker24h.getQuoteVolume()) + .timestamp( + binanceTicker24h.getCloseTime() > 0 ? new Date(binanceTicker24h.getCloseTime()) : null) + .percentageChange(binanceTicker24h.getPriceChangePercent()) .build(); } - public static List adaptPriceQuantities( - List priceQuantities, boolean isFuture) { - return priceQuantities.stream() - .map(binancePriceQuantity -> adaptPriceQuantity(binancePriceQuantity, isFuture)) - .collect(Collectors.toList()); - } static CurrencyMetaData adaptCurrencyMetaData( Map currencies, @@ -462,7 +472,7 @@ public static CandleStickData adaptBinanceCandleStickData( public static void adaptFutureExchangeMetaData( ExchangeMetaData exchangeMetaData, BinanceExchangeInfo binanceExchangeInfo) { - Symbol[] futureSymbols = binanceExchangeInfo.getSymbols(); + List futureSymbols = binanceExchangeInfo.getSymbols(); for (Symbol futureSymbol : futureSymbols) { if (futureSymbol.getStatus().equals("TRADING")) { // Symbols which are trading @@ -527,7 +537,7 @@ public static ExchangeMetaData adaptExchangeMetaData( Map instruments = new HashMap<>(); Map currencies = new HashMap<>(); - Symbol[] symbols = binanceExchangeInfo.getSymbols(); + List symbols = binanceExchangeInfo.getSymbols(); for (Symbol symbol : symbols) { if (symbol.getStatus().equals("TRADING")) { // Symbols which are trading diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAuthenticated.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAuthenticated.java index 3d6f88aa8c7..eddeaee6ccb 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAuthenticated.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceAuthenticated.java @@ -16,7 +16,16 @@ import java.util.List; import java.util.Map; import org.knowm.xchange.binance.dto.BinanceException; -import org.knowm.xchange.binance.dto.account.*; +import org.knowm.xchange.binance.dto.account.AssetDetail; +import org.knowm.xchange.binance.dto.account.AssetDividendResponse; +import org.knowm.xchange.binance.dto.account.BinanceAccountInformation; +import org.knowm.xchange.binance.dto.account.BinanceCurrencyInfo; +import org.knowm.xchange.binance.dto.account.BinanceDeposit; +import org.knowm.xchange.binance.dto.account.BinanceWithdraw; +import org.knowm.xchange.binance.dto.account.DepositAddress; +import org.knowm.xchange.binance.dto.account.TransferHistory; +import org.knowm.xchange.binance.dto.account.TransferSubUserHistory; +import org.knowm.xchange.binance.dto.account.WithdrawResponse; import org.knowm.xchange.binance.dto.trade.BinanceCancelledOrder; import org.knowm.xchange.binance.dto.trade.BinanceDustLog; import org.knowm.xchange.binance.dto.trade.BinanceListenKey; @@ -329,6 +338,17 @@ BinanceDustLog getDustLog( @QueryParam(SIGNATURE) ParamsDigest signature) throws IOException, BinanceException; + + @GET + @Path("/sapi/v1/capital/config/getall") + List getCurrencyInfos( + @QueryParam("recvWindow") Long recvWindow, + @QueryParam("timestamp") SynchronizedValueFactory timestamp, + @HeaderParam(X_MBX_APIKEY) String apiKey, + @QueryParam(SIGNATURE) ParamsDigest signature) + throws IOException, BinanceException; + + /** * Submit a withdraw request. * diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceExchange.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceExchange.java index c7232ea5275..2d82ab3c84b 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceExchange.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceExchange.java @@ -3,16 +3,19 @@ import static org.knowm.xchange.binance.dto.ExchangeType.SPOT; import java.util.Map; +import org.apache.commons.lang3.ObjectUtils; import org.knowm.xchange.BaseExchange; import org.knowm.xchange.Exchange; import org.knowm.xchange.ExchangeSpecification; import org.knowm.xchange.binance.dto.ExchangeType; import org.knowm.xchange.binance.dto.account.AssetDetail; +import org.knowm.xchange.binance.dto.meta.exchangeinfo.BinanceExchangeInfo; import org.knowm.xchange.binance.service.BinanceAccountService; import org.knowm.xchange.binance.service.BinanceMarketDataService; +import org.knowm.xchange.binance.service.BinanceMarketDataServiceRaw; import org.knowm.xchange.binance.service.BinanceTradeService; -import org.knowm.xchange.client.ExchangeRestProxyBuilder; import org.knowm.xchange.client.ResilienceRegistries; +import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.utils.AuthUtils; import si.mazi.rescu.SynchronizedValueFactory; @@ -100,34 +103,32 @@ public boolean usingSandbox() { @Override public void remoteInit() { try { - BinanceMarketDataService marketDataService = - (BinanceMarketDataService) this.marketDataService; + BinanceMarketDataServiceRaw marketDataServiceRaw = (BinanceMarketDataServiceRaw) marketDataService; BinanceAccountService accountService = (BinanceAccountService) getAccountService(); Map assetDetailMap = null; if (!usingSandbox() && isAuthenticated()) { assetDetailMap = accountService.getAssetDetails(); // not available in sndbox } - //hook for Binance US - if(exchangeSpecification.getExchangeSpecificParametersItem(EXCHANGE_TYPE) ==null) { - exchangeMetaData = - BinanceAdapters.adaptExchangeMetaData( - marketDataService.getExchangeInfo(), assetDetailMap); - } else { - switch ((ExchangeType) exchangeSpecification.getExchangeSpecificParametersItem( - EXCHANGE_TYPE)) { - case SPOT: { - exchangeMetaData = - BinanceAdapters.adaptExchangeMetaData( - marketDataService.getExchangeInfo(), assetDetailMap); - break; - } - case FUTURES: { - BinanceAdapters.adaptFutureExchangeMetaData( - exchangeMetaData, marketDataService.getFutureExchangeInfo()); - break; - } - } + + BinanceExchangeInfo exchangeInfo; + // get exchange type or SPOT as default + ExchangeType exchangeType = (ExchangeType) ObjectUtils.defaultIfNull(exchangeSpecification.getExchangeSpecificParametersItem(EXCHANGE_TYPE), SPOT); + + switch (exchangeType) { + case FUTURES: + exchangeInfo = marketDataServiceRaw.getFutureExchangeInfo(); + BinanceAdapters.adaptFutureExchangeMetaData(exchangeMetaData, exchangeInfo); + break; + default: + exchangeInfo = marketDataServiceRaw.getExchangeInfo(); + exchangeMetaData = BinanceAdapters.adaptExchangeMetaData(exchangeInfo, assetDetailMap); } + + // init symbol mappings + exchangeInfo.getSymbols().stream() + .filter(symbol -> ObjectUtils.allNotNull(symbol.getBaseAsset(), symbol.getQuoteAsset(), symbol.getSymbol())) + .forEach(symbol -> BinanceAdapters.putSymbolMapping(symbol.getSymbol(), new CurrencyPair(symbol.getBaseAsset(), symbol.getQuoteAsset()))); + } catch (Exception e) { throw new ExchangeException("Failed to initialize: " + e.getMessage(), e); } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceUsExchange.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceUsExchange.java index d731692c18a..b0caf8d8d78 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceUsExchange.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/BinanceUsExchange.java @@ -1,7 +1,5 @@ package org.knowm.xchange.binance; -import static org.knowm.xchange.binance.dto.ExchangeType.SPOT; - import java.io.IOException; import org.knowm.xchange.ExchangeSpecification; import org.knowm.xchange.binance.service.BinanceMarketDataService; diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyConverter.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyConverter.java new file mode 100644 index 00000000000..d524e0ad889 --- /dev/null +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyConverter.java @@ -0,0 +1,13 @@ +package org.knowm.xchange.binance.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.currency.Currency; + +/** Converts string value {@code Currency} */ +public class StringToCurrencyConverter extends StdConverter { + + @Override + public Currency convert(String value) { + return Currency.getInstance(value); + } +} diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyPairConverter.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyPairConverter.java new file mode 100644 index 00000000000..2b5e47542bb --- /dev/null +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/config/converter/StringToCurrencyPairConverter.java @@ -0,0 +1,14 @@ +package org.knowm.xchange.binance.config.converter; + +import com.fasterxml.jackson.databind.util.StdConverter; +import org.knowm.xchange.binance.BinanceAdapters; +import org.knowm.xchange.currency.CurrencyPair; + +/** Converts string to {@code CurrencyPair} */ +public class StringToCurrencyPairConverter extends StdConverter { + + @Override + public CurrencyPair convert(String value) { + return BinanceAdapters.toCurrencyPair(value); + } +} diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/account/BinanceCurrencyInfo.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/account/BinanceCurrencyInfo.java new file mode 100644 index 00000000000..99b7ada13c4 --- /dev/null +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/account/BinanceCurrencyInfo.java @@ -0,0 +1,138 @@ +package org.knowm.xchange.binance.dto.account; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import java.math.BigDecimal; +import java.util.List; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.binance.config.converter.StringToCurrencyConverter; +import org.knowm.xchange.currency.Currency; + +@Data +@Builder +@Jacksonized +public class BinanceCurrencyInfo { + + @JsonProperty("coin") + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency currency; + + @JsonProperty("depositAllEnable") + private Boolean depositEnabled; + + @JsonProperty("withdrawAllEnable") + private Boolean withdrawEnabled; + + @JsonProperty("name") + private String name; + + @JsonProperty("free") + private BigDecimal free; + + @JsonProperty("locked") + private BigDecimal locked; + + @JsonProperty("freeze") + private BigDecimal freeze; + + @JsonProperty("withdrawing") + private BigDecimal withdrawing; + + @JsonProperty("ipoing") + private BigDecimal ipoing; + + @JsonProperty("ipoable") + private BigDecimal ipoable; + + @JsonProperty("storage") + private BigDecimal storage; + + @JsonProperty("isLegalMoney") + private Boolean isLegalMoney; + + @JsonProperty("trading") + private Boolean trading; + + @JsonProperty("networkList") + private List networks; + + + @Data + @Builder + @Jacksonized + public static class Network { + + @JsonProperty("network") + private String id; + + @JsonProperty("coin") + @JsonDeserialize(converter = StringToCurrencyConverter.class) + private Currency currency; + + @JsonProperty("withdrawIntegerMultiple") + private BigDecimal withdrawIntegerMultiple; + + @JsonProperty("isDefault") + private Boolean isDefault; + + @JsonProperty("depositEnable") + private Boolean depositEnabled; + + @JsonProperty("withdrawEnable") + private Boolean withdrawEnabled; + + @JsonProperty("depositDesc") + private String depositDesc; + + @JsonProperty("withdrawDesc") + private String withdrawDesc; + + @JsonProperty("specialTips") + private String specialTips; + + @JsonProperty("name") + private String name; + + @JsonProperty("resetAddressStatus") + private Boolean resetAddressStatus; + + @JsonProperty("addressRegex") + private String addressRegex; + + @JsonProperty("memoRegex") + private String memoRegex; + + @JsonProperty("withdrawFee") + private BigDecimal withdrawFee; + + @JsonProperty("withdrawMin") + private BigDecimal withdrawMin; + + @JsonProperty("withdrawMax") + private BigDecimal withdrawMax; + + @JsonProperty("minConfirm") + private Integer minConfirm; + + @JsonProperty("unLockConfirm") + private Integer unLockConfirm; + + @JsonProperty("sameAddress") + private Boolean sameAddress; + + @JsonProperty("estimatedArrivalTime") + private Integer estimatedArrivalTime; + + @JsonProperty("busy") + private Boolean busy; + + @JsonProperty("contractAddressUrl") + private String contractAddressUrl; + + @JsonProperty("contractAddress") + private String contractAddress; + + } +} diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePrice.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePrice.java index c1314c98e6f..3ecef525356 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePrice.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePrice.java @@ -1,59 +1,28 @@ package org.knowm.xchange.binance.dto.marketdata; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.binance.config.converter.StringToCurrencyPairConverter; import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.utils.Assert; -import org.knowm.xchange.utils.jackson.CurrencyPairDeserializer; -public final class BinancePrice implements Comparable { +@Data +@Builder +@Jacksonized +public class BinancePrice { - private final CurrencyPair pair; - private final BigDecimal price; + @JsonProperty("symbol") + @JsonDeserialize(converter = StringToCurrencyPairConverter.class) + CurrencyPair currencyPair; - public BinancePrice( - @JsonProperty("symbol") String symbol, @JsonProperty("price") BigDecimal price) { - this(CurrencyPairDeserializer.getCurrencyPairFromString(symbol), price); - } - - public BinancePrice(CurrencyPair pair, BigDecimal price) { - Assert.notNull(price, "Null price"); - Assert.notNull(pair, "Null pair"); - this.pair = pair; - this.price = price; - } - - public CurrencyPair getCurrencyPair() { - return pair; - } - - public BigDecimal getPrice() { - return price; - } - - @Override - public int compareTo(BinancePrice o) { - if (pair.compareTo(o.pair) == 0) return price.compareTo(o.price); - return pair.compareTo(o.pair); - } + @JsonProperty("price") + BigDecimal price; - @Override - public int hashCode() { - int result = 1; - result = 31 * result + ((pair == null) ? 0 : pair.hashCode()); - result = 31 * result + ((price == null) ? 0 : price.hashCode()); - return result; + public boolean isValid() { + return currencyPair != null && price != null; } - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (!(obj instanceof BinancePrice)) return false; - BinancePrice other = (BinancePrice) obj; - return pair.equals(other.pair) && price.equals(other.price); - } - - public String toString() { - return "[" + pair + "] => " + price; - } } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePriceQuantity.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePriceQuantity.java index fdc37bf89cf..1c0dc93cd9d 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePriceQuantity.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinancePriceQuantity.java @@ -1,26 +1,38 @@ package org.knowm.xchange.binance.dto.marketdata; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.apache.commons.lang3.ObjectUtils; +import org.knowm.xchange.binance.config.converter.StringToCurrencyPairConverter; +import org.knowm.xchange.currency.CurrencyPair; +@Data +@Builder +@Jacksonized public final class BinancePriceQuantity { - public final String symbol; - public final BigDecimal bidPrice; - public final BigDecimal bidQty; - public final BigDecimal askPrice; - public final BigDecimal askQty; - - public BinancePriceQuantity( - @JsonProperty("symbol") String symbol, - @JsonProperty("bidPrice") BigDecimal bidPrice, - @JsonProperty("bidQty") BigDecimal bidQty, - @JsonProperty("askPrice") BigDecimal askPrice, - @JsonProperty("askQty") BigDecimal askQty) { - this.symbol = symbol; - this.bidPrice = bidPrice; - this.bidQty = bidQty; - this.askPrice = askPrice; - this.askQty = askQty; + @JsonProperty("symbol") + @JsonDeserialize(converter = StringToCurrencyPairConverter.class) + CurrencyPair currencyPair; + + @JsonProperty("bidPrice") + BigDecimal bidPrice; + + @JsonProperty("bidQty") + BigDecimal bidQty; + + @JsonProperty("askPrice") + BigDecimal askPrice; + + @JsonProperty("askQty") + BigDecimal askQty; + + public boolean isValid() { + return ObjectUtils.allNotNull(currencyPair, bidPrice, bidQty, askPrice, askQty); } + } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinanceTicker24h.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinanceTicker24h.java index adc9b2bf6bb..77a722d9ca4 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinanceTicker24h.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/marketdata/BinanceTicker24h.java @@ -1,117 +1,48 @@ package org.knowm.xchange.binance.dto.marketdata; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.math.BigDecimal; -import java.util.Date; -import lombok.Getter; -import org.knowm.xchange.binance.BinanceAdapters; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.instrument.Instrument; - -@Getter +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import org.knowm.xchange.binance.config.converter.StringToCurrencyPairConverter; +import org.knowm.xchange.currency.CurrencyPair; + +@Data +@Builder +@Jacksonized +@AllArgsConstructor public final class BinanceTicker24h { - private final BigDecimal priceChange; - private final BigDecimal priceChangePercent; - private final BigDecimal weightedAvgPrice; - private final BigDecimal prevClosePrice; - private final BigDecimal lastPrice; - private final BigDecimal lastQty; - private final BigDecimal bidPrice; - private final BigDecimal bidQty; - private final BigDecimal askPrice; - private final BigDecimal askQty; - private final BigDecimal openPrice; - private final BigDecimal highPrice; - private final BigDecimal lowPrice; - private final BigDecimal volume; - private final BigDecimal quoteVolume; - private final long openTime; - private final long closeTime; - private final long firstId; - private final long lastId; - private final long count; - private final String symbol; - - // The curency pair that is unfortunately not returned in the response - private Instrument pair; - - // The cached ticker - private Ticker ticker; - - public BinanceTicker24h( - @JsonProperty("priceChange") BigDecimal priceChange, - @JsonProperty("priceChangePercent") BigDecimal priceChangePercent, - @JsonProperty("weightedAvgPrice") BigDecimal weightedAvgPrice, - @JsonProperty("prevClosePrice") BigDecimal prevClosePrice, - @JsonProperty("lastPrice") BigDecimal lastPrice, - @JsonProperty("lastQty") BigDecimal lastQty, - @JsonProperty("bidPrice") BigDecimal bidPrice, - @JsonProperty("bidQty") BigDecimal bidQty, - @JsonProperty("askPrice") BigDecimal askPrice, - @JsonProperty("askQty") BigDecimal askQty, - @JsonProperty("openPrice") BigDecimal openPrice, - @JsonProperty("highPrice") BigDecimal highPrice, - @JsonProperty("lowPrice") BigDecimal lowPrice, - @JsonProperty("volume") BigDecimal volume, - @JsonProperty("quoteVolume") BigDecimal quoteVolume, - @JsonProperty("openTime") long openTime, - @JsonProperty("closeTime") long closeTime, - @JsonProperty("firstId") long firstId, - @JsonProperty("lastId") long lastId, - @JsonProperty("count") long count, - @JsonProperty("symbol") String symbol) { - this.priceChange = priceChange; - this.priceChangePercent = priceChangePercent; - this.weightedAvgPrice = weightedAvgPrice; - this.prevClosePrice = prevClosePrice; - this.lastPrice = lastPrice; - this.lastQty = lastQty; - this.bidPrice = bidPrice; - this.bidQty = bidQty; - this.askPrice = askPrice; - this.askQty = askQty; - this.openPrice = openPrice; - this.highPrice = highPrice; - this.lowPrice = lowPrice; - this.volume = volume; - this.quoteVolume = quoteVolume; - this.openTime = openTime; - this.closeTime = closeTime; - this.firstId = firstId; - this.lastId = lastId; - this.count = count; - this.symbol = symbol; - } - - public void setInstrument(Instrument pair) { - this.pair = pair; - } - - public synchronized Ticker toTicker(boolean isFuture) { - Instrument instrument = pair; - if (instrument == null) { - instrument = BinanceAdapters.adaptSymbol(symbol, isFuture); - } - if (ticker == null) { - ticker = - new Ticker.Builder() - .instrument(instrument) - .open(openPrice) - .ask(askPrice) - .bid(bidPrice) - .last(lastPrice) - .high(highPrice) - .low(lowPrice) - .volume(volume) - .vwap(weightedAvgPrice) - .askSize(askQty) - .bidSize(bidQty) - .quoteVolume(quoteVolume) - .timestamp(closeTime > 0 ? new Date(closeTime) : null) - .percentageChange(priceChangePercent) - .build(); - } - return ticker; + private BigDecimal priceChange; + private BigDecimal priceChangePercent; + private BigDecimal weightedAvgPrice; + private BigDecimal prevClosePrice; + private BigDecimal lastPrice; + private BigDecimal lastQty; + private BigDecimal bidPrice; + private BigDecimal bidQty; + private BigDecimal askPrice; + private BigDecimal askQty; + private BigDecimal openPrice; + private BigDecimal highPrice; + private BigDecimal lowPrice; + private BigDecimal volume; + private BigDecimal quoteVolume; + private long openTime; + private long closeTime; + private long firstId; + private long lastId; + private long count; + + @JsonProperty("symbol") + @JsonDeserialize(converter = StringToCurrencyPairConverter.class) + private CurrencyPair currencyPair; + + + public boolean isValid() { + return currencyPair != null; } } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/meta/exchangeinfo/BinanceExchangeInfo.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/meta/exchangeinfo/BinanceExchangeInfo.java index 048ed55514c..aab749c7656 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/meta/exchangeinfo/BinanceExchangeInfo.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/dto/meta/exchangeinfo/BinanceExchangeInfo.java @@ -1,22 +1,23 @@ package org.knowm.xchange.binance.dto.meta.exchangeinfo; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; +import java.util.List; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; -@Getter -@Setter -@ToString +@Data +@Builder +@Jacksonized public class BinanceExchangeInfo { private String timezone; - private Symbol[] symbols; + private List symbols; private String serverTime; - private RateLimit[] rateLimits; + private List rateLimits; - private String[] exchangeFilters; + private List exchangeFilters; - private String[] permissions; + private List permissions; } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountService.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountService.java index 02149f32047..6fe9d290f72 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountService.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountService.java @@ -8,21 +8,34 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.Instant; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceErrorAdapter; import org.knowm.xchange.binance.BinanceExchange; import org.knowm.xchange.binance.dto.BinanceException; import org.knowm.xchange.binance.dto.ExchangeType; -import org.knowm.xchange.binance.dto.account.*; +import org.knowm.xchange.binance.dto.account.AssetDetail; +import org.knowm.xchange.binance.dto.account.BinanceAccountInformation; +import org.knowm.xchange.binance.dto.account.BinanceFundingHistoryParams; import org.knowm.xchange.binance.dto.account.BinanceMasterAccountTransferHistoryParams; import org.knowm.xchange.binance.dto.account.BinanceSubAccountTransferHistoryParams; +import org.knowm.xchange.binance.dto.account.DepositAddress; +import org.knowm.xchange.binance.dto.account.WithdrawResponse; import org.knowm.xchange.binance.dto.account.futures.BinanceFutureAccountInformation; import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.Currency; -import org.knowm.xchange.dto.account.*; +import org.knowm.xchange.dto.account.AccountInfo; +import org.knowm.xchange.dto.account.AddressWithTag; +import org.knowm.xchange.dto.account.Fee; +import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.dto.account.FundingRecord.Status; import org.knowm.xchange.dto.account.FundingRecord.Type; +import org.knowm.xchange.dto.account.OpenPosition; +import org.knowm.xchange.dto.account.Wallet; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.DefaultWithdrawFundsParams; diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountServiceRaw.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountServiceRaw.java index db07456d675..b4a766a73f3 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountServiceRaw.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceAccountServiceRaw.java @@ -10,7 +10,16 @@ import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceExchange; import org.knowm.xchange.binance.dto.BinanceException; -import org.knowm.xchange.binance.dto.account.*; +import org.knowm.xchange.binance.dto.account.AssetDetail; +import org.knowm.xchange.binance.dto.account.AssetDividendResponse; +import org.knowm.xchange.binance.dto.account.BinanceAccountInformation; +import org.knowm.xchange.binance.dto.account.BinanceCurrencyInfo; +import org.knowm.xchange.binance.dto.account.BinanceDeposit; +import org.knowm.xchange.binance.dto.account.BinanceWithdraw; +import org.knowm.xchange.binance.dto.account.DepositAddress; +import org.knowm.xchange.binance.dto.account.TransferHistory; +import org.knowm.xchange.binance.dto.account.TransferSubUserHistory; +import org.knowm.xchange.binance.dto.account.WithdrawResponse; import org.knowm.xchange.binance.dto.account.futures.BinanceFutureAccountInformation; import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.Currency; @@ -30,6 +39,16 @@ public BinanceAccountInformation account() throws BinanceException, IOException .call(); } + + public List currencyInfos() throws BinanceException, IOException { + return decorateApiCall( + () -> binance.getCurrencyInfos(getRecvWindow(), getTimestampFactory(), apiKey, signatureCreator)) + .withRetry(retry("currencyInfo")) + .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER), 5) + .call(); + } + + public BinanceFutureAccountInformation futuresAccount() throws BinanceException, IOException { return decorateApiCall( () -> diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceBaseService.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceBaseService.java index 6968dcf5b06..2df288edb7e 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceBaseService.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceBaseService.java @@ -1,7 +1,6 @@ package org.knowm.xchange.binance.service; import static org.knowm.xchange.binance.BinanceExchange.EXCHANGE_TYPE; -import static org.knowm.xchange.binance.BinanceResilience.REQUEST_WEIGHT_RATE_LIMITER; import java.io.IOException; import org.knowm.xchange.ExchangeSpecification; @@ -10,7 +9,6 @@ import org.knowm.xchange.binance.BinanceFuturesAuthenticated; import org.knowm.xchange.binance.dto.ExchangeType; import org.knowm.xchange.binance.dto.meta.BinanceSystemStatus; -import org.knowm.xchange.binance.dto.meta.exchangeinfo.BinanceExchangeInfo; import org.knowm.xchange.client.ExchangeRestProxyBuilder; import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.service.BaseResilientExchangeService; @@ -98,20 +96,6 @@ public SynchronizedValueFactory getTimestampFactory() { return exchange.getTimestampFactory(); } - public BinanceExchangeInfo getExchangeInfo() throws IOException { - return decorateApiCall(binance::exchangeInfo) - .withRetry(retry("exchangeInfo")) - .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER)) - .call(); - } - - public BinanceExchangeInfo getFutureExchangeInfo() throws IOException { - return decorateApiCall(binanceFutures::exchangeInfo) - .withRetry(retry("exchangeInfo")) - .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER)) - .call(); - } - public BinanceSystemStatus getSystemStatus() throws IOException { return decorateApiCall(binance::systemStatus).call(); } diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataService.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataService.java index 4f435bc382b..aa86840d183 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataService.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataService.java @@ -2,19 +2,25 @@ import java.io.IOException; import java.time.Instant; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; -import org.knowm.xchange.binance.*; +import org.knowm.xchange.binance.BinanceAdapters; +import org.knowm.xchange.binance.BinanceErrorAdapter; +import org.knowm.xchange.binance.BinanceExchange; import org.knowm.xchange.binance.dto.BinanceException; import org.knowm.xchange.binance.dto.marketdata.BinanceOrderbook; import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; import org.knowm.xchange.client.ResilienceRegistries; +import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.derivative.FuturesContract; import org.knowm.xchange.dto.Order.OrderType; -import org.knowm.xchange.dto.marketdata.*; +import org.knowm.xchange.dto.marketdata.FundingRate; +import org.knowm.xchange.dto.marketdata.FundingRates; +import org.knowm.xchange.dto.marketdata.OrderBook; +import org.knowm.xchange.dto.marketdata.Ticker; +import org.knowm.xchange.dto.marketdata.Trades; import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.instrument.Instrument; @@ -49,27 +55,39 @@ public Trades getTrades(Instrument instrument, Object... args) throws IOExceptio @Override public Ticker getTicker(Instrument instrument, Object... args) throws IOException { try { - return ticker24hAllProducts(instrument).toTicker(instrument instanceof FuturesContract); + return BinanceAdapters.toTicker(ticker24hAllProducts(instrument), instrument instanceof FuturesContract); } catch (BinanceException e) { throw BinanceErrorAdapter.adapt(e); } } + + @Override + public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOException { + return getTicker((Instrument) currencyPair, args); + } + + @Override public List getTickers(Params params) throws IOException { try { - if (this.exchange.isFuturesEnabled()) { - return ticker24hAllProducts(true).stream().map(f -> f.toTicker(true)) - .collect(Collectors.toList()); - } else { - return ticker24hAllProducts(false).stream().map(f -> f.toTicker(false)) - .collect(Collectors.toList()); - } + boolean isFutures = exchange.isFuturesEnabled(); + + return ticker24hAllProducts(isFutures).stream() + .filter(BinanceTicker24h::isValid) + .map(binanceTicker24h -> BinanceAdapters.toTicker(binanceTicker24h, isFutures)) + .collect(Collectors.toList()); } catch (BinanceException e) { throw BinanceErrorAdapter.adapt(e); } } + @Override + public OrderBook getOrderBook(CurrencyPair currencyPair, Object... args) throws IOException { + return getOrderBook((Instrument) currencyPair, args); + } + + @Override public OrderBook getOrderBook(Instrument instrument, Object... args) throws IOException { return getBinanceOrderBook(instrument, args); diff --git a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataServiceRaw.java b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataServiceRaw.java index 944c9071d59..fe3ca61615e 100644 --- a/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataServiceRaw.java +++ b/xchange-binance/src/main/java/org/knowm/xchange/binance/service/BinanceMarketDataServiceRaw.java @@ -3,13 +3,20 @@ import static org.knowm.xchange.binance.BinanceResilience.REQUEST_WEIGHT_RATE_LIMITER; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceExchange; -import org.knowm.xchange.binance.dto.marketdata.*; +import org.knowm.xchange.binance.dto.marketdata.BinanceAggTrades; +import org.knowm.xchange.binance.dto.marketdata.BinanceFundingRate; +import org.knowm.xchange.binance.dto.marketdata.BinanceKline; +import org.knowm.xchange.binance.dto.marketdata.BinanceOrderbook; +import org.knowm.xchange.binance.dto.marketdata.BinancePrice; +import org.knowm.xchange.binance.dto.marketdata.BinancePriceQuantity; +import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; +import org.knowm.xchange.binance.dto.marketdata.KlineInterval; import org.knowm.xchange.binance.dto.meta.BinanceTime; +import org.knowm.xchange.binance.dto.meta.exchangeinfo.BinanceExchangeInfo; import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.derivative.FuturesContract; @@ -33,6 +40,23 @@ public BinanceTime binanceTime() throws IOException { .call(); } + + public BinanceExchangeInfo getExchangeInfo() throws IOException { + return decorateApiCall(binance::exchangeInfo) + .withRetry(retry("exchangeInfo")) + .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER)) + .call(); + } + + + public BinanceExchangeInfo getFutureExchangeInfo() throws IOException { + return decorateApiCall(binanceFutures::exchangeInfo) + .withRetry(retry("exchangeInfo")) + .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER)) + .call(); + } + + public BinanceOrderbook getBinanceOrderbookAllProducts(Instrument pair, Integer limit) throws IOException { return decorateApiCall( @@ -107,7 +131,6 @@ public BinanceTicker24h ticker24hAllProducts(Instrument pair) throws IOException .withRetry(retry("ticker24h")) .withRateLimiter(rateLimiter(REQUEST_WEIGHT_RATE_LIMITER)) .call(); - ticker24h.setInstrument(pair); return ticker24h; } diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/AbstractResilienceTest.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/AbstractResilienceTest.java index 4a986e384d5..8f9dd14b57a 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/AbstractResilienceTest.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/AbstractResilienceTest.java @@ -32,9 +32,7 @@ protected BinanceExchange createExchangeWithRateLimiterEnabled() { } protected BinanceExchange createExchange(boolean retryEnabled, boolean rateLimiterEnabled) { - BinanceExchange exchange = - (BinanceExchange) - ExchangeFactory.INSTANCE.createExchangeWithoutSpecification(BinanceExchange.class); + BinanceExchange exchange = ExchangeFactory.INSTANCE.createExchangeWithoutSpecification(BinanceExchange.class); ExchangeSpecification specification = exchange.getDefaultExchangeSpecification(); specification.setHost("localhost"); specification.setSslUri("http://localhost:" + wireMockRule.port() + "/"); diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/BinanceFutureTest.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/BinanceFutureTest.java index ad1902a8076..2a601b849d8 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/BinanceFutureTest.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/BinanceFutureTest.java @@ -7,14 +7,17 @@ import java.io.IOException; import java.math.BigDecimal; -import java.util.*; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.knowm.xchange.Exchange; import org.knowm.xchange.ExchangeFactory; import org.knowm.xchange.ExchangeSpecification; -import org.knowm.xchange.binance.dto.ExchangeType; import org.knowm.xchange.binance.dto.trade.BinanceCancelOrderParams; import org.knowm.xchange.binance.dto.trade.BinanceQueryOrderParams; import org.knowm.xchange.binance.dto.trade.BinanceTradeHistoryParams; diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/ExchangeMetaDataIntegration.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/ExchangeMetaDataIntegration.java index 9afa524b088..d7dda443773 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/ExchangeMetaDataIntegration.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/ExchangeMetaDataIntegration.java @@ -2,38 +2,30 @@ import static org.assertj.core.api.Assertions.assertThat; -import org.junit.BeforeClass; +import java.util.Map; import org.junit.Test; import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.dto.meta.ExchangeMetaData; import org.knowm.xchange.dto.meta.InstrumentMetaData; +import org.knowm.xchange.instrument.Instrument; public class ExchangeMetaDataIntegration extends BinanceExchangeIntegration { - static ExchangeMetaData metaData; - - @BeforeClass - public static void fetchMetaData() throws Exception { - createExchange(); - metaData = exchange.getExchangeMetaData(); - } @Test - public void testEthBtcPairMetaData() { - InstrumentMetaData pairMetaData = metaData.getInstruments().get(CurrencyPair.ETH_BTC); - assertThat(pairMetaData.getPriceScale()).isEqualByComparingTo(5); - assertThat(pairMetaData.getMinimumAmount()).isEqualByComparingTo("0.0001"); - assertThat(pairMetaData.getMaximumAmount().longValueExact()).isEqualTo(100000); - assertThat(pairMetaData.getAmountStepSize()).isEqualByComparingTo("0.0001"); + public void valid_instrumentsMetaData() { + Map instruments = exchange.getExchangeMetaData().getInstruments(); + assertThat(instruments.values()).allSatisfy(instrumentMetaData -> { + assertThat(instrumentMetaData.getPriceScale()).isNotNull(); + assertThat(instrumentMetaData.getAmountStepSize()).isNotNull(); + + assertThat(instrumentMetaData.getMinimumAmount()).isLessThan(instrumentMetaData.getMaximumAmount()); + }); } + @Test - public void testLtcBtcPairMetaData() { - InstrumentMetaData pairMetaData = metaData.getInstruments().get(new CurrencyPair("LTC/BTC")); - assertThat(pairMetaData.getPriceScale()).isEqualByComparingTo(6); - assertThat(pairMetaData.getMinimumAmount()).isEqualByComparingTo("0.001"); - assertThat(pairMetaData.getMaximumAmount().longValueExact()).isEqualTo(100000); - assertThat(pairMetaData.getAmountStepSize()).isEqualByComparingTo("0.001"); + public void valid_symbol_mapping() { + assertThat(BinanceAdapters.toCurrencyPair("BTCUSDT")).isEqualTo(CurrencyPair.BTC_USDT); } } diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/account/AccountServiceIntegration.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/account/AccountServiceIntegration.java index 1039d09aa63..a60c034fe82 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/account/AccountServiceIntegration.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/account/AccountServiceIntegration.java @@ -1,5 +1,7 @@ package org.knowm.xchange.binance.service.account; +import static org.assertj.core.api.Assertions.assertThat; + import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -11,6 +13,7 @@ import org.junit.Test; import org.knowm.xchange.binance.BinanceExchangeIntegration; import org.knowm.xchange.binance.dto.account.AssetDetail; +import org.knowm.xchange.binance.dto.account.BinanceCurrencyInfo; import org.knowm.xchange.binance.dto.account.BinanceDeposit; import org.knowm.xchange.binance.dto.account.TransferHistory; import org.knowm.xchange.binance.service.BinanceAccountService; @@ -48,6 +51,15 @@ public void testAssetDetail() throws Exception { Assert.assertFalse(assetDetails.isEmpty()); } + + @Test + public void testCurrencyInfos() throws Exception { + assumeProduction(); + List currencyInfos = accountService.currencyInfos(); + assertThat(currencyInfos).isNotEmpty(); + } + + @Test public void testMetaData() { diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceIntegration.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceIntegration.java index 018b0bd4d5d..b437e151e14 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceIntegration.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceIntegration.java @@ -1,64 +1,60 @@ package org.knowm.xchange.binance.service.marketdata; +import static org.assertj.core.api.Assertions.assertThat; + import java.io.IOException; -import java.util.ArrayList; import java.util.List; -import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.knowm.xchange.binance.BinanceExchangeIntegration; -import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; -import org.knowm.xchange.binance.service.BinanceMarketDataService; -import org.knowm.xchange.currency.Currency; +import org.knowm.xchange.currency.CurrencyPair; +import org.knowm.xchange.dto.marketdata.OrderBook; +import org.knowm.xchange.dto.marketdata.Ticker; import org.knowm.xchange.instrument.Instrument; -import org.knowm.xchange.service.marketdata.MarketDataService; public class MarketDataServiceIntegration extends BinanceExchangeIntegration { - static MarketDataService marketService; + @Test + public void valid_timestamp() { - @BeforeClass - public static void beforeClass() throws Exception { - createExchange(); - marketService = exchange.getMarketDataService(); + long serverTime = exchange.getTimestampFactory().createValue(); + assertThat(serverTime).isPositive(); } - @Before - public void before() { - Assume.assumeNotNull(exchange.getExchangeSpecification().getApiKey()); - } @Test - public void testTimestamp() { + public void valid_all_tickers() throws IOException { + List tickers = exchange.getMarketDataService().getTickers(null); + assertThat(tickers).isNotEmpty(); + + + assertThat(tickers).allSatisfy(ticker -> { + assertThat(ticker.getInstrument()).isNotNull(); + assertThat(ticker.getLast()).isNotNull(); + if (ticker.getBid().signum() > 0 && ticker.getAsk().signum() > 0) { + assertThat(ticker.getBid()).isLessThan(ticker.getAsk()); + } + }); - long serverTime = exchange.getTimestampFactory().createValue(); - Assert.assertTrue(0 < serverTime); } + @Test - public void testBinanceTicker24h() throws Exception { + public void valid_ticker() throws Exception { + Ticker ticker = exchange.getMarketDataService().getTicker(CurrencyPair.BTC_USDT); - List tickers = new ArrayList<>(); - for (Instrument cp : exchange.getExchangeMetaData().getInstruments().keySet()) { - if (cp.getCounter() == Currency.USDT) { - tickers.add(getBinanceTicker24h(cp)); - } - } + assertThat(ticker).hasNoNullFieldsOrProperties(); + assertThat(ticker.getBid()).isLessThan(ticker.getAsk()); + } - tickers.sort( - (BinanceTicker24h t1, BinanceTicker24h t2) -> - t2.getPriceChangePercent().compareTo(t1.getPriceChangePercent())); - tickers.forEach( - t -> - System.out.println( - t.getSymbol() + " => " + String.format("%+.2f%%", t.getPriceChangePercent()))); - } + @Test + public void valid_orderBook() throws IOException { + OrderBook orderBook = exchange.getMarketDataService().getOrderBook((Instrument) CurrencyPair.BTC_USDT); - private BinanceTicker24h getBinanceTicker24h(Instrument pair) throws IOException { - BinanceMarketDataService service = (BinanceMarketDataService) marketService; - return service.ticker24hAllProducts(pair); + assertThat(orderBook.getAsks()).isNotEmpty(); + assertThat(orderBook.getBids()).isNotEmpty(); + assertThat(orderBook.getBids().get(0)).isLessThan(orderBook.getAsks().get(0)); } + + } diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceResilienceTest.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceResilienceTest.java index 80bfab8e71f..6f5458b11b4 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceResilienceTest.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/marketdata/MarketDataServiceResilienceTest.java @@ -15,6 +15,7 @@ import java.time.Duration; import org.junit.Test; import org.knowm.xchange.binance.AbstractResilienceTest; +import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceExchange; import org.knowm.xchange.binance.BinanceResilience; import org.knowm.xchange.currency.CurrencyPair; @@ -27,6 +28,7 @@ public class MarketDataServiceResilienceTest extends AbstractResilienceTest { @Test public void shouldSucceedIfFirstCallTimeoutedAndRetryIsEnabled() throws Exception { + BinanceAdapters.putSymbolMapping("BNBBTC", new CurrencyPair("BNB/BTC")); // given MarketDataService service = createExchangeWithRetryEnabled().getMarketDataService(); stubForTicker24WithFirstCallTimetoutAndSecondSuccessful(); diff --git a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/trade/TradeServiceResilienceTest.java b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/trade/TradeServiceResilienceTest.java index e4bcf36c26f..82df5afb780 100644 --- a/xchange-binance/src/test/java/org/knowm/xchange/binance/service/trade/TradeServiceResilienceTest.java +++ b/xchange-binance/src/test/java/org/knowm/xchange/binance/service/trade/TradeServiceResilienceTest.java @@ -12,6 +12,7 @@ import org.junit.Before; import org.junit.Test; import org.knowm.xchange.binance.AbstractResilienceTest; +import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceExchange; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; @@ -30,6 +31,7 @@ public void resertResilienceRegistries() { @Test public void shouldSucceedIfFirstCallTimeoutedAndRetryIsEnabled() throws Exception { // given + BinanceAdapters.putSymbolMapping("LTCBTC", CurrencyPair.LTC_BTC); TradeService service = createExchangeWithRetryEnabled().getTradeService(); stubForOpenOrdersWithFirstCallTimetoutAndSecondSuccessful(); OpenOrdersParams params = service.createOpenOrdersParams(); diff --git a/xchange-binance/src/test/resources/rest/market.http b/xchange-binance/src/test/resources/rest/market.http new file mode 100644 index 00000000000..8ef3d081051 --- /dev/null +++ b/xchange-binance/src/test/resources/rest/market.http @@ -0,0 +1,24 @@ +### 24hr Ticker Price Change Statistics +GET {{api_host}}/api/v3/ticker/24hr + + +### Symbol Price Ticker +GET {{api_host}}/api/v3/ticker/price + + +### Symbol Order Book Ticker (Single) +GET {{api_host}}/api/v3/ticker/bookTicker?symbol=BTCUSDT + + +### Symbol Order Book Ticker (Several) +GET {{api_host}}/api/v3/ticker/bookTicker?symbols=["BTCUSDT","BNBUSDT"] + + +### Symbol Order Book Ticker (All) +GET {{api_host}}/api/v3/ticker/bookTicker + + +### Exchange Information +GET {{api_host}}//api/v3/exchangeInfo + + diff --git a/xchange-binance/src/test/resources/rest/sign.js b/xchange-binance/src/test/resources/rest/sign.js new file mode 100644 index 00000000000..d4461c6b044 --- /dev/null +++ b/xchange-binance/src/test/resources/rest/sign.js @@ -0,0 +1,16 @@ +export function gen_sign(request) { + const pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + const url = request.url.tryGetSubstituted(); + const matches = url.match(pattern); + + const timestamp = Math.floor(Date.now()).toFixed(); + const query = matches[7] || ""; + + const payloadToSign = query.replace("&signature={{signature}}", "").replace("{{timestamp}}", timestamp); + + const apiSecret = request.environment.get("api_secret"); + const sign = crypto.hmac.sha256().withTextSecret(apiSecret).updateWithText(payloadToSign).digest().toHex(); + + request.variables.set("timestamp", timestamp); + request.variables.set("signature", sign); +} \ No newline at end of file diff --git a/xchange-binance/src/test/resources/rest/wallet.http b/xchange-binance/src/test/resources/rest/wallet.http new file mode 100644 index 00000000000..7d458981556 --- /dev/null +++ b/xchange-binance/src/test/resources/rest/wallet.http @@ -0,0 +1,8 @@ +### All Coins' Information (USER_DATA) +< {% + import {gen_sign} from 'sign.js' + gen_sign(request); +%} + +GET {{api_host}}/sapi/v1/capital/config/getall?timestamp={{timestamp}}&signature={{signature}} +X-MBX-APIKEY: {{api_key}} diff --git a/xchange-bitz/src/main/java/org/knowm/xchange/bitz/BitZExchange.java b/xchange-bitz/src/main/java/org/knowm/xchange/bitz/BitZExchange.java index 76038184ec8..1106f2ec353 100644 --- a/xchange-bitz/src/main/java/org/knowm/xchange/bitz/BitZExchange.java +++ b/xchange-bitz/src/main/java/org/knowm/xchange/bitz/BitZExchange.java @@ -6,9 +6,7 @@ import org.knowm.xchange.bitz.service.BitZMarketDataService; import org.knowm.xchange.bitz.service.BitZTradeService; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.account.AccountService; -import org.knowm.xchange.service.trade.TradeService; public class BitZExchange extends BaseExchange implements Exchange { @@ -31,12 +29,6 @@ public ExchangeSpecification getDefaultExchangeSpecification() { return exchangeSpecification; } - @Override - public TradeService getTradeService() { - throw new NotYetImplementedForExchangeException( - "Parital implementation due to partial implementation by the exchange"); - } - @Override public AccountService getAccountService() { throw new NotAvailableFromExchangeException(); diff --git a/xchange-bitz/src/main/java/org/knowm/xchange/bitz/service/BitZTradeServiceRaw.java b/xchange-bitz/src/main/java/org/knowm/xchange/bitz/service/BitZTradeServiceRaw.java index 08e74402bec..aee9f72f62f 100644 --- a/xchange-bitz/src/main/java/org/knowm/xchange/bitz/service/BitZTradeServiceRaw.java +++ b/xchange-bitz/src/main/java/org/knowm/xchange/bitz/service/BitZTradeServiceRaw.java @@ -2,20 +2,16 @@ import java.io.IOException; import java.math.BigDecimal; -import java.util.Date; import org.knowm.xchange.Exchange; import org.knowm.xchange.bitz.BitZ; import org.knowm.xchange.bitz.BitZAuthenticated; import org.knowm.xchange.bitz.dto.account.result.BitZUserAssetsResult; -import org.knowm.xchange.bitz.dto.marketdata.BitZPublicOrder; import org.knowm.xchange.bitz.dto.trade.result.BitZEntrustSheetInfoResult; import org.knowm.xchange.bitz.dto.trade.result.BitZTradeAddResult; import org.knowm.xchange.bitz.dto.trade.result.BitZTradeCancelListResult; import org.knowm.xchange.bitz.dto.trade.result.BitZTradeCancelResult; import org.knowm.xchange.bitz.dto.trade.result.BitZUserHistoryResult; import org.knowm.xchange.client.ExchangeRestProxyBuilder; -import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import si.mazi.rescu.SynchronizedValueFactory; public class BitZTradeServiceRaw extends BitZBaseService { @@ -51,18 +47,6 @@ public BitZTradeServiceRaw(Exchange exchange) { this.nonce = nonceFactory.toString().substring(nonceFactory.toString().length() - 6); } - // TODO: Implement Method - public boolean cancelBitZTrade(int orderId) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - // TODO: Implement Method - public BitZTradeAddResult placeBitZTrade( - CurrencyPair currencyPair, BitZPublicOrder limitOrder, Date time, boolean sell) - throws IOException { - throw new NotYetImplementedForExchangeException(); - } - private String getTimeStamp() { return String.valueOf(System.currentTimeMillis() / 1000); } diff --git a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainAccountService.java b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainAccountService.java index 36f70dc2440..75267baac3b 100644 --- a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainAccountService.java +++ b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainAccountService.java @@ -1,9 +1,9 @@ package org.knowm.xchange.blockchain.service; -import static org.knowm.xchange.blockchain.BlockchainConstants.*; +import static org.knowm.xchange.blockchain.BlockchainConstants.FUNDING_RECORD_TYPE_UNSUPPORTED; +import static org.knowm.xchange.blockchain.BlockchainConstants.WITHDRAWAL_EXCEPTION; import java.io.IOException; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -21,11 +21,18 @@ import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.currency.CurrencyPair; -import org.knowm.xchange.dto.account.*; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; +import org.knowm.xchange.dto.account.AccountInfo; +import org.knowm.xchange.dto.account.AddressWithTag; +import org.knowm.xchange.dto.account.Balance; +import org.knowm.xchange.dto.account.Fee; +import org.knowm.xchange.dto.account.FundingRecord; +import org.knowm.xchange.dto.account.Wallet; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.account.AccountService; -import org.knowm.xchange.service.trade.params.*; +import org.knowm.xchange.service.trade.params.HistoryParamsFundingType; +import org.knowm.xchange.service.trade.params.TradeHistoryParams; +import org.knowm.xchange.service.trade.params.TradeHistoryParamsTimeSpan; +import org.knowm.xchange.service.trade.params.WithdrawFundsParams; public class BlockchainAccountService extends BlockchainAccountServiceRaw implements AccountService { @@ -57,20 +64,6 @@ public AccountInfo getAccountInfo() throws IOException { } } - /** Use {@link String withdrawFunds(WithdrawFundsParams params)} instead */ - @Override - public String withdrawFunds(Currency currency, BigDecimal amount, String address) - throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - - /** Use {@link String withdrawFunds(WithdrawFundsParams params)} instead */ - @Override - public String withdrawFunds(Currency currency, BigDecimal amount, AddressWithTag address) - throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - /** For more information see {@link WithdrawFundsParams} */ @Override public String withdrawFunds(WithdrawFundsParams params) throws IOException { diff --git a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainMarketDataService.java b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainMarketDataService.java index 5fb5ae64a37..4eaf97c0aa2 100644 --- a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainMarketDataService.java +++ b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainMarketDataService.java @@ -1,9 +1,7 @@ package org.knowm.xchange.blockchain.service; -import static org.knowm.xchange.blockchain.BlockchainConstants.NOT_IMPLEMENTED_YET; import java.io.IOException; -import java.util.List; import org.knowm.xchange.blockchain.BlockchainAdapters; import org.knowm.xchange.blockchain.BlockchainAuthenticated; import org.knowm.xchange.blockchain.BlockchainErrorAdapter; @@ -12,12 +10,8 @@ import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trades; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.marketdata.MarketDataService; -import org.knowm.xchange.service.marketdata.params.Params; public class BlockchainMarketDataService extends BlockchainMarketDataServiceRaw implements MarketDataService { @@ -29,21 +23,6 @@ public BlockchainMarketDataService( super(exchange, blockchainApi, resilienceRegistries); } - @Override - public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - - @Override - public Ticker getTicker(Instrument instrument, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - - @Override - public List getTickers(Params params) { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - @Override public OrderBook getOrderBook(CurrencyPair currencyPair, Object... args) throws IOException { try { @@ -63,13 +42,4 @@ public OrderBook getOrderBook(Instrument instrument, Object... args) throws IOEx } } - @Override - public Trades getTrades(CurrencyPair currencyPair, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - - @Override - public Trades getTrades(Instrument instrument, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } } diff --git a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainTradeService.java b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainTradeService.java index 3bcb29caf4a..eebd787b413 100644 --- a/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainTradeService.java +++ b/xchange-blockchain/src/main/java/org/knowm/xchange/blockchain/service/BlockchainTradeService.java @@ -1,6 +1,7 @@ package org.knowm.xchange.blockchain.service; -import static org.knowm.xchange.blockchain.BlockchainConstants.*; +import static org.knowm.xchange.blockchain.BlockchainConstants.CURRENCY_PAIR_EXCEPTION; +import static org.knowm.xchange.blockchain.BlockchainConstants.REJECTED; import java.io.IOException; import java.util.ArrayList; @@ -16,13 +17,26 @@ import org.knowm.xchange.client.ResilienceRegistries; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; -import org.knowm.xchange.dto.account.OpenPositions; -import org.knowm.xchange.dto.trade.*; +import org.knowm.xchange.dto.trade.LimitOrder; +import org.knowm.xchange.dto.trade.MarketOrder; +import org.knowm.xchange.dto.trade.OpenOrders; +import org.knowm.xchange.dto.trade.StopOrder; +import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; -import org.knowm.xchange.service.trade.params.*; -import org.knowm.xchange.service.trade.params.orders.*; +import org.knowm.xchange.service.trade.params.CancelOrderByCurrencyPair; +import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; +import org.knowm.xchange.service.trade.params.CancelOrderParams; +import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; +import org.knowm.xchange.service.trade.params.TradeHistoryParamLimit; +import org.knowm.xchange.service.trade.params.TradeHistoryParams; +import org.knowm.xchange.service.trade.params.TradeHistoryParamsTimeSpan; +import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamCurrencyPair; +import org.knowm.xchange.service.trade.params.orders.DefaultQueryOrderParam; +import org.knowm.xchange.service.trade.params.orders.OpenOrdersParamCurrencyPair; +import org.knowm.xchange.service.trade.params.orders.OpenOrdersParams; +import org.knowm.xchange.service.trade.params.orders.OrderQueryParamCurrencyPair; +import org.knowm.xchange.service.trade.params.orders.OrderQueryParams; public class BlockchainTradeService extends BlockchainTradeServiceRaw implements TradeService { @@ -119,11 +133,6 @@ public Class[] getRequiredCancelOrderParamClasses() { return new Class[] {CancelOrderByIdParams.class, CancelOrderByCurrencyPair.class}; } - @Override - public OpenPositions getOpenPositions() { - throw new NotYetImplementedForExchangeException(NOT_IMPLEMENTED_YET); - } - @Override public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException { try { diff --git a/xchange-blockchain/src/test/java/org/knowm/xchange/blockchain/service/account/AccountServiceTest.java b/xchange-blockchain/src/test/java/org/knowm/xchange/blockchain/service/account/AccountServiceTest.java index e43b9e86747..561f9e72208 100644 --- a/xchange-blockchain/src/test/java/org/knowm/xchange/blockchain/service/account/AccountServiceTest.java +++ b/xchange-blockchain/src/test/java/org/knowm/xchange/blockchain/service/account/AccountServiceTest.java @@ -3,14 +3,12 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.ACCOUNT_INFORMATION_JSON; -import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.ADDRESS; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.ADDRESS_DEPOSIT; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.BENEFICIARY; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.DEPOSIT_FAILURE_JSON; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.DEPOSIT_HISTORY_SUCCESS_JSON; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.DEPOSIT_SUCCESS_JSON; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.FEES_JSON; -import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.NOT_IMPLEMENTED_YET; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.STATUS_CODE_400; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.STATUS_CODE_401; import static org.knowm.xchange.blockchain.service.utils.BlockchainConstants.SYMBOL_JSON; @@ -41,7 +39,6 @@ import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.exceptions.ExchangeSecurityException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.HistoryParamsFundingType; @@ -76,14 +73,6 @@ public void withdrawFailure() { assertThat(exception).isInstanceOf(ExchangeSecurityException.class).hasMessage(STATUS_CODE_401); } - @Test(timeout = 2000) - public void withdrawException() { - Throwable exception = catchThrowable(this::withdrawExcept); - assertThat(exception) - .isInstanceOf(NotYetImplementedForExchangeException.class) - .hasMessage(NOT_IMPLEMENTED_YET); - } - @Test(timeout = 2000) public void requestDepositAddressSuccess() throws Exception { String response = requestDeposit(DEPOSIT_SUCCESS_JSON, 200); @@ -139,11 +128,6 @@ private String withdraw(String responseFileName, int statusCode) throws IOExcept return service.withdrawFunds(params); } - private void withdrawExcept() throws IOException { - stubPost(WITHDRAWAL_SUCCESS_JSON, 200, URL_WITHDRAWALS); - service.withdrawFunds(Currency.BTC, BigDecimal.valueOf(0.005), ADDRESS); - } - private String requestDeposit(String responseFileName, int statusCode) throws IOException { stubPost(responseFileName, statusCode, URL_DEPOSIT_BY_CURRENCY); diff --git a/xchange-cexio/src/main/java/org/knowm/xchange/cexio/service/CexIOTradeService.java b/xchange-cexio/src/main/java/org/knowm/xchange/cexio/service/CexIOTradeService.java index df9cb583195..e5642151d26 100644 --- a/xchange-cexio/src/main/java/org/knowm/xchange/cexio/service/CexIOTradeService.java +++ b/xchange-cexio/src/main/java/org/knowm/xchange/cexio/service/CexIOTradeService.java @@ -13,12 +13,10 @@ import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.marketdata.Trades; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrade; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelOrderByCurrencyPair; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; @@ -59,20 +57,6 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws IOException { return CexIOAdapters.adaptOpenOrders(cexIOOrderList); } - @Override - public String placeMarketOrder(MarketOrder marketOrder) throws IOException { - /* - Only in market order! - Presently, the exchange is designed in such way that, depending on the BID/ASK the currency changes - (accordingly, you must specify the amount in another currency) - Example: CurrencyPair.BCH_USD, Order.OrderType.ASK, Amount = 0.02 (BCH) - Example: CurrencyPair.BCH_USD, Order.OrderType.BID, Amount = 20 (USD) - Сurrently cannot be implemented! - */ - - throw new NotYetImplementedForExchangeException(); - } - @Override public String placeLimitOrder(LimitOrder limitOrder) throws IOException { CexIOOrder order = placeCexIOLimitOrder(limitOrder); diff --git a/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiAccountService.java b/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiAccountService.java index 0da2e4ac571..b8455161014 100644 --- a/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiAccountService.java +++ b/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiAccountService.java @@ -2,7 +2,6 @@ import java.io.IOException; import java.math.BigDecimal; -import java.util.List; import org.knowm.xchange.Exchange; import org.knowm.xchange.coingi.CoingiAdapters; import org.knowm.xchange.coingi.CoingiErrorAdapter; @@ -14,7 +13,6 @@ import org.knowm.xchange.coingi.dto.trade.CoingiTransactionHistoryRequest; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; -import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.account.AccountService; @@ -104,9 +102,4 @@ public CoingiUserTransactionList getTransactions(TradeHistoryParams p) throws IO } } - @Override - public List getFundingHistory(TradeHistoryParams params) - throws NotAvailableFromExchangeException, NotYetImplementedForExchangeException { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiTradeService.java b/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiTradeService.java index 34c391625d2..bd3b27472e2 100644 --- a/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiTradeService.java +++ b/xchange-coingi/src/main/java/org/knowm/xchange/coingi/service/CoingiTradeService.java @@ -19,10 +19,8 @@ import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrades; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; import org.knowm.xchange.service.trade.params.CancelOrderParams; @@ -56,17 +54,6 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws IOException { } } - @Override - public String placeMarketOrder(MarketOrder order) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String placeStopOrder(org.knowm.xchange.dto.trade.StopOrder stopOrder) - throws java.io.IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public String placeLimitOrder(LimitOrder order) throws IOException { try { diff --git a/xchange-deribit/src/main/java/org/knowm/xchange/deribit/v2/service/DeribitTradeService.java b/xchange-deribit/src/main/java/org/knowm/xchange/deribit/v2/service/DeribitTradeService.java index 1e4460f1e05..e1d53afed3f 100644 --- a/xchange-deribit/src/main/java/org/knowm/xchange/deribit/v2/service/DeribitTradeService.java +++ b/xchange-deribit/src/main/java/org/knowm/xchange/deribit/v2/service/DeribitTradeService.java @@ -25,10 +25,8 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; @@ -107,24 +105,6 @@ public String placeLimitOrder(LimitOrder limitOrder) throws IOException { return placeOrder(OrderType.limit, limitOrder, limitOrder.getLimitPrice(), null, null); } - @Override - public String placeStopOrder(StopOrder stopOrder) throws IOException { - /* - // TBD: - // get "trigger", "price" and "trigger price" as follows: - Trigger trigger = findOrderFlagValue(order, Trigger.class); - BigDecimal price = stopOrder.getLimitPrice(); - BigDecimal triggerPrice = stopOrder.getStopPrice() - - // then adapt order type of the stop order (add corresponding adapter) - OrderType type = DeribitAdapters.adaptOrderType(stopOrder); - - // validate the values and then call placeOrder: - placeOrder(type, order, price, trigger, triggerPrice); - */ - throw new NotYetImplementedForExchangeException("placeStopOrder"); - } - private String placeOrder( OrderType type, Order order, BigDecimal price, Trigger trigger, BigDecimal triggerPrice) throws IOException { diff --git a/xchange-examples/src/main/java/org/knowm/xchange/examples/binance/marketdata/BinanceMarketDataDemo.java b/xchange-examples/src/main/java/org/knowm/xchange/examples/binance/marketdata/BinanceMarketDataDemo.java index b9bd75119be..80430ec2774 100644 --- a/xchange-examples/src/main/java/org/knowm/xchange/examples/binance/marketdata/BinanceMarketDataDemo.java +++ b/xchange-examples/src/main/java/org/knowm/xchange/examples/binance/marketdata/BinanceMarketDataDemo.java @@ -44,7 +44,7 @@ public static void raw(BinanceExchange exchange, BinanceMarketDataService market tickers.forEach( t -> System.out.println( - t.getSymbol() + " => " + String.format("%+.2f%%", t.getPriceChangePercent()))); + t.getCurrencyPair() + " => " + String.format("%+.2f%%", t.getPriceChangePercent()))); System.out.println("raw out end"); } @@ -57,6 +57,6 @@ public static void rawAll(BinanceExchange exchange, BinanceMarketDataService mar tickers.forEach( t -> System.out.println( - t.getSymbol() + " => " + String.format("%+.2f%%", t.getLastPrice()))); + t.getCurrencyPair() + " => " + String.format("%+.2f%%", t.getLastPrice()))); } } diff --git a/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexAccountService.java b/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexAccountService.java index d3addefea71..6a0203b5b60 100644 --- a/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexAccountService.java +++ b/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexAccountService.java @@ -1,18 +1,12 @@ package org.knowm.xchange.globitex.service; import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; import org.knowm.xchange.Exchange; -import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; -import org.knowm.xchange.dto.account.FundingRecord; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.globitex.GlobitexAdapters; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.TradeHistoryParams; import org.knowm.xchange.service.trade.params.TradeHistoryParamsAll; -import org.knowm.xchange.service.trade.params.WithdrawFundsParams; public class GlobitexAccountService extends GlobitexAccountServiceRaw implements AccountService { @@ -25,28 +19,9 @@ public AccountInfo getAccountInfo() throws IOException { return GlobitexAdapters.adaptToAccountInfo(getGlobitexAccounts()); } - @Override - public String withdrawFunds(Currency currency, BigDecimal amount, String address) { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String withdrawFunds(WithdrawFundsParams params) { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String requestDepositAddress(Currency currency, String... args) { - throw new NotYetImplementedForExchangeException(); - } - @Override public TradeHistoryParams createFundingHistoryParams() { return new TradeHistoryParamsAll(); } - @Override - public List getFundingHistory(TradeHistoryParams params) { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexTradeService.java b/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexTradeService.java index fd3f8a1ad13..5eb2ca50ec1 100644 --- a/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexTradeService.java +++ b/xchange-globitex/src/main/java/org/knowm/xchange/globitex/service/GlobitexTradeService.java @@ -5,12 +5,9 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.globitex.GlobitexAdapters; import org.knowm.xchange.service.trade.TradeService; -import org.knowm.xchange.service.trade.params.CancelOrderParams; import org.knowm.xchange.service.trade.params.TradeHistoryParams; import org.knowm.xchange.service.trade.params.TradeHistoryParamsAll; import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamCurrencyPair; @@ -55,26 +52,11 @@ public String placeLimitOrder(LimitOrder limitOrder) throws IOException { return placeGlobitexLimitOrder(limitOrder).getObject().getClientOrderId(); } - @Override - public String placeStopOrder(StopOrder stopOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String changeOrder(LimitOrder limitOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public boolean cancelOrder(String orderId) throws IOException { return (globitexCancelOrder(orderId).getObject().getOrderStatus().equals("CANCELLED")); } - @Override - public boolean cancelOrder(CancelOrderParams orderParams) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public OpenOrdersParams createOpenOrdersParams() { return new DefaultOpenOrdersParamCurrencyPair(); diff --git a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeAccountService.java b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeAccountService.java index b7599bc64d3..11397a675fb 100644 --- a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeAccountService.java +++ b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeAccountService.java @@ -1,17 +1,10 @@ package org.knowm.xchange.lykke.service; import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; import org.knowm.xchange.Exchange; -import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; -import org.knowm.xchange.dto.account.FundingRecord; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.lykke.LykkeAdapter; import org.knowm.xchange.service.account.AccountService; -import org.knowm.xchange.service.trade.params.TradeHistoryParams; -import org.knowm.xchange.service.trade.params.WithdrawFundsParams; public class LykkeAccountService extends LykkeAccountServiceRaw implements AccountService { @@ -24,29 +17,4 @@ public AccountInfo getAccountInfo() throws IOException { return LykkeAdapter.adaptAccountInfo(getWallets()); } - @Override - public String withdrawFunds(Currency currency, BigDecimal amount, String address) - throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String withdrawFunds(WithdrawFundsParams params) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public String requestDepositAddress(Currency currency, String... args) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public TradeHistoryParams createFundingHistoryParams() { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public List getFundingHistory(TradeHistoryParams params) throws IOException { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeMarketDataService.java b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeMarketDataService.java index 22bab7fcaad..462f13bbc85 100644 --- a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeMarketDataService.java +++ b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeMarketDataService.java @@ -5,13 +5,9 @@ import org.knowm.xchange.Exchange; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trades; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.lykke.LykkeAdapter; import org.knowm.xchange.lykke.dto.marketdata.LykkeAssetPair; import org.knowm.xchange.service.marketdata.MarketDataService; -import org.knowm.xchange.service.marketdata.params.Params; public class LykkeMarketDataService extends LykkeMarketDataServiceRaw implements MarketDataService { @@ -19,26 +15,11 @@ public LykkeMarketDataService(Exchange exchange) { super(exchange); } - @Override - public Ticker getTicker(CurrencyPair currencyPair, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public List getTickers(Params params) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public OrderBook getOrderBook(CurrencyPair currencyPair, Object... args) throws IOException { return LykkeAdapter.adaptOrderBook(getLykkeOrderBook(currencyPair), currencyPair); } - @Override - public Trades getTrades(CurrencyPair currencyPair, Object... args) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - public List getAssetPairs() throws IOException { return lykke.getAssetPairs(); } diff --git a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeTradeService.java b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeTradeService.java index ddd1c06ab29..ac97371560b 100644 --- a/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeTradeService.java +++ b/xchange-lykke/src/main/java/org/knowm/xchange/lykke/service/LykkeTradeService.java @@ -4,9 +4,7 @@ import org.knowm.xchange.Exchange; import org.knowm.xchange.dto.marketdata.Trades; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.lykke.LykkeAdapter; @@ -38,21 +36,11 @@ public OpenOrders getOpenOrders(OpenOrdersParams params) throws IOException { LykkeAdapter.adaptOpenOrders(exchange.getExchangeInstruments(), getLastOrders())); } - @Override - public String placeMarketOrder(MarketOrder marketOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public String placeLimitOrder(LimitOrder limitOrder) throws IOException { return placeLimitOrder(LykkeAdapter.adaptLykkeOrder(limitOrder)); } - @Override - public String placeStopOrder(StopOrder stopOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public boolean cancelOrder(String orderId) throws IOException { return cancelLykkeOrder(orderId); diff --git a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesAccountService.java b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesAccountService.java index 2a0b8bf32ce..25fe103ebf0 100644 --- a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesAccountService.java +++ b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesAccountService.java @@ -2,17 +2,13 @@ import java.io.IOException; import java.math.BigDecimal; -import java.util.List; import org.knowm.xchange.Exchange; import org.knowm.xchange.currency.Currency; import org.knowm.xchange.dto.account.AccountInfo; -import org.knowm.xchange.dto.account.FundingRecord; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.okcoin.OkCoinAdapters; import org.knowm.xchange.service.account.AccountService; import org.knowm.xchange.service.trade.params.TradeHistoryParams; -import org.knowm.xchange.service.trade.params.WithdrawFundsParams; public class OkCoinFuturesAccountService extends OkCoinAccountServiceRaw implements AccountService { @@ -39,11 +35,6 @@ public String withdrawFunds(Currency currency, BigDecimal amount, String address throw new NotAvailableFromExchangeException(); } - @Override - public String withdrawFunds(WithdrawFundsParams params) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public String requestDepositAddress(Currency currency, String... args) throws IOException { @@ -55,8 +46,4 @@ public TradeHistoryParams createFundingHistoryParams() { throw new NotAvailableFromExchangeException(); } - @Override - public List getFundingHistory(TradeHistoryParams params) throws IOException { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesTradeService.java b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesTradeService.java index d21c57d197c..f671cf487c4 100644 --- a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesTradeService.java +++ b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinFuturesTradeService.java @@ -16,10 +16,8 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; import org.knowm.xchange.okcoin.FuturesContract; import org.knowm.xchange.okcoin.OkCoinAdapters; @@ -30,8 +28,16 @@ import org.knowm.xchange.okcoin.dto.trade.OkCoinPriceLimit; import org.knowm.xchange.okcoin.dto.trade.OkCoinTradeResult; import org.knowm.xchange.service.trade.TradeService; -import org.knowm.xchange.service.trade.params.*; -import org.knowm.xchange.service.trade.params.orders.*; +import org.knowm.xchange.service.trade.params.CancelOrderByInstrument; +import org.knowm.xchange.service.trade.params.CancelOrderParams; +import org.knowm.xchange.service.trade.params.DefaultCancelOrderParamId; +import org.knowm.xchange.service.trade.params.DefaultTradeHistoryParamPaging; +import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; +import org.knowm.xchange.service.trade.params.TradeHistoryParams; +import org.knowm.xchange.service.trade.params.orders.DefaultQueryOrderParam; +import org.knowm.xchange.service.trade.params.orders.OpenOrdersParams; +import org.knowm.xchange.service.trade.params.orders.OrderQueryParamInstrument; +import org.knowm.xchange.service.trade.params.orders.OrderQueryParams; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -158,11 +164,6 @@ public String placeLimitOrder(LimitOrder limitOrder) throws IOException { } } - @Override - public String placeStopOrder(StopOrder stopOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - /** Liquidate long or short contract using a limit order */ public String liquidateLimitOrder(LimitOrder limitOrder) throws IOException { diff --git a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinTradeService.java b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinTradeService.java index 1357cf02a8d..d438572e0e5 100644 --- a/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinTradeService.java +++ b/xchange-okcoin/src/main/java/org/knowm/xchange/okcoin/service/OkCoinTradeService.java @@ -17,10 +17,8 @@ import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; -import org.knowm.xchange.dto.trade.StopOrder; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.okcoin.OkCoinAdapters; import org.knowm.xchange.okcoin.dto.trade.OkCoinOrderResult; import org.knowm.xchange.okcoin.dto.trade.OkCoinTradeResult; @@ -165,11 +163,6 @@ public String placeBatchLimitOrder(LimitOrder... limitOrders) throws IOException } } - @Override - public String placeStopOrder(StopOrder stopOrder) throws IOException { - throw new NotYetImplementedForExchangeException(); - } - @Override public boolean cancelOrder(CancelOrderParams orderParams) throws IOException { if (!(orderParams instanceof CancelOrderByIdParams) diff --git a/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/BinanceStreamingMarketDataService.java b/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/BinanceStreamingMarketDataService.java index 3ee804782ee..9606e13dffa 100644 --- a/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/BinanceStreamingMarketDataService.java +++ b/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/BinanceStreamingMarketDataService.java @@ -9,7 +9,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.util.concurrent.RateLimiter; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import info.bitrich.xchangestream.binance.dto.*; +import info.bitrich.xchangestream.binance.dto.BinanceRawTrade; +import info.bitrich.xchangestream.binance.dto.BinanceWebsocketTransaction; +import info.bitrich.xchangestream.binance.dto.BookTickerBinanceWebSocketTransaction; +import info.bitrich.xchangestream.binance.dto.DepthBinanceWebSocketTransaction; +import info.bitrich.xchangestream.binance.dto.FundingRateWebsocketTransaction; +import info.bitrich.xchangestream.binance.dto.KlineBinanceWebSocketTransaction; +import info.bitrich.xchangestream.binance.dto.TickerBinanceWebsocketTransaction; +import info.bitrich.xchangestream.binance.dto.TradeBinanceWebsocketTransaction; import info.bitrich.xchangestream.binance.exceptions.UpFrontSubscriptionRequiredException; import info.bitrich.xchangestream.core.ProductSubscription; import info.bitrich.xchangestream.core.StreamingMarketDataService; @@ -23,7 +30,12 @@ import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.BehaviorSubject; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; @@ -34,12 +46,20 @@ import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.BinanceErrorAdapter; import org.knowm.xchange.binance.dto.BinanceException; -import org.knowm.xchange.binance.dto.marketdata.*; +import org.knowm.xchange.binance.dto.marketdata.BinanceBookTicker; +import org.knowm.xchange.binance.dto.marketdata.BinanceKline; +import org.knowm.xchange.binance.dto.marketdata.BinanceOrderbook; +import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; +import org.knowm.xchange.binance.dto.marketdata.KlineInterval; import org.knowm.xchange.binance.service.BinanceMarketDataService; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.derivative.FuturesContract; import org.knowm.xchange.dto.Order.OrderType; -import org.knowm.xchange.dto.marketdata.*; +import org.knowm.xchange.dto.marketdata.FundingRate; +import org.knowm.xchange.dto.marketdata.OrderBook; +import org.knowm.xchange.dto.marketdata.OrderBookUpdate; +import org.knowm.xchange.dto.marketdata.Ticker; +import org.knowm.xchange.dto.marketdata.Trade; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.exceptions.RateLimitExceededException; import org.knowm.xchange.instrument.Instrument; @@ -127,7 +147,7 @@ public Observable getTicker(CurrencyPair currencyPair, Object... args) { if (realtimeOrderBookTicker) { return getRawBookTicker(currencyPair).map(raw -> raw.toTicker(false)); } - return getRawTicker(currencyPair).map(raw -> raw.toTicker(false)); + return getRawTicker(currencyPair).map(raw -> BinanceAdapters.toTicker(raw, false)); } @Override @@ -151,7 +171,7 @@ public Observable getTicker(Instrument instrument, Object... args) { return getRawBookTicker(instrument) .map(raw -> raw.toTicker(instrument instanceof FuturesContract)); } - return getRawTicker(instrument).map(raw -> raw.toTicker(instrument instanceof FuturesContract)); + return getRawTicker(instrument).map(raw -> BinanceAdapters.toTicker(raw, instrument instanceof FuturesContract)); } @Override diff --git a/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransaction.java b/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransaction.java index 08c68600ff1..8b2c2c0c0a4 100644 --- a/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransaction.java +++ b/xchange-stream-binance/src/main/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransaction.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.math.BigDecimal; +import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.dto.marketdata.BinanceTicker24h; public class TickerBinanceWebsocketTransaction extends ProductBinanceWebSocketTransaction { @@ -57,7 +58,7 @@ public TickerBinanceWebsocketTransaction( firstId, lastId, count, - symbol); + BinanceAdapters.toCurrencyPair(symbol)); } public BinanceTicker24h getTicker() { diff --git a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/BinanceLiveFutureSubscriptionExample.java b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/BinanceLiveFutureSubscriptionExample.java index ff95ac17d92..4208dbca638 100644 --- a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/BinanceLiveFutureSubscriptionExample.java +++ b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/BinanceLiveFutureSubscriptionExample.java @@ -11,7 +11,6 @@ import java.util.Arrays; import java.util.List; import org.knowm.xchange.ExchangeSpecification; -import org.knowm.xchange.binance.dto.ExchangeType; import org.knowm.xchange.derivative.FuturesContract; import org.knowm.xchange.instrument.Instrument; import org.slf4j.Logger; diff --git a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/KlineBinanceWebSocketTransactionTest.java b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/KlineBinanceWebSocketTransactionTest.java index 21e2e3fdc03..5688094cc18 100644 --- a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/KlineBinanceWebSocketTransactionTest.java +++ b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/KlineBinanceWebSocketTransactionTest.java @@ -11,6 +11,7 @@ import java.math.BigDecimal; import junit.framework.TestCase; import org.junit.Test; +import org.knowm.xchange.binance.BinanceAdapters; import org.knowm.xchange.binance.dto.marketdata.BinanceKline; import org.knowm.xchange.binance.dto.marketdata.KlineInterval; import org.knowm.xchange.currency.CurrencyPair; @@ -22,6 +23,7 @@ public class KlineBinanceWebSocketTransactionTest extends TestCase { @Test public void testMapping() throws IOException { + BinanceAdapters.putSymbolMapping("XMRUSDT", CurrencyPair.XMR_USDT); InputStream stream = this.getClass().getResourceAsStream("testKlineEvent.json"); KlineBinanceWebSocketTransaction klineBinanceWebSocketTransaction = diff --git a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransactionTest.java b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransactionTest.java index ec34a77f017..8c3809bf4a9 100644 --- a/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransactionTest.java +++ b/xchange-stream-binance/src/test/java/info/bitrich/xchangestream/binance/dto/TickerBinanceWebsocketTransactionTest.java @@ -25,6 +25,7 @@ public static void setupClass() { @Test public void test_deserialization_of_transaction_message() throws IOException { + BinanceAdapters.putSymbolMapping("ETHBTC", CurrencyPair.ETH_BTC); InputStream stream = TickerBinanceWebsocketTransactionTest.class.getResourceAsStream("testTickerEvent.json"); BinanceWebsocketTransaction transaction = diff --git a/xchange-stream-btcmarkets/src/main/java/info/bitrich/xchangestream/btcmarkets/BTCMarketsStreamingAdapters.java b/xchange-stream-btcmarkets/src/main/java/info/bitrich/xchangestream/btcmarkets/BTCMarketsStreamingAdapters.java index 2f25b8cfa79..d14ab616ed4 100644 --- a/xchange-stream-btcmarkets/src/main/java/info/bitrich/xchangestream/btcmarkets/BTCMarketsStreamingAdapters.java +++ b/xchange-stream-btcmarkets/src/main/java/info/bitrich/xchangestream/btcmarkets/BTCMarketsStreamingAdapters.java @@ -15,7 +15,6 @@ import org.knowm.xchange.dto.marketdata.Ticker; import org.knowm.xchange.dto.marketdata.Trade; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.utils.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,9 +77,4 @@ public static Trade adaptTradeMessageToTrade(BTCMarketsWebSocketTradeMessage mes .build(); } - public static OrderBook adaptOrderUpdateMessageToOrderBook( - BTCMarketsWebSocketOrderbookMessage message) { - - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-stream-cexio/src/main/java/info/bitrich/xchangestream/cexio/CexioStreamingMarketDataService.java b/xchange-stream-cexio/src/main/java/info/bitrich/xchangestream/cexio/CexioStreamingMarketDataService.java index d0799a49bdf..3814522897f 100644 --- a/xchange-stream-cexio/src/main/java/info/bitrich/xchangestream/cexio/CexioStreamingMarketDataService.java +++ b/xchange-stream-cexio/src/main/java/info/bitrich/xchangestream/cexio/CexioStreamingMarketDataService.java @@ -12,9 +12,7 @@ import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; public class CexioStreamingMarketDataService implements StreamingMarketDataService { @@ -115,8 +113,4 @@ public Observable getTicker(CurrencyPair currencyPair, Object... args) { && prev.getAsk().compareTo(next.getAsk()) == 0); } - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-stream-coinbasepro/src/main/java/info/bitrich/xchangestream/coinbasepro/CoinbaseProStreamingExchange.java b/xchange-stream-coinbasepro/src/main/java/info/bitrich/xchangestream/coinbasepro/CoinbaseProStreamingExchange.java index 7f0198d872b..a943c0a560c 100644 --- a/xchange-stream-coinbasepro/src/main/java/info/bitrich/xchangestream/coinbasepro/CoinbaseProStreamingExchange.java +++ b/xchange-stream-coinbasepro/src/main/java/info/bitrich/xchangestream/coinbasepro/CoinbaseProStreamingExchange.java @@ -2,18 +2,16 @@ import info.bitrich.xchangestream.coinbasepro.dto.CoinbaseProOrderBookMode; import info.bitrich.xchangestream.core.ProductSubscription; -import info.bitrich.xchangestream.core.StreamingAccountService; import info.bitrich.xchangestream.core.StreamingExchange; import info.bitrich.xchangestream.service.netty.ConnectionStateModel.State; import info.bitrich.xchangestream.service.netty.WebSocketClientHandler; import io.reactivex.rxjava3.core.Completable; import io.reactivex.rxjava3.core.Observable; -import java.util.*; +import java.util.Arrays; import org.knowm.xchange.ExchangeSpecification; import org.knowm.xchange.coinbasepro.CoinbaseProExchange; import org.knowm.xchange.coinbasepro.dto.account.CoinbaseProWebsocketAuthData; import org.knowm.xchange.coinbasepro.service.CoinbaseProAccountServiceRaw; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; /** CoinbasePro Streaming Exchange. Connects to live WebSocket feed. */ public class CoinbaseProStreamingExchange extends CoinbaseProExchange implements StreamingExchange { @@ -157,11 +155,6 @@ public CoinbaseProStreamingMarketDataService getStreamingMarketDataService() { return streamingMarketDataService; } - @Override - public StreamingAccountService getStreamingAccountService() { - throw new NotYetImplementedForExchangeException(); - } - @Override public CoinbaseProStreamingTradeService getStreamingTradeService() { return streamingTradeService; diff --git a/xchange-stream-coinjar/src/main/java/info/bitrich/xchangestream/coinjar/CoinjarStreamingMarketDataService.java b/xchange-stream-coinjar/src/main/java/info/bitrich/xchangestream/coinjar/CoinjarStreamingMarketDataService.java index b38794f3a75..7f8da0e1fe7 100644 --- a/xchange-stream-coinjar/src/main/java/info/bitrich/xchangestream/coinjar/CoinjarStreamingMarketDataService.java +++ b/xchange-stream-coinjar/src/main/java/info/bitrich/xchangestream/coinjar/CoinjarStreamingMarketDataService.java @@ -14,10 +14,7 @@ import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,13 +87,4 @@ public Observable getOrderBook(CurrencyPair currencyPair, Object... a .filter(orderbook -> !orderbook.getBids().isEmpty() && !orderbook.getAsks().isEmpty()); } - @Override - public Observable getTicker(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException(); - } - - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v1/dydxStreamingMarketDataService.java b/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v1/dydxStreamingMarketDataService.java index ff3d9919fc8..eabe54b0856 100644 --- a/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v1/dydxStreamingMarketDataService.java +++ b/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v1/dydxStreamingMarketDataService.java @@ -18,9 +18,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; /** Author: Max Gao (gaamox@tutanota.com) Created: 20-02-2021 */ @@ -89,13 +86,4 @@ public Observable getOrderBook(CurrencyPair currencyPair, Object... a }); } - @Override - public Observable getTicker(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not yet implemented!"); - } - - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not yet implemented!"); - } } diff --git a/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v3/dydxStreamingMarketDataService.java b/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v3/dydxStreamingMarketDataService.java index 3ec8a94fd92..5d10c50e2c4 100644 --- a/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v3/dydxStreamingMarketDataService.java +++ b/xchange-stream-dydx/src/main/java/info/bitrich/xchangestream/dydx/service/v3/dydxStreamingMarketDataService.java @@ -18,9 +18,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.instrument.Instrument; /** Author: Max Gao (gaamox@tutanota.com) Created: 20-02-2021 */ @@ -75,13 +72,4 @@ public Observable getOrderBook(CurrencyPair currencyPair, Object... a }); } - @Override - public Observable getTicker(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not yet implemented!"); - } - - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not yet implemented!"); - } } diff --git a/xchange-stream-gemini-v2/src/main/java/info/bitrich/xchangestream/gemini/GeminiStreamingMarketDataService.java b/xchange-stream-gemini-v2/src/main/java/info/bitrich/xchangestream/gemini/GeminiStreamingMarketDataService.java index 6817f5684ba..fc9031744ec 100644 --- a/xchange-stream-gemini-v2/src/main/java/info/bitrich/xchangestream/gemini/GeminiStreamingMarketDataService.java +++ b/xchange-stream-gemini-v2/src/main/java/info/bitrich/xchangestream/gemini/GeminiStreamingMarketDataService.java @@ -10,9 +10,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; /** Adapted from V1 by Max Gao on 01-09-2021 */ public class GeminiStreamingMarketDataService implements StreamingMarketDataService { @@ -51,13 +48,4 @@ public Observable getOrderBook(CurrencyPair currencyPair, Object... a }); } - @Override - public Observable getTicker(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not Yet Implemented!"); - } - - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException("Not Yet Implemented!"); - } } diff --git a/xchange-stream-kucoin/src/main/java/info/bitrich/xchangestream/kucoin/KucoinStreamingMarketDataService.java b/xchange-stream-kucoin/src/main/java/info/bitrich/xchangestream/kucoin/KucoinStreamingMarketDataService.java index 0c2fddbdb94..b47fe71954b 100644 --- a/xchange-stream-kucoin/src/main/java/info/bitrich/xchangestream/kucoin/KucoinStreamingMarketDataService.java +++ b/xchange-stream-kucoin/src/main/java/info/bitrich/xchangestream/kucoin/KucoinStreamingMarketDataService.java @@ -14,8 +14,6 @@ import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; import org.knowm.xchange.dto.marketdata.Ticker; -import org.knowm.xchange.dto.marketdata.Trade; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.kucoin.KucoinAdapters; import org.knowm.xchange.kucoin.KucoinMarketDataService; import org.knowm.xchange.kucoin.dto.response.OrderBookResponse; @@ -143,11 +141,6 @@ private Observable triggerObservableBody(Observable observable) { return observable; } - @Override - public Observable getTrades(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException(); - } - private final class OrderbookSubscription { final Observable stream; final AtomicLong lastUpdateId = new AtomicLong(); diff --git a/xchange-stream-lgo/src/main/java/info/bitrich/xchangestream/lgo/LgoStreamingMarketDataService.java b/xchange-stream-lgo/src/main/java/info/bitrich/xchangestream/lgo/LgoStreamingMarketDataService.java index 71e83feda54..eec3beb0f69 100644 --- a/xchange-stream-lgo/src/main/java/info/bitrich/xchangestream/lgo/LgoStreamingMarketDataService.java +++ b/xchange-stream-lgo/src/main/java/info/bitrich/xchangestream/lgo/LgoStreamingMarketDataService.java @@ -6,9 +6,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.marketdata.OrderBook; -import org.knowm.xchange.dto.marketdata.Ticker; import org.knowm.xchange.dto.marketdata.Trade; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; public class LgoStreamingMarketDataService implements StreamingMarketDataService { @@ -44,8 +42,4 @@ private LgoTradeBatchSubscription createTradeSubscription(CurrencyPair currencyP return LgoTradeBatchSubscription.create(service, currencyPair); } - @Override - public Observable getTicker(CurrencyPair currencyPair, Object... args) { - throw new NotYetImplementedForExchangeException(); - } } diff --git a/xchange-stream-okex/src/main/java/info/bitrich/xchangestream/okex/OkexStreamingExchange.java b/xchange-stream-okex/src/main/java/info/bitrich/xchangestream/okex/OkexStreamingExchange.java index aea9cf83e5a..dee0d964f95 100644 --- a/xchange-stream-okex/src/main/java/info/bitrich/xchangestream/okex/OkexStreamingExchange.java +++ b/xchange-stream-okex/src/main/java/info/bitrich/xchangestream/okex/OkexStreamingExchange.java @@ -66,8 +66,11 @@ private String getApiUrl() { @Override public Completable disconnect() { - streamingService.pingPongDisconnectIfConnected(); - return streamingService.disconnect(); + if(streamingService != null) { + streamingService.pingPongDisconnectIfConnected(); + return streamingService.disconnect(); + } + return null; } @Override diff --git a/xchange-yobit/src/main/java/org/knowm/xchange/yobit/service/YoBitTradeServiceRaw.java b/xchange-yobit/src/main/java/org/knowm/xchange/yobit/service/YoBitTradeServiceRaw.java index 1a776feb298..497aa683c21 100644 --- a/xchange-yobit/src/main/java/org/knowm/xchange/yobit/service/YoBitTradeServiceRaw.java +++ b/xchange-yobit/src/main/java/org/knowm/xchange/yobit/service/YoBitTradeServiceRaw.java @@ -8,9 +8,7 @@ import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.trade.LimitOrder; -import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.exceptions.ExchangeException; -import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; import org.knowm.xchange.service.trade.params.orders.OpenOrdersParamCurrencyPair; @@ -26,11 +24,6 @@ public YoBitTradeServiceRaw(YoBitExchange exchange) { super(YoBit.class, exchange); } - @Override - public OpenOrders getOpenOrders() throws IOException { - throw new NotYetImplementedForExchangeException("Need to specify OpenOrdersParams"); - } - public BaseYoBitResponse activeOrders(OpenOrdersParamCurrencyPair params) throws IOException { CurrencyPair currencyPair = params.getCurrencyPair();