| | |
| | | BigDecimal all_sell_amt = now_price.multiply(new BigDecimal(buy_num.intValue())); |
| | | |
| | | BigDecimal profitLoss = new BigDecimal("0"); |
| | | if ("買漲".equals(userPosition.getOrderDirection())) { |
| | | if ("买涨".equals(userPosition.getOrderDirection())) { |
| | | log.info("買賣方向:{}", "漲"); |
| | | |
| | | profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4); |
| | | // profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4); |
| | | profitLoss = all_sell_amt.subtract(all_buy_amt).setScale(2,4); |
| | | } else { |
| | | log.info("買賣方向:{}", "跌"); |
| | | profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4); |
| | | // profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4); |
| | | profitLoss = all_buy_amt.subtract(all_sell_amt).setScale(2,4); |
| | | } |
| | | log.info("買入總金額 = {} , 賣出總金額 = {} , 盈虧 = {}", new Object[]{all_buy_amt, all_sell_amt, profitLoss}); |
| | | |
| | |
| | | |
| | | return ServerResponse.createBySuccessMsg("平倉成功!"); |
| | | } |
| | | |
| | | |
| | | //用户追加保证金操作 |
| | | public ServerResponse addmargin(String positionSn, int doType, BigDecimal marginAdd) throws Exception { |
| | |
| | | userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose()); |
| | | userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose()); |
| | | userPositionVO.setNow_price(positionProfitVO.getNowPrice()); |
| | | userPositionVO.setAllProfitAndLoseStr(positionProfitVO.getAllProfitAndLoseStr()); |
| | | |
| | | |
| | | return userPositionVO; |
| | |
| | | public PositionProfitVO getPositionProfitVO(UserPosition position) { |
| | | BigDecimal profitAndLose = new BigDecimal("0"); |
| | | BigDecimal allProfitAndLose = new BigDecimal("0"); |
| | | String allProfitAndLoseStr = ""; |
| | | String nowPrice = ""; |
| | | |
| | | if (position.getSellOrderId() != null) { |
| | | |
| | | BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice()); |
| | | profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4); |
| | | // profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4); |
| | | profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4); |
| | | if ("买跌".equals(position.getOrderDirection())) { |
| | | profitAndLose = profitAndLose.negate(); |
| | | } |
| | |
| | | |
| | | //总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费 |
| | | allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice()); |
| | | //改成盈亏百分比 |
| | | BigDecimal allProfitAndLoseStrTemp = new BigDecimal(nowPrice).subtract(position.getBuyOrderPrice()).divide(position.getBuyOrderPrice(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2,4); |
| | | allProfitAndLoseStr = allProfitAndLoseStrTemp.toString() + "%"; |
| | | } |
| | | PositionProfitVO positionProfitVO = new PositionProfitVO(); |
| | | positionProfitVO.setProfitAndLose(profitAndLose); |
| | | positionProfitVO.setAllProfitAndLose(allProfitAndLose); |
| | | positionProfitVO.setAllProfitAndLoseStr(allProfitAndLoseStr); |
| | | positionProfitVO.setNowPrice(nowPrice); |
| | | |
| | | return positionProfitVO; |