| | |
| | | */ |
| | | //重新计算强平 |
| | | BigDecimal forceClosePrice = new BigDecimal(order.getForceClosePrice()); |
| | | if (currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) <= 0) {//达到强平价 |
| | | //达到强平价 |
| | | if ((ContractOrder.DIRECTION_BUY.equals(order.getDirection()) && currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) <= 0) |
| | | || (ContractOrder.DIRECTION_SELL.equals(order.getDirection()) && currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) >= 0)) { |
| | | BigDecimal point = forceClosePrice.subtract(order.getTradeAvgPrice()); |
| | | BigDecimal amount = point.multiply(new BigDecimal("0.01")).multiply(order.getVolumeOpen()).setScale(4, BigDecimal.ROUND_DOWN); |
| | | if (ContractOrder.DIRECTION_BUY.equals(order.getDirection())) { |
| | |
| | | } else{ |
| | | order.setProfit(amount.negate()); |
| | | } |
| | | //逐仓强平利润固定-100% |
| | | if (order.getLocationType() == 0) { |
| | | order.setProfit(order.getDepositOpen().add(order.getAddDepositOpen()).negate()); |
| | | //强平利润固定-100% |
| | | order.setProfit(order.getDepositOpen().add(order.getAddDepositOpen()).negate()); |
| | | //全仓强平利润+账户余额 |
| | | if (order.getLocationType() == 1) { |
| | | Wallet wallet = this.walletService.findByUserId(order.getPartyId()); |
| | | order.setProfit(order.getProfit().subtract(wallet.getMoney())); |
| | | } |
| | | } |
| | | this.contractOrderService.updateByIdBuffer(order); |