package com.xcong.excoin.utils;
|
|
|
import com.xcong.excoin.modules.member.dao.MemberSettingDao;
|
import com.xcong.excoin.modules.member.entity.MemberEntity;
|
import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
|
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.math.BigDecimal;
|
|
/**
|
* @author helius
|
*/
|
@Slf4j
|
public class CalculateUtil {
|
|
/**
|
* 计算预估强平价
|
*
|
* @param bondAmount 保证金
|
* @param openPrice 开仓价
|
* @param symbolSkuNumber 张数
|
* @param lotNumber 规格
|
* @param type 1:买多2:卖空
|
* @return
|
*/
|
public static BigDecimal getForceSetPrice(BigDecimal bondAmount, BigDecimal openPrice, int symbolSkuNumber, BigDecimal lotNumber,
|
int type, MemberEntity member) {
|
MemberSettingDao memberSettingDao = SpringContextHolder.getBean(MemberSettingDao.class);
|
BigDecimal forcePrice = BigDecimal.ZERO;
|
BigDecimal money = bondAmount.divide(new BigDecimal(symbolSkuNumber).multiply(lotNumber), 8, BigDecimal.ROUND_DOWN);
|
if (member.getIsForce() == 1) {
|
MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(member.getId());
|
money = money.multiply(memberSetting.getForceParam().multiply(BigDecimal.valueOf(100)));
|
}
|
//卖空
|
if (type == 2) {
|
forcePrice = money.add(openPrice);
|
} else {//开多
|
forcePrice = openPrice.subtract(money);
|
}
|
if (forcePrice.compareTo(BigDecimal.ZERO) < 0) {
|
forcePrice = BigDecimal.ZERO;
|
}
|
return forcePrice;
|
}
|
}
|