| | |
| | | |
| | | |
| | | //@Scheduled(cron = "0 0/30 * * * ? ") |
| | | @Scheduled(cron = "0/5 * * * * ?") |
| | | @Scheduled(cron = "0/10 * * * * ?") |
| | | public void traderProfitUpdate() { |
| | | log.info("交易员定时任务执行"); |
| | | // 查询所有交易员信息 |
| | | List<FollowTraderInfoEntity> allTraders = followTraderInfoDao.selectAllTraderInfo(); |
| | | if (CollUtil.isNotEmpty(allTraders)) { |
| | |
| | | List<ContractOrderEntity> orders = contractOrderDao.selectFollowOrderListByMemberId(tradeMemberId); |
| | | traderInfoProfit.setTotalOrderCnt(CollUtil.isNotEmpty(orders) ? orders.size() : 0); |
| | | // 近三周胜率 |
| | | Integer winCnt = contractOrderDao.selectFollowOrderCntForWinRate(tradeMemberId, 1); |
| | | Integer allCnt = contractOrderDao.selectFollowOrderCntForWinRate(tradeMemberId, null); |
| | | |
| | | if (winCnt != null && allCnt != null && allCnt!=0) { |
| | | BigDecimal winRate = BigDecimal.valueOf(winCnt).divide(BigDecimal.valueOf(allCnt), 4, BigDecimal.ROUND_DOWN); |
| | | traderInfoProfit.setWinRate(winRate); |
| | | BigDecimal winCnt = contractOrderDao.selectFollowOrderCntForWinRate(tradeMemberId, 1); |
| | | winCnt = (winCnt == null?BigDecimal.ZERO:winCnt.setScale(2, BigDecimal.ROUND_DOWN)); |
| | | BigDecimal allCnt = contractOrderDao.selectFollowOrderCntForWinRate(tradeMemberId, null); |
| | | allCnt = (allCnt == null?BigDecimal.ZERO:allCnt.setScale(2, BigDecimal.ROUND_DOWN)); |
| | | BigDecimal winRate = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_DOWN); |
| | | if (allCnt.compareTo(BigDecimal.ZERO) > 0) { |
| | | winRate = winCnt.divide(allCnt, 2, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN); |
| | | } |
| | | traderInfoProfit.setWinRate(winRate); |
| | | Date date = new Date(); |
| | | DateTime offsetDay = DateUtil.offsetDay(new Date(), -30); |
| | | //30天胜率(30天盈利总张数/30平仓总张数) |
| | | //30天胜率(30天盈利总单数/30平仓总单数) |
| | | BigDecimal thirtyTotalCnt = contractOrderDao.selectThirtyTotalCntByMemberId(tradeMemberId,date,offsetDay); |
| | | BigDecimal thirtyWinCnt = contractOrderDao.selectThirtyWinCntByMemberId(tradeMemberId,date,offsetDay); |
| | | BigDecimal thirtyTotalCntRatio = (thirtyTotalCnt == null?BigDecimal.ZERO:thirtyTotalCnt.setScale(2, BigDecimal.ROUND_DOWN)); |