zj
2025-05-28 bcd36411feb0351347289476eb7ee9e5dd1c3b9d
src/main/java/project/contract/internal/ContractOrderServiceImpl.java
@@ -1,5 +1,7 @@
package project.contract.internal;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -540,24 +542,30 @@
      double totleMoney = wallet.getMoney();
      profit = Arith.add(profit,totleMoney);
      if (map.get("direction") != null) {
         String direction = map.get("direction").toString();
         double liquidationPrice;
         double deposit = depositOpen + profit;
         double deposit =  profit;
         if(leverRate == 1){
            liquidationPrice = 0;
         }else {
            if ("sell".equals(direction)) {
               liquidationPrice = tradeAvgPrice + (deposit / div);
               double lossPercentage = deposit / (Arith.mul(order.getVolume(), order.getUnit_amount()));
               double priceIncrease = lossPercentage * tradeAvgPrice;
               liquidationPrice = tradeAvgPrice + priceIncrease;
            } else {
               liquidationPrice = (mul * tradeAvgPrice) / (deposit + mul);
               double lossPercentage = deposit / (Arith.mul(order.getVolume(), order.getUnit_amount()));
               double priceDrop = lossPercentage * tradeAvgPrice;
               liquidationPrice = tradeAvgPrice - priceDrop;
            }
         }
         DecimalFormat dfs = new DecimalFormat("#.#####");
         String formattedPrice = dfs.format(liquidationPrice);
         // 检查是否为负数
         if (Double.parseDouble(formattedPrice) < 0) {
            formattedPrice = "0";
         }
         map.put("qiangPing", formattedPrice);
      }
@@ -566,48 +574,6 @@
      return map;
   }
//
//
   public static void main(String[] args) {
      Map<String, Object> map = new HashMap<>();
      map.put("direction", "buy");  // "buy" 或 "sell"
      double currentPrice = 59649.7;  // 开仓价格
      double leve = 10;  // 杠杆倍数
      double bzj = 500; // 保证金
      double zjbzj = 500; // 资金账户
      double xj = 70781.28; // 现价
      double mul = Arith.mul(bzj, leve);//仓位
      double div = Arith.div(mul, currentPrice);//持有币的数量
      double amount = Arith.mul(div, Arith.sub(xj, currentPrice));
      System.out.println(amount);
      if (map.get("direction") != null) {
         String direction = map.get("direction").toString();
         double liquidationPrice;
         double bcbzj = bzj + zjbzj;
         if(leve == 1){
            liquidationPrice = 0;
         }else{
            if ("sell".equals(direction)) {
               liquidationPrice = currentPrice + (bcbzj / div);
            } else {
               liquidationPrice = (mul * currentPrice) / (bcbzj + mul);
            }
         }
         DecimalFormat dfs = new DecimalFormat("#.#####");
         String formattedPrice = dfs.format(liquidationPrice);
         map.put("qiangPing", formattedPrice);
      }
      // 打印结果以验证
      System.out.println("Calculated Liquidation Price: " + map.get("qiangPing"));
   }
//
   @Override
   public List<ContractOrder> findSubmitted() {