From 56a2846bfdf17b5d90f9dc1c8a519b2660714151 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 09 Apr 2021 10:58:12 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 32 ++++++++++++++++++++++++++++----
1 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 2d3f66a..45b88c9 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -211,10 +211,11 @@
* @param contractHoldOrderEntity
* @return
*/
- public static BigDecimal calWholePriceTwo(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity, int type, BigDecimal newPrice) {
+ public static BigDecimal calWholePriceTwo(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity, int type) {
ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
+ RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
Long memberId = memberEntity.getId();
MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
@@ -230,7 +231,31 @@
totalBondAmount = totalBondAmount.add(holdOrderEntity.getBondAmount());
}
- totalProfitOrLoss = totalProfitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
+
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+ if (type == 2) {
+ log.info("newPrice : {}", newPrice);
+ }
+ // 盈亏
+ BigDecimal rewardRatio = BigDecimal.ZERO;
+ // 开多
+ if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+ // (最新价-开仓价)*规格*张数
+ rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+ // 开空
+ } else {
+ // (开仓价-最新价)*规格*张数
+ rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+ }
+
+ if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+ PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+ if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+ rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+ }
+ }
+
+ totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio);
}
// 维持保证金
@@ -247,7 +272,7 @@
BigDecimal prefix = cost.subtract(ratio);
BigDecimal divideChild;
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
- divideChild = prefix.subtract(orderProfitOrLoss).subtract(qy);
+ divideChild = cost.subtract(orderProfitOrLoss).subtract(qy);
} else {
divideChild = prefix.add(orderProfitOrLoss).add(qy);
}
@@ -274,7 +299,6 @@
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
- log.info("最新价为:{}", newPrice);
// 盈亏
BigDecimal rewardRatio = BigDecimal.ZERO;
--
Gitblit v1.9.1