package com.nq.utils;
|
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
|
public class TradeFeeUtil {
|
|
/** 默认买入手续费率 0.0035 = 0.35% */
|
public static final BigDecimal BUY_FEE_RATE = new BigDecimal("0.0035");
|
|
private TradeFeeUtil() {
|
}
|
|
public static BigDecimal resolveBuyFeeRate(BigDecimal configured) {
|
if (configured == null || configured.compareTo(BigDecimal.ZERO) <= 0) {
|
return BUY_FEE_RATE;
|
}
|
return configured;
|
}
|
|
public static BigDecimal calcBuyFee(BigDecimal buyAmt) {
|
return calcBuyFee(buyAmt, BUY_FEE_RATE);
|
}
|
|
public static BigDecimal calcBuyFee(BigDecimal buyAmt, BigDecimal feeRate) {
|
if (buyAmt == null) {
|
return BigDecimal.ZERO;
|
}
|
return buyAmt.multiply(resolveBuyFeeRate(feeRate)).setScale(2, RoundingMode.HALF_UP);
|
}
|
|
public static BigDecimal calcBuyFeeByNotional(BigDecimal notional, Integer lever, BigDecimal feeRate) {
|
return calcBuyFee(notional, feeRate);
|
}
|
|
public static BigDecimal calcBuyFeeByNotional(BigDecimal notional, Integer lever) {
|
return calcBuyFee(notional);
|
}
|
|
public static BigDecimal calcBuyDebit(BigDecimal margin, BigDecimal fee) {
|
BigDecimal marginAmt = margin == null ? BigDecimal.ZERO : margin;
|
BigDecimal feeAmt = fee == null ? BigDecimal.ZERO : fee;
|
return marginAmt.add(feeAmt).setScale(2, RoundingMode.HALF_UP);
|
}
|
}
|