From d23645e976981bc9b670eea1d469fe8a36be309c Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 17 Apr 2024 17:19:53 +0800 Subject: [PATCH] 55测试环境 --- src/test/java/com/xcong/excoin/WholeTest.java | 138 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 129 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/xcong/excoin/WholeTest.java b/src/test/java/com/xcong/excoin/WholeTest.java index 567ee1c..a366bfc 100644 --- a/src/test/java/com/xcong/excoin/WholeTest.java +++ b/src/test/java/com/xcong/excoin/WholeTest.java @@ -1,5 +1,6 @@ package com.xcong.excoin; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.common.contants.AppContants; import com.xcong.excoin.common.enumerates.CoinTypeEnum; @@ -12,9 +13,14 @@ import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; import com.xcong.excoin.rabbit.pricequeue.OrderModel; +import com.xcong.excoin.rabbit.pricequeue.OrderOperatePriceService; +import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService; import com.xcong.excoin.rabbit.producer.OrderProducer; import com.xcong.excoin.utils.CalculateUtil; +import com.xcong.excoin.utils.CoinTypeConvert; +import com.xcong.excoin.utils.RedisUtils; import com.xcong.excoin.utils.ThreadPoolUtils; +import lombok.SneakyThrows; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -22,7 +28,10 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * @author wzy @@ -92,14 +101,6 @@ @Autowired private OrderProducer orderProducer; - @Test - public void sendMsg() { - List<OrderModel> list = new ArrayList<>(); - OrderModel orderModel = new OrderModel(1L, RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(), "111", "BTC"); - list.add(orderModel); - orderProducer.sendLimitClose(JSONObject.toJSONString(list)); - } - // 面值*(多单张数*多单开仓价-空单张数*空单开仓价)-余额-已实现盈亏 / 面值*(多单张数-空单张数)-(维持保证金率+TAKER手续费)*面值*(开多张数+开空张数) @@ -115,8 +116,127 @@ */ @Test public void forceSetPriceTest() { + MemberEntity memberEntity = memberDao.selectById(15L); + System.out.println(CalculateUtil.getForceSetPriceForWhole("BTC/USDT", memberEntity)); + } + + @Test + public void profitOrLessTest() { + MemberEntity memberEntity = memberDao.selectById(15L); + ContractHoldOrderEntity contractHoldOrderEntity = contractHoldOrderDao.selectById(144L); + System.out.println(CalculateUtil.calProfitOrLoss(contractHoldOrderEntity, memberEntity)); + } + + @Resource + private RedisUtils redisUtils; + + @Test + public void redisTest() { + for (int i = 827; i < 999; i++) { + redisUtils.del(AppContants.CLOSING_ORDER_PREFIX + i); + } + } + + @Resource + private WebsocketPriceService websocketPriceService; + + @Test + public void wholeBombTest() { + websocketPriceService.wholeBomb("BTC/USDT", "9000"); + } + + @Test + public void forceTest() { MemberEntity memberEntity = memberDao.selectById(5L); - CalculateUtil.getForceSetPriceForWhole("BTC/USDT", memberEntity); + CalculateUtil.getForceSetPriceForWhole(null, memberEntity); + } + + public static void main(String[] args) { + Map<String, String> map = new ConcurrentHashMap<>(); + map.put("1", "1"); + map.put("2", "2"); + map.put("3", "3"); + map.put("4", "4"); + map.put("5", "5"); + + new Thread(new Runnable() { + @SneakyThrows + @Override + public void run() { + for (Map.Entry<String, String> entry : map.entrySet()) { + System.out.println(entry.getKey() + " - " + entry.getValue()); + if (entry.getKey().equals("3")) { + System.out.println(11); + map.remove("3"); + } + Thread.sleep(1000); + } + + System.out.println(map.get("3")); + } + }).start(); + + } + + @Test + public void mapTest() { +// websocketPriceService.wholeBomb(); + OrderOperatePriceService.wholePriceDataOperation(63L); + } + + + @Test + public void wholeForceTest() { + // 8301.38608660 +// System.out.println(new BigDecimal("9925.29996175").subtract(new BigDecimal("1623.91387515"))); + + BigDecimal aa = new BigDecimal("9925.29996175").subtract(new BigDecimal("8301.38608660").negate()).subtract(new BigDecimal("1623.91387515")).subtract(new BigDecimal("0.1").multiply(new BigDecimal(50)).multiply(new BigDecimal("32478.27750300"))); + BigDecimal bb = new BigDecimal(50).multiply(new BigDecimal("0.1")); + BigDecimal divide = aa.divide(bb, 8, BigDecimal.ROUND_DOWN); + System.out.println(divide); + // -(账户权益-委托保证金-全仓维持保证金-全仓未实现盈利-数量*面值*开仓价格)/(数量*面值) + // 30818.00028568 -- + // 29157.72306836 -- + } + + @Test + public void wholeForceNewTest() { + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey("BTC/USDT"))); + + MemberEntity memberEntity = memberDao.selectById(19L); + ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(932L); + + System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 2)); + } + + @Test + public void wholeForceNewTest2() { + BigDecimal holdBond = new BigDecimal("1161.8951"); + + BigDecimal sku = new BigDecimal("0.1"); + BigDecimal openPrice = new BigDecimal("58094.75"); + int cnt = 50; + BigDecimal total = new BigDecimal("9866.3820"); + // 成本 数量*面值*开仓价 + BigDecimal cost = sku.multiply(openPrice).multiply(new BigDecimal(cnt)); + // 费率 + BigDecimal ratio = openPrice.multiply(new BigDecimal("0.005")); + // 总账户 - 维持保证金 + BigDecimal orderProfitOrLoss = total.subtract(holdBond); + // 权益 + BigDecimal qy = BigDecimal.ZERO; + + BigDecimal prefix = cost.subtract(ratio); + BigDecimal divideChild; +// if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) { + divideChild = prefix.subtract(orderProfitOrLoss).subtract(qy); +// } else { +// divideChild = prefix.add(orderProfitOrLoss).add(qy); +// } +// BigDecimal divideChild = walletContract.getTotalBalance().add(totalProfitOrLoss).subtract(holdBond).subtract(cost).add(newPrice.multiply(new BigDecimal("0.005"))); + BigDecimal divideParent = sku.multiply(new BigDecimal(cnt)); + + System.out.println(divideChild.divide(divideParent, 8, BigDecimal.ROUND_DOWN)); } } -- Gitblit v1.9.1