| | |
| | | double amount = Arith.mul(sub, realtime.getClose().doubleValue()); |
| | | order.setCloseTime(new Date()); |
| | | order.setClosePrice(realtime.getClose().doubleValue()); |
| | | // Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId()); |
| | | CapitaltWallet capitaltWallet = capitaltWalletService.getUserIdWallet(order.getPartyId()); |
| | | Wallet capitaltWallet = this.walletService.saveWalletByPartyId(order.getPartyId()); |
| | | // CapitaltWallet capitaltWallet = capitaltWalletService.getUserIdWallet(order.getPartyId()); |
| | | double amount_before = capitaltWallet.getMoney().doubleValue(); |
| | | // this.walletService.update(userIdWallet.getUserId().toString(), amount); |
| | | this.capitaltWalletService.update(capitaltWallet, amount); |
| | | this.walletService.update(capitaltWallet.getUserId(), amount); |
| | | |
| | | /* |
| | | * 保存资金日志 |
| | |
| | | List<ExchangeApplyOrder> list = list(lambdaQueryWrapper); |
| | | return getDataList(list); |
| | | } |
| | | |
| | | |
| | | private static List<ExchangeApplyOrder> getData() { |
| | | |
| | |
| | | toDayProfitLoss = (marketValue - (openPrice * volume)); |
| | | profitLoss = marketValue - cost; |
| | | ExchangeSymbolDto exchangeSymbolDto = new ExchangeSymbolDto(); |
| | | exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setName(name); |
| | | exchangeSymbolDto.setSymbol(key); |
| | | exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setToDayProfitLossPercentage(calculateProfitPercentage(openPrice, currentPrice)); |
| | | exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | exchangeSymbolDto.setProfitLossPercentage(calculateProfitPercentage(price, currentPrice)); |
| | | result.add(exchangeSymbolDto); |
| | | } |
| | |
| | | double profit = currentPrice - buyPrice; |
| | | double profitPercentage = (profit / buyPrice) * 100; |
| | | System.out.println(profitPercentage); |
| | | return new BigDecimal(profitPercentage).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | return new BigDecimal(profitPercentage).setScale(2, RoundingMode.DOWN).doubleValue(); |
| | | } |
| | | |
| | | public static void test() { |
| | |
| | | |
| | | } |
| | | SumEtfDto sumEtfDto = new SumEtfDto(); |
| | | sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | // usdt余额 |
| | | Wallet wallet = new Wallet(); |
| | | if (!"".equals(userId) && userId != null) { |
| | | wallet = walletService.findByUserId(userId.toString()); |
| | | } |
| | | sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.DOWN).doubleValue()); |
| | | return sumEtfDto; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | map.put("create_time", DateUtil.formatDate(order.getCreateTime(), DateUtils.DF_yyyyMMddHHmmss)); |
| | | map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP)); |
| | | map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN)); |
| | | // 买的时候total 为volume,卖的时候total = volume*closeTime |
| | | if("open".equalsIgnoreCase(order.getOffset())){ |
| | | map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP)); |
| | | map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN)); |
| | | }else{ |
| | | map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.HALF_UP)); |
| | | map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.DOWN)); |
| | | } |
| | | map.put("offset", order.getOffset()); |
| | | map.put("price", order.getPrice()); |
| | |
| | | // 可以买的数量 |
| | | double amount = Arith.div(sub, order.getClosePrice(), 8); |
| | | order.setSymbolValue(amount); |
| | | // Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId()); |
| | | CapitaltWallet userIdWallet = capitaltWalletService.getUserIdWallet(order.getPartyId()); |
| | | Wallet userIdWallet = this.walletService.saveWalletByPartyId(order.getPartyId()); |
| | | // CapitaltWallet userIdWallet = capitaltWalletService.getUserIdWallet(order.getPartyId()); |
| | | double amount_before = userIdWallet.getMoney().doubleValue(); |
| | | // 如果是计划委托,则先不扣钱 |
| | | if (order.isTriggerOrder()) { |
| | |
| | | save(order); |
| | | } |
| | | if (!order.isTriggerOrder()) { |
| | | System.out.println("-----userIdWallet---------:"+userIdWallet.getMoney().doubleValue()); |
| | | System.out.println("-----order---------:"+order.getVolume().doubleValue()); |
| | | if (userIdWallet.getMoney().doubleValue() < order.getVolume().doubleValue()) { |
| | | throw new YamiShopBindException("余额不足"); |
| | | } |
| | | // this.walletService.update(userIdWallet.getUserId().toString(), Arith.sub(0, order.getVolume())); |
| | | capitaltWalletService.update(userIdWallet, Arith.sub(0, order.getVolume())); |
| | | this.walletService.update(userIdWallet.getUserId().toString(), Arith.sub(0, order.getVolume())); |
| | | // capitaltWalletService.update(userIdWallet, Arith.sub(0, order.getVolume())); |
| | | /* |
| | | * 保存资金日志 |
| | | */ |