protected final void verifyOrder(Order order, ExchangeMetaData exchangeMetaData) { CurrencyPairMetaData metaData = exchangeMetaData.getCurrencyPairs().get(order.getCurrencyPair()); if (metaData == null) { throw new IllegalArgumentException("Invalid CurrencyPair"); } BigDecimal originalAmount = order.getOriginalAmount(); if (originalAmount == null) { throw new IllegalArgumentException("Missing originalAmount"); } BigDecimal amount = originalAmount.stripTrailingZeros(); BigDecimal minimumAmount = metaData.getMinimumAmount(); if (minimumAmount != null) { if (amount.scale() > minimumAmount.scale()) { throw new IllegalArgumentException("Unsupported amount scale " + amount.scale()); } else if (amount.compareTo(minimumAmount) < 0) { throw new IllegalArgumentException("Order amount less than minimum"); } } } }
private static CurrencyPairMetaData adaptPair( HuobiAssetPair pair, CurrencyPairMetaData metadata) { BigDecimal minQty = metadata == null ? null : metadata.getMinimumAmount().setScale(Integer.parseInt(pair.getAmountPrecision())); FeeTier[] feeTiers = metadata == null ? null : metadata.getFeeTiers(); return new CurrencyPairMetaData( fee, minQty, // Min amount null, // Max amount new Integer(pair.getPricePrecision()), // Price scale feeTiers); }
private static CurrencyPairMetaData adaptPair( BitmexTicker ticker, CurrencyPairMetaData originalMeta) { if (originalMeta != null) { return new CurrencyPairMetaData( ticker.getTakerFee(), originalMeta.getMinimumAmount(), originalMeta.getMaximumAmount(), Math.max(0, ticker.getTickSize().stripTrailingZeros().scale()), originalMeta.getFeeTiers()); } else { return new CurrencyPairMetaData( ticker.getTakerFee(), null, null, Math.max(0, ticker.getTickSize().stripTrailingZeros().scale()), null); } }
private static CurrencyPairMetaData adaptPair( KrakenAssetPair krakenPair, CurrencyPairMetaData OriginalMeta) { if (OriginalMeta != null) { return new CurrencyPairMetaData( krakenPair.getFees().get(0).getPercentFee().divide(new BigDecimal(100)), OriginalMeta.getMinimumAmount(), OriginalMeta.getMaximumAmount(), krakenPair.getPairScale(), adaptFeeTiers(krakenPair.getFees_maker(), krakenPair.getFees())); } else { return new CurrencyPairMetaData( krakenPair.getFees().get(0).getPercentFee().divide(new BigDecimal(100)), null, null, krakenPair.getPairScale(), adaptFeeTiers(krakenPair.getFees_maker(), krakenPair.getFees())); } }
public static ExchangeMetaData adaptMetaData( BitfinexAccountInfosResponse[] bitfinexAccountInfos, ExchangeMetaData exchangeMetaData) { final Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = exchangeMetaData.getCurrencyPairs(); // lets go with the assumption that the trading fees are common across all trading pairs for // now. // also setting the taker_fee as the trading_fee for now. final CurrencyPairMetaData metaData = new CurrencyPairMetaData( bitfinexAccountInfos[0].getTakerFees().movePointLeft(2), null, null, null, null); currencyPairs .keySet() .parallelStream() .forEach( currencyPair -> currencyPairs.merge( currencyPair, metaData, (oldMetaData, newMetaData) -> new CurrencyPairMetaData( newMetaData.getTradingFee(), oldMetaData.getMinimumAmount(), oldMetaData.getMaximumAmount(), oldMetaData.getPriceScale(), oldMetaData.getFeeTiers()))); return exchangeMetaData; }
public static ExchangeMetaData adaptToExchangeMetaData( List<HitbtcSymbol> symbols, Map<Currency, CurrencyMetaData> currencies, Map<CurrencyPair, CurrencyPairMetaData> currencyPairs) { if (symbols != null) { for (HitbtcSymbol symbol : symbols) { CurrencyPair pair = adaptSymbol(symbol); BigDecimal tickSize = symbol.getTickSize(); int priceScale = tickSize.scale(); // not 100% sure this is correct BigDecimal tradingFee = symbol.getTakeLiquidityRate(); BigDecimal minimumAmount = symbol.getQuantityIncrement(); BigDecimal maximumAmount = null; FeeTier[] feeTiers = null; if (currencyPairs.containsKey(pair)) { CurrencyPairMetaData existing = currencyPairs.get(pair); minimumAmount = existing.getMinimumAmount(); maximumAmount = existing.getMaximumAmount(); feeTiers = existing.getFeeTiers(); } CurrencyPairMetaData meta = new CurrencyPairMetaData( tradingFee, minimumAmount, maximumAmount, priceScale, feeTiers); currencyPairs.put(pair, meta); } } return new ExchangeMetaData(currencyPairs, currencies, null, null, null); }
newMetaData.getMinimumAmount(),
protected final void verifyOrder(Order order, ExchangeMetaData exchangeMetaData) { CurrencyPairMetaData metaData = exchangeMetaData.getCurrencyPairs().get(order.getCurrencyPair()); if (metaData == null) { throw new IllegalArgumentException("Invalid CurrencyPair"); } BigDecimal originalAmount = order.getOriginalAmount(); if (originalAmount == null) { throw new IllegalArgumentException("Missing originalAmount"); } BigDecimal amount = originalAmount.stripTrailingZeros(); BigDecimal minimumAmount = metaData.getMinimumAmount(); if (minimumAmount != null) { if (amount.scale() > minimumAmount.scale()) { throw new IllegalArgumentException("Unsupported amount scale " + amount.scale()); } else if (amount.compareTo(minimumAmount) < 0) { throw new IllegalArgumentException("Order amount less than minimum"); } } } }
private static CurrencyPairMetaData adaptPair( BitmexTicker ticker, CurrencyPairMetaData originalMeta) { if (originalMeta != null) { return new CurrencyPairMetaData( ticker.getTakerFee(), originalMeta.getMinimumAmount(), originalMeta.getMaximumAmount(), Math.max(0, ticker.getTickSize().stripTrailingZeros().scale()), originalMeta.getFeeTiers()); } else { return new CurrencyPairMetaData( ticker.getTakerFee(), null, null, Math.max(0, ticker.getTickSize().stripTrailingZeros().scale()), null); } }
public static ExchangeMetaData adaptToExchangeMetaData( List<HitbtcSymbol> symbols, Map<Currency, CurrencyMetaData> currencies, Map<CurrencyPair, CurrencyPairMetaData> currencyPairs) { if (symbols != null) { for (HitbtcSymbol symbol : symbols) { CurrencyPair pair = adaptSymbol(symbol); BigDecimal tickSize = symbol.getTickSize(); int priceScale = tickSize.scale(); // not 100% sure this is correct BigDecimal tradingFee = symbol.getTakeLiquidityRate(); BigDecimal minimumAmount = symbol.getQuantityIncrement(); BigDecimal maximumAmount = null; FeeTier[] feeTiers = null; if (currencyPairs.containsKey(pair)) { CurrencyPairMetaData existing = currencyPairs.get(pair); minimumAmount = existing.getMinimumAmount(); maximumAmount = existing.getMaximumAmount(); feeTiers = existing.getFeeTiers(); } CurrencyPairMetaData meta = new CurrencyPairMetaData( tradingFee, minimumAmount, maximumAmount, priceScale, feeTiers); currencyPairs.put(pair, meta); } } return new ExchangeMetaData(currencyPairs, currencies, null, null, null); }
private static CurrencyPairMetaData adaptPair( KrakenAssetPair krakenPair, CurrencyPairMetaData OriginalMeta) { if (OriginalMeta != null) { return new CurrencyPairMetaData( krakenPair.getFees().get(0).getPercentFee().divide(new BigDecimal(100)), OriginalMeta.getMinimumAmount(), OriginalMeta.getMaximumAmount(), krakenPair.getPairScale(), adaptFeeTiers(krakenPair.getFees_maker(), krakenPair.getFees())); } else { return new CurrencyPairMetaData( krakenPair.getFees().get(0).getPercentFee().divide(new BigDecimal(100)), null, null, krakenPair.getPairScale(), adaptFeeTiers(krakenPair.getFees_maker(), krakenPair.getFees())); } }
public static ExchangeMetaData adaptMetaData( BitfinexAccountInfosResponse[] bitfinexAccountInfos, ExchangeMetaData exchangeMetaData) { final Map<CurrencyPair, CurrencyPairMetaData> currencyPairs = exchangeMetaData.getCurrencyPairs(); // lets go with the assumption that the trading fees are common across all trading pairs for // now. // also setting the taker_fee as the trading_fee for now. final CurrencyPairMetaData metaData = new CurrencyPairMetaData( bitfinexAccountInfos[0].getTakerFees().movePointLeft(2), null, null, null, null); currencyPairs .keySet() .parallelStream() .forEach( currencyPair -> currencyPairs.merge( currencyPair, metaData, (oldMetaData, newMetaData) -> new CurrencyPairMetaData( newMetaData.getTradingFee(), oldMetaData.getMinimumAmount(), oldMetaData.getMaximumAmount(), oldMetaData.getPriceScale(), oldMetaData.getFeeTiers()))); return exchangeMetaData; }
newMetaData.getMinimumAmount(),