public static ExchangeMetaData adaptToExchangeMetaData( ExchangeMetaData exchangeMetaData, CoinbaseProProduct[] products) { Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = exchangeMetaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currencies = exchangeMetaData.getCurrencies(); for (CoinbaseProProduct product : products) { BigDecimal minSize = product.getBaseMinSize(); BigDecimal maxSize = product.getBaseMaxSize(); CurrencyPair pair = adaptCurrencyPair(product); CurrencyPairMetaData staticMetaData = exchangeMetaData.getCurrencyPairs().get(pair); int priceScale = numberOfDecimals(product.getQuoteIncrement()); CurrencyPairMetaData cpmd = new CurrencyPairMetaData( null, minSize, maxSize, priceScale, staticMetaData != null ? staticMetaData.getFeeTiers() : null); currencyPairs.put(pair, cpmd); if (!currencies.containsKey(pair.base)) currencies.put(pair.base, null); if (!currencies.containsKey(pair.counter)) currencies.put(pair.counter, null); } return new ExchangeMetaData( currencyPairs, currencies, exchangeMetaData.getPublicRateLimits(), exchangeMetaData.getPrivateRateLimits(), true); }
public static void main(String[] args) throws IOException { // Use the factory to get Poloniex exchange API using default settings Exchange anx = ExchangeFactory.INSTANCE.createExchange(PoloniexExchange.class.getName()); ExchangeMetaData exchangeMetaData = anx.getExchangeMetaData(); System.out.println(exchangeMetaData.toJSONString()); System.out.println( "private poll delay ms: " + ExchangeMetaData.getPollDelayMillis(exchangeMetaData.getPrivateRateLimits())); System.out.println( "public poll delay ms: " + ExchangeMetaData.getPollDelayMillis(exchangeMetaData.getPublicRateLimits())); } }
public static ExchangeMetaData adaptMetaData( List<CurrencyPair> currencyPairs, ExchangeMetaData metaData) { Map<CurrencyPair, CurrencyPairMetaData> pairsMap = metaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currenciesMap = metaData.getCurrencies(); for (CurrencyPair c : currencyPairs) { if (!pairsMap.containsKey(c)) { pairsMap.put(c, null); } if (!currenciesMap.containsKey(c.base)) { currenciesMap.put(c.base, null); } if (!currenciesMap.containsKey(c.counter)) { currenciesMap.put(c.counter, null); } } return metaData; }
public static void main(String[] args) throws IOException { // Use the factory to get The Rock exchange API using default settings Exchange exchange = ExchangeFactory.INSTANCE.createExchange(TheRockExchange.class.getName()); ExchangeMetaData exchangeMetaData = exchange.getExchangeMetaData(); System.out.println(exchangeMetaData.toString()); for (CurrencyPair currencyPair : exchangeMetaData.getCurrencyPairs().keySet()) { System.out.println(currencyPair.toString()); } } }
public static ExchangeMetaData adaptMetaData(List<BitflyerMarket> markets) { Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = new HashMap<>(); Map<Currency, CurrencyMetaData> currencies = new HashMap<>(); for (BitflyerMarket market : markets) { CurrencyPair pair = adaptCurrencyPair(market.getProductCode()); currencyPairs.put(pair, null); } return new ExchangeMetaData(currencyPairs, currencies, null, null, false); }
/** * Constructor * * @param exchange */ public GeminiAccountServiceRaw(Exchange exchange) { super(exchange); this.allCurrencyPairs = new ArrayList<CurrencyPair>(exchange.getExchangeMetaData().getCurrencyPairs().keySet()); }
public static ExchangeMetaData adaptToExchangeMetaData( ExchangeMetaData exchangeMetaData, List<LivecoinRestriction> products) { Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = exchangeMetaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currencies = exchangeMetaData.getCurrencies(); for (LivecoinRestriction product : products) { BigDecimal minSize = product.getMinLimitQuantity() == null ? BigDecimal.ZERO : product.getMinLimitQuantity(); minSize = minSize.setScale(product.getPriceScale(), BigDecimal.ROUND_UNNECESSARY); CurrencyPair pair = adaptCurrencyPair(product); CurrencyPairMetaData staticMetaData = exchangeMetaData.getCurrencyPairs().get(pair); int priceScale = staticMetaData == null ? 8 : staticMetaData.getPriceScale(); if (currencyPairs.containsKey(pair)) { CurrencyPairMetaData existing = currencyPairs.get(pair); currencyPairs.put( pair, new CurrencyPairMetaData( existing.getTradingFee(), minSize, existing.getMaximumAmount(), priceScale, existing.getFeeTiers())); } else { currencyPairs.put(pair, new CurrencyPairMetaData(null, minSize, null, priceScale, null)); } if (!currencies.containsKey(pair.base)) currencies.put(pair.base, null); if (!currencies.containsKey(pair.counter)) currencies.put(pair.counter, null); } return new ExchangeMetaData(currencyPairs, currencies, null, null, true); }
public static ExchangeMetaData adaptToExchangeMetaData( ExchangeMetaData exchangeMetaData, List<CCEXMarket> products) { Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = new HashMap<>(); Map<CurrencyPair, CurrencyPairMetaData> existingCurrencyPairMetadata = exchangeMetaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currencies = new HashMap<>(); for (CCEXMarket product : products) { BigDecimal minSize = product.getMinTradeSize(); CurrencyPair pair = adaptCurrencyPair(product); CurrencyPairMetaData existingMetaForPair = existingCurrencyPairMetadata.get(pair); FeeTier[] existingFeeTiers = null; if (existingMetaForPair != null) { existingFeeTiers = existingMetaForPair.getFeeTiers(); } CurrencyPairMetaData cpmd = new CurrencyPairMetaData(null, minSize, null, 0, existingFeeTiers); currencyPairs.put(pair, cpmd); currencies.put(pair.base, null); currencies.put(pair.counter, null); } return new ExchangeMetaData(currencyPairs, currencies, null, null, true); }
public static ExchangeMetaData adaptMetaData( BitfinexAccountFeesResponse accountFeesResponse, ExchangeMetaData metaData) { Map<Currency, CurrencyMetaData> currencies = metaData.getCurrencies(); final Map<Currency, BigDecimal> withdrawFees = accountFeesResponse.getWithdraw(); withdrawFees.forEach( (currency, withdrawalFee) -> { CurrencyMetaData newMetaData = new CurrencyMetaData( // Currency should have at least the scale of the withdrawalFee currencies.get(currency) == null ? withdrawalFee.scale() : Math.max(withdrawalFee.scale(), currencies.get(currency).getScale()), withdrawalFee); currencies.put(currency, newMetaData); }); return metaData; }
public static void main(String[] args) throws IOException { // Use the factory to get ANX exchange API using default settings Exchange anx = ExchangeFactory.INSTANCE.createExchange(ANXExchange.class.getName()); ExchangeMetaData exchangeMetaData = anx.getExchangeMetaData(); System.out.println(exchangeMetaData.toString()); System.out.println( "private poll delay ms: " + ExchangeMetaData.getPollDelayMillis(exchangeMetaData.getPrivateRateLimits())); System.out.println( "public poll delay ms: " + ExchangeMetaData.getPollDelayMillis(exchangeMetaData.getPublicRateLimits())); // anx. // Create ANX Exchenge with a custom metadata json file ExchangeSpecification exSpec = new ExchangeSpecification(ANXExchange.class); exSpec.setMetaDataJsonFileOverride("/tmp/anxpro.json"); anx = ExchangeFactory.INSTANCE.createExchange(exSpec); System.out.println(anx.getExchangeMetaData().toString()); } }
public static ExchangeMetaData adaptMetaData( List<BityPair> rawSymbols, ExchangeMetaData metaData) { List<CurrencyPair> currencyPairs = BityAdapters.adaptCurrencyPairs(rawSymbols); Map<CurrencyPair, CurrencyPairMetaData> pairsMap = metaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currenciesMap = metaData.getCurrencies(); for (CurrencyPair c : currencyPairs) { if (!pairsMap.containsKey(c)) { pairsMap.put(c, null); } if (!currenciesMap.containsKey(c.base)) { currenciesMap.put(c.base, null); } if (!currenciesMap.containsKey(c.counter)) { currenciesMap.put(c.counter, null); } } return metaData; }
public static ExchangeMetaData adaptMetadata(List<ZaifMarket> markets) { Map<CurrencyPair, CurrencyPairMetaData> pairMeta = new HashMap<>(); for (ZaifMarket zaifMarket : markets) { pairMeta.put(zaifMarket.getName(), new CurrencyPairMetaData(null, null, null, null, null)); } return new ExchangeMetaData(pairMeta, null, null, null, null); } }
@Override public List<CurrencyPair> getExchangeSymbols() { return new ArrayList<>(getExchangeMetaData().getCurrencyPairs().keySet()); }
static ExchangeMetaData adaptToExchangeMetaData( HuobiAssetPair[] assetPairs, HuobiAsset[] assets, ExchangeMetaData staticMetaData) { HuobiUtils.setHuobiAssets(assets); HuobiUtils.setHuobiAssetPairs(assetPairs); Map<CurrencyPair, CurrencyPairMetaData> pairsMetaData = staticMetaData.getCurrencyPairs(); Map<CurrencyPair, CurrencyPairMetaData> pairs = new HashMap<>(); for (HuobiAssetPair assetPair : assetPairs) { CurrencyPair pair = adaptCurrencyPair(assetPair.getKey()); pairs.put(pair, adaptPair(assetPair, pairsMetaData.getOrDefault(pair, null))); } Map<Currency, CurrencyMetaData> currenciesMetaData = staticMetaData.getCurrencies(); Map<Currency, CurrencyMetaData> currencies = new HashMap<>(); for (HuobiAsset asset : assets) { Currency currency = adaptCurrency(asset.getAsset()); CurrencyMetaData metadata = currenciesMetaData.getOrDefault(currency, null); BigDecimal withdrawalFee = metadata == null ? null : metadata.getWithdrawalFee(); int scale = metadata == null ? 8 : metadata.getScale(); currencies.put(currency, new CurrencyMetaData(scale, withdrawalFee)); } return new ExchangeMetaData(pairs, currencies, null, null, false); }
@Override public AccountInfo getAccountInfo() throws IOException { Collection<CoinfloorBalance> rawBalances = new ArrayList<>(); for (CurrencyPair pair : exchange.getExchangeSymbols()) { CoinfloorBalance balance = getCoinfloorBalance(pair); rawBalances.add(balance); } return CoinfloorAdapters.adaptAccountInfo( exchange.getExchangeMetaData().getCurrencies().keySet(), rawBalances); }
KrakenUtils.setKrakenAssetPairs(krakenPairs); pairs.putAll(originalMetaData.getCurrencyPairs()); for (String krakenPairCode : krakenPairs.keySet()) { currencies.putAll(originalMetaData.getCurrencies()); for (String krakenAssetCode : krakenAssets.keySet()) { KrakenAsset krakenAsset = krakenAssets.get(krakenAssetCode); Currency currencyCode = KrakenAdapters.adaptCurrency(krakenAssetCode); BigDecimal withdrawalFee = originalMetaData.getCurrencies().get(currencyCode) == null ? null : originalMetaData.getCurrencies().get(currencyCode).getWithdrawalFee(); currencies.put(currencyCode, new CurrencyMetaData(krakenAsset.getScale(), withdrawalFee)); return new ExchangeMetaData( pairs, currencies, originalMetaData == null ? null : originalMetaData.getPublicRateLimits(), originalMetaData == null ? null : originalMetaData.getPrivateRateLimits(), originalMetaData == null ? null : originalMetaData.isShareRateLimits());
public static ExchangeMetaData adaptMetaData( List<BittrexSymbol> rawSymbols, ExchangeMetaData metaData) { List<CurrencyPair> currencyPairs = BittrexAdapters.adaptCurrencyPairs(rawSymbols); Map<CurrencyPair, CurrencyPairMetaData> pairsMap = metaData.getCurrencyPairs(); Map<Currency, CurrencyMetaData> currenciesMap = metaData.getCurrencies(); for (CurrencyPair c : currencyPairs) { if (!pairsMap.containsKey(c)) { pairsMap.put(c, null); } if (!currenciesMap.containsKey(c.base)) { currenciesMap.put(c.base, null); } if (!currenciesMap.containsKey(c.counter)) { currenciesMap.put(c.counter, null); } } return metaData; }
public static ExchangeMetaData adaptMetaData( BitcoinAverageTickers tickers, ExchangeMetaData bAMetaData) { Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = new HashMap<>(); for (String currency : tickers.getTickers().keySet()) { if (!currency.startsWith("BTC")) { throw new IllegalStateException("Unsupported currency: " + currency); } currencyPairs.put(new CurrencyPair(BTC, Currency.getInstance(currency.substring(3))), null); } return new ExchangeMetaData( currencyPairs, Collections.<Currency, CurrencyMetaData>emptyMap(), null, null, null); } }
public CoinfloorTradeService(Exchange exchange) { super(exchange); allConfiguredCurrencyPairs = exchange.getExchangeMetaData().getCurrencyPairs().keySet(); }
@Override public String withdrawFunds(Currency currency, BigDecimal amount, String address) throws IOException { boolean useIntl = this.exchange .getExchangeSpecification() .getExchangeSpecificParametersItem("Use_Intl") .equals(true); String currencySymbol = OkCoinAdapters.adaptSymbol( new CurrencyPair(currency, useIntl ? Currency.USD : Currency.CNY)); BigDecimal staticFee = this.exchange.getExchangeMetaData().getCurrencies().get(currency).getWithdrawalFee(); if (staticFee == null) { throw new IllegalArgumentException("Unsupported withdraw currency " + currency); } NumberFormat format = new DecimalFormat("0.####"); // lowest fee is 0.0005 String fee = format.format(staticFee); // Default withdraw target is external address. Use withdraw function in OkCoinAccountServiceRaw // for internal withdraw OKCoinWithdraw result = withdraw(currencySymbol, address, amount, "address", fee); if (result != null) return result.getWithdrawId(); return ""; }