Search in sources :

Example 1 with CurrencyPairMetaData

use of org.knowm.xchange.dto.meta.CurrencyPairMetaData in project XChange by knowm.

the class BitstampAdapters method adaptMetaData.

public static ExchangeMetaData adaptMetaData(List<BitstampPairInfo> rawSymbols, ExchangeMetaData metaData) {
    Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = adaptCurrencyPairs(rawSymbols);
    Map<CurrencyPair, CurrencyPairMetaData> pairsMap = metaData.getCurrencyPairs();
    Map<Currency, CurrencyMetaData> currenciesMap = metaData.getCurrencies();
    for (Map.Entry<CurrencyPair, CurrencyPairMetaData> entry : currencyPairs.entrySet()) {
        CurrencyPair c = entry.getKey();
        CurrencyPairMetaData cmeta = entry.getValue();
        if (!pairsMap.containsKey(c)) {
            pairsMap.put(c, cmeta);
        } else {
            pairsMap.replace(c, cmeta);
        }
        if (!currenciesMap.containsKey(c.base)) {
            currenciesMap.put(c.base, null);
        }
        if (!currenciesMap.containsKey(c.counter)) {
            currenciesMap.put(c.counter, null);
        }
    }
    return metaData;
}
Also used : CurrencyPairMetaData(org.knowm.xchange.dto.meta.CurrencyPairMetaData) CurrencyMetaData(org.knowm.xchange.dto.meta.CurrencyMetaData) Currency(org.knowm.xchange.currency.Currency) HashMap(java.util.HashMap) Map(java.util.Map) CurrencyPair(org.knowm.xchange.currency.CurrencyPair)

Example 2 with CurrencyPairMetaData

use of org.knowm.xchange.dto.meta.CurrencyPairMetaData in project XChange by knowm.

the class LatokenAdapters method adaptPairMetaData.

public static CurrencyPairMetaData adaptPairMetaData(LatokenPair latokenPair) {
    BigDecimal tradingFee = latokenPair.getTakerFee();
    BigDecimal minAmount = latokenPair.getMinOrderAmount().setScale(latokenPair.getAmountPrecision(), RoundingMode.HALF_DOWN);
    int priceScale = latokenPair.getPricePrecision();
    return new CurrencyPairMetaData(tradingFee, minAmount, null, priceScale, null);
}
Also used : CurrencyPairMetaData(org.knowm.xchange.dto.meta.CurrencyPairMetaData) BigDecimal(java.math.BigDecimal)

Example 3 with CurrencyPairMetaData

use of org.knowm.xchange.dto.meta.CurrencyPairMetaData in project XChange by knowm.

the class LgoAdapters method adaptMetadata.

public static ExchangeMetaData adaptMetadata(ExchangeMetaData metaData, LgoProducts products, LgoCurrencies currencies) {
    Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = metaData.getCurrencyPairs();
    Map<Currency, CurrencyMetaData> currency = metaData.getCurrencies();
    for (LgoCurrency lgoCurrency : currencies.getCurrencies()) {
        currency.put(Currency.getInstance(lgoCurrency.getCode()), new CurrencyMetaData(lgoCurrency.getDecimals(), null));
    }
    for (LgoProduct product : products.getProducts()) {
        BigDecimal minAmount = product.getBase().getLimits().getMin();
        BigDecimal maxAmount = product.getBase().getLimits().getMax();
        Integer baseScale = currency.get(Currency.getInstance(product.getBase().getId())).getScale();
        BigDecimal increment = product.getQuote().getIncrement().stripTrailingZeros();
        currencyPairs.put(toPair(product), new CurrencyPairMetaData(null, minAmount, maxAmount, null, null, baseScale, increment.scale(), null, new FeeTier[0], increment, Currency.USD, true));
    }
    return metaData;
}
Also used : CurrencyPairMetaData(org.knowm.xchange.dto.meta.CurrencyPairMetaData) LgoCurrency(org.knowm.xchange.lgo.dto.currency.LgoCurrency) CurrencyMetaData(org.knowm.xchange.dto.meta.CurrencyMetaData) LgoProduct(org.knowm.xchange.lgo.dto.product.LgoProduct) Currency(org.knowm.xchange.currency.Currency) LgoCurrency(org.knowm.xchange.lgo.dto.currency.LgoCurrency) FeeTier(org.knowm.xchange.dto.meta.FeeTier) BigDecimal(java.math.BigDecimal) CurrencyPair(org.knowm.xchange.currency.CurrencyPair)

Example 4 with CurrencyPairMetaData

use of org.knowm.xchange.dto.meta.CurrencyPairMetaData in project XChange by knowm.

the class LatokenExchange method remoteInit.

@Override
public void remoteInit() {
    try {
        // Load the static meta-data and override with the dynamic one
        Map<Currency, CurrencyMetaData> currenciesMetaData = exchangeMetaData.getCurrencies();
        Map<CurrencyPair, CurrencyPairMetaData> pairsMetaData = exchangeMetaData.getCurrencyPairs();
        List<LatokenPair> allPairs = latoken.getAllPairs();
        List<LatokenCurrency> allCurrencies = latoken.getAllCurrencies();
        // Save pairs map on the exchange
        this.exchangeSpecification.setExchangeSpecificParametersItem("pairs", allPairs);
        // Update Currency meta-data
        for (LatokenCurrency latokenCurrency : allCurrencies) {
            Currency currency = LatokenAdapters.adaptCurrency(latokenCurrency);
            addCurrencyMetadata(currenciesMetaData, currency, PRECISION);
        }
        // Update CurrencyPair meta-data
        for (LatokenPair latokenPair : allPairs) {
            CurrencyPair pair = LatokenAdapters.adaptCurrencyPair(latokenPair);
            CurrencyPairMetaData pairMetadata = LatokenAdapters.adaptPairMetaData(latokenPair);
            addCurrencyPairMetadata(pairsMetaData, pair, pairMetadata);
        }
    } catch (Exception e) {
        throw new ExchangeException("Failed to initialize: " + e.getMessage(), e);
    }
}
Also used : CurrencyPairMetaData(org.knowm.xchange.dto.meta.CurrencyPairMetaData) CurrencyMetaData(org.knowm.xchange.dto.meta.CurrencyMetaData) LatokenCurrency(org.knowm.xchange.latoken.dto.exchangeinfo.LatokenCurrency) Currency(org.knowm.xchange.currency.Currency) LatokenCurrency(org.knowm.xchange.latoken.dto.exchangeinfo.LatokenCurrency) ExchangeException(org.knowm.xchange.exceptions.ExchangeException) LatokenPair(org.knowm.xchange.latoken.dto.exchangeinfo.LatokenPair) ExchangeException(org.knowm.xchange.exceptions.ExchangeException) CurrencyPair(org.knowm.xchange.currency.CurrencyPair)

Example 5 with CurrencyPairMetaData

use of org.knowm.xchange.dto.meta.CurrencyPairMetaData in project XChange by knowm.

the class LatokenExchange method addCurrencyPairMetadata.

/**
 * Updates the meta-data entry of a given {@link CurrencyPair}. <br>
 * Used for overriding the static meta-data with dynamic one received from the exchange.
 *
 * @param pairs
 * @param pair
 * @param precision
 */
private void addCurrencyPairMetadata(Map<CurrencyPair, CurrencyPairMetaData> pairs, CurrencyPair pair, CurrencyPairMetaData pairMetadata) {
    CurrencyPairMetaData baseMetaData = pairs.get(pair);
    // Preserve MaxAmount if exists
    BigDecimal maxAmount = baseMetaData == null ? pairMetadata.getMaximumAmount() : baseMetaData.getMaximumAmount();
    // Override static meta-data
    pairs.put(pair, new CurrencyPairMetaData.Builder().tradingFee(pairMetadata.getTradingFee()).minimumAmount(pairMetadata.getMinimumAmount()).maximumAmount(maxAmount).priceScale(pairMetadata.getPriceScale()).build());
}
Also used : CurrencyPairMetaData(org.knowm.xchange.dto.meta.CurrencyPairMetaData) ExchangeRestProxyBuilder(org.knowm.xchange.client.ExchangeRestProxyBuilder) BigDecimal(java.math.BigDecimal)

Aggregations

CurrencyPairMetaData (org.knowm.xchange.dto.meta.CurrencyPairMetaData)52 CurrencyPair (org.knowm.xchange.currency.CurrencyPair)45 CurrencyMetaData (org.knowm.xchange.dto.meta.CurrencyMetaData)33 Currency (org.knowm.xchange.currency.Currency)32 BigDecimal (java.math.BigDecimal)22 ExchangeMetaData (org.knowm.xchange.dto.meta.ExchangeMetaData)22 HashMap (java.util.HashMap)16 Test (org.junit.Test)10 FeeTier (org.knowm.xchange.dto.meta.FeeTier)10 IOException (java.io.IOException)7 Map (java.util.Map)7 Fee (org.knowm.xchange.dto.account.Fee)6 ArrayList (java.util.ArrayList)5 List (java.util.List)4 Collectors (java.util.stream.Collectors)4 RateLimit (org.knowm.xchange.dto.meta.RateLimit)4 WalletHealth (org.knowm.xchange.dto.meta.WalletHealth)4 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2