From 7b73a544cec17c05b5931cf6c2b5cdf598e127b4 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 07 Aug 2024 18:36:09 +0800
Subject: [PATCH] 1
---
src/main/java/project/contract/internal/ContractOrderServiceImpl.java | 37 ++++++++++++++++++++++++++++---------
1 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/src/main/java/project/contract/internal/ContractOrderServiceImpl.java b/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
index 1b7b665..006f318 100644
--- a/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
+++ b/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
@@ -1,13 +1,8 @@
package project.contract.internal;
import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
@@ -465,14 +460,16 @@
}
public Map<String, Object> bulidOne(ContractOrder order) {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.ENGLISH);
+ simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
DecimalFormat df = new DecimalFormat("#.##");
Map<String, Object> map = new HashMap<String, Object>();
map.put("order_no", order.getOrder_no());
map.put("name", itemService.cacheBySymbol(order.getSymbol(), false).getName());
map.put("symbol", order.getSymbol());
- map.put("create_time", DateUtils.format(order.getCreate_time(), DateUtils.DF_yyyyMMddHHmmss));
+ map.put("create_time", simpleDateFormat.format(order.getCreate_time()));
if (order.getClose_time() != null) {
- map.put("close_time", DateUtils.format(order.getClose_time(), DateUtils.DF_yyyyMMddHHmmss));
+ map.put("close_time", simpleDateFormat.format(order.getClose_time()));
} else {
map.put("close_time", "");
}
@@ -505,6 +502,28 @@
map.put("profit", df.format(Arith.sub(Arith.add(order.getAmount_close(), order.getDeposit()), order.getDeposit_open())));
}
+
+ double currentPrice = Double.parseDouble(map.get("trade_avg_price").toString());
+
+ // 计算仓位总价
+ double positionValue = Double.parseDouble(map.get("deposit_open").toString()) * Double.parseDouble(map.get("lever_rate").toString());
+
+ // 计算数量
+ double quantity = positionValue / currentPrice;
+
+ // 得到强平价格
+ if(null != map.get("direction")){
+ double liquidationPrice;
+ if(map.get("direction").equals("sell")){
+ liquidationPrice = currentPrice + (100 / quantity);
+ }else{
+ liquidationPrice = currentPrice - (100 / quantity);
+ }
+ DecimalFormat dfs = new DecimalFormat("#.#####");
+ String formattedPrice = dfs.format(liquidationPrice);
+ map.put("qiangPing",formattedPrice);
+ }
+
map.put("volume", order.getVolume());
map.put("volume_open", order.getVolume_open());
--
Gitblit v1.9.3