| | |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.yami.trading.api.UD.*; |
| | | import com.yami.trading.bean.data.domain.Depth; |
| | | import com.yami.trading.bean.data.domain.Kline; |
| | | import com.yami.trading.bean.data.domain.Realtime; |
| | | import com.yami.trading.bean.ico.domain.Ico; |
| | | import com.yami.trading.bean.item.domain.Item; |
| | | import com.yami.trading.bean.model.ChannelBlockchain; |
| | | import com.yami.trading.bean.model.User; |
| | | import com.yami.trading.bean.model.Withdraw; |
| | | import com.yami.trading.common.config.RequestDataHelper; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.util.ApplicationContextUtils; |
| | | import com.yami.trading.common.util.IPHelper; |
| | | import com.yami.trading.common.util.StringUtils; |
| | | import com.yami.trading.common.util.*; |
| | | import com.yami.trading.huobi.data.DataCache; |
| | | import com.yami.trading.huobi.data.internal.CryptosKlineService; |
| | | import com.yami.trading.huobi.data.internal.DepthTimeObject; |
| | | import com.yami.trading.huobi.data.internal.KlineInitService; |
| | | import com.yami.trading.huobi.data.internal.KlineTimeObject; |
| | | import com.yami.trading.huobi.hobi.HobiDataService; |
| | | import com.yami.trading.security.common.enums.CryptoCurrencyEnum; |
| | | import com.yami.trading.security.common.enums.SysTypeEnum; |
| | | import com.yami.trading.security.common.manager.PasswordCheckManager; |
| | | import com.yami.trading.security.common.util.SecurityUtils; |
| | | import com.yami.trading.service.IdentifyingCodeService; |
| | | import com.yami.trading.service.WithdrawService; |
| | | import com.yami.trading.service.data.KlineDBService; |
| | | import com.yami.trading.service.ico.IcoService; |
| | | import com.yami.trading.service.item.ItemService; |
| | | import com.yami.trading.service.user.UserService; |
| | |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | UserService userService; |
| | | @Autowired |
| | | PasswordCheckManager passwordCheckManager; |
| | | @Autowired |
| | | HobiDataService hobiDataService; |
| | | @Autowired |
| | | KlineDBService klineDBService; |
| | | |
| | | @Autowired |
| | | DepthPushJob depthPushJob; |
| | | |
| | | //@Scheduled(cron = "*/5 * * * * ?") |
| | | public void test() throws Exception { |
| | | User user= userService.findByUserName("zyyyyyyy"); |
| | | passwordCheckManager.checkPassword(SysTypeEnum.ORDINARY, user.getUserName(), "123456", user.getLoginPassword()); |
| | | /*String symbol ="snekusdt"; |
| | | RequestDataHelper.set("symbol", symbol); |
| | | LambdaQueryWrapper<Kline> queryWrapper = new LambdaQueryWrapper<Kline>() |
| | | .eq(Kline::getSymbol, symbol) |
| | | .eq(Kline::getPeriod, "5min") |
| | | .ge(Kline::getTs, ts1) |
| | | .lt(Kline::getTs, ts2) |
| | | .orderByAsc(Kline::getTs); |
| | | List<Kline> list = klineDBService.list(queryWrapper); |
| | | BigDecimal tz = num.divide(BigDecimal.valueOf(list.size()), 6, RoundingMode.HALF_UP); |
| | | System.out.println(list.size()); |
| | | System.out.println(tz); |
| | | for(int i=0;i<list.size();i++){ |
| | | BigDecimal nums = BigDecimal.valueOf(i+1); |
| | | *//*BigDecimal integerPart = nums.divide(BigDecimal.valueOf(100), 0, RoundingMode.FLOOR).add(BigDecimal.valueOf(1)); |
| | | |
| | | System.out.printf("nums=%d, 除以100的整数部分=%d%n", nums.intValue(), integerPart.intValue());*//* |
| | | BigDecimal addNum = nums.multiply(tz); |
| | | list.get(i).setClose(list.get(i).getClose().add(addNum)); |
| | | list.get(i).setOpen(list.get(i).getOpen().add(addNum)); |
| | | list.get(i).setHigh(list.get(i).getHigh().add(addNum)); |
| | | list.get(i).setLow(list.get(i).getLow().add(addNum)); |
| | | } |
| | | klineDBService.saveOrUpdateBatch(list);*/ |
| | | |
| | | /*RequestDataHelper.clear(); |
| | | // 定义时间范围:2025-09-16 00:00:00 到 2025-09-19 16:15:00 |
| | | LocalDateTime startTime = LocalDateTime.of(2025, 9, 16, 0, 0, 0); |
| | | LocalDateTime endTime = LocalDateTime.of(2025, 9, 19, 16, 15, 0); |
| | | |
| | | // 转换为东八区(UTC+8)的毫秒级时间戳 |
| | | ZoneOffset zoneOffset = ZoneOffset.of("+8"); |
| | | long startTs = startTime.toInstant(zoneOffset).toEpochMilli(); |
| | | long endTs = endTime.toInstant(zoneOffset).toEpochMilli(); |
| | | |
| | | // 存储所有时间戳 |
| | | List<Long> timestamps = new ArrayList<>(); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | List<Kline> list = new ArrayList<>(); |
| | | // 每5分钟 = 300000毫秒,遍历生成时间戳 |
| | | for (long currentTs = startTs; currentTs <= endTs; currentTs += 300000) { |
| | | timestamps.add(currentTs); |
| | | |
| | | // 打印时间和对应的时间戳(可选) |
| | | LocalDateTime currentTime = LocalDateTime.ofInstant( |
| | | java.time.Instant.ofEpochMilli(currentTs), |
| | | zoneOffset |
| | | ); |
| | | System.out.printf("时间: %s | 时间戳: %d%n", |
| | | currentTime.format(formatter), currentTs); |
| | | Kline kline = new Kline(); |
| | | kline.setTs(currentTs); |
| | | kline.setSymbol(symbol); |
| | | kline.setPeriod("5min"); |
| | | list.add(kline); |
| | | } |
| | | System.out.println(list.size()); |
| | | RequestDataHelper.set("symbol", symbol); |
| | | klineDBService.saveOrUpdateBatch(list); |
| | | RequestDataHelper.clear();*/ |
| | | /*String symbol = "snekusdt"; |
| | | DepthTimeObject depth = DataCache.getDepth().get(symbol); |
| | | Depth depthData = depth.getDepth(); |
| | | Realtime realtime = DataCache.getRealtime(symbol); |
| | | depthPushJob.depthRevise(depthData, symbol, realtime.getClose().doubleValue(), true);*/ |
| | | } |
| | | /** |
| | | * ico转入产品 |
| | |
| | | /** |
| | | * K线数据修正 |
| | | */ |
| | | @Scheduled(cron = "0 */2 * * * ?") |
| | | //@Scheduled(cron = "0 */5 * * * ?") |
| | | public void klineInit() { |
| | | List<Item> items = ApplicationContextUtils.getApplicationContext().getBean(ItemService.class).list(); |
| | | if (CollectionUtil.isNotEmpty(items)) { |