|
|
@@ -725,20 +725,21 @@ public class CoinServiceImpl implements CoinService {
|
|
|
jsonObject.put("cTime", DateUtils.longToString(jsonObject.getLong("cTime")));
|
|
|
jsonObject.put("uTime", StringUtils.isEmpty(jsonObject.getString("uTime")) ? "--" : DateUtils.longToString(jsonObject.getLong("uTime")));
|
|
|
|
|
|
- String requestUrl = mainUrl + "/api/mix/v1/market/ticker?symbol=" + symbol;
|
|
|
+ // 获取合约标记价格
|
|
|
+ String requestUrl = mainUrl + "/api/mix/v1/market/mark-price?symbol=" + symbol;
|
|
|
try {
|
|
|
Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
|
|
|
- String last = JSONObject.parseObject(response.body()).getJSONObject("data").getString("last");
|
|
|
+ String markPrice = JSONObject.parseObject(response.body()).getJSONObject("data").getString("markPrice");
|
|
|
|
|
|
BigDecimal chaRate = BigDecimal.ZERO;
|
|
|
if ("open_long".equals(side)) {
|
|
|
- chaRate = new BigDecimal(last).divide(new BigDecimal(jsonObject.getString("triggerPrice")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ chaRate = new BigDecimal(markPrice).divide(new BigDecimal(jsonObject.getString("triggerPrice")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
} else if ("open_short".equals(side)) {
|
|
|
- chaRate = new BigDecimal(jsonObject.getString("triggerPrice")).divide(new BigDecimal(last), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ chaRate = new BigDecimal(jsonObject.getString("triggerPrice")).divide(new BigDecimal(markPrice), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
|
|
|
- jsonObject.put("last", last);
|
|
|
- jsonObject.put("lastStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
|
|
|
+ jsonObject.put("markPrice", markPrice);
|
|
|
+ jsonObject.put("markPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
|
|
|
jsonObject.put("chaRate", chaRate);
|
|
|
jsonObject.put("chaRateStyle", " style=\"color:#FFFFFF;background-color:#5EA294;\"");
|
|
|
} catch (Exception ex) {
|
|
|
@@ -878,20 +879,21 @@ public class CoinServiceImpl implements CoinService {
|
|
|
jsonObject.put("cTime", DateUtils.longToString(jsonObject.getLong("cTime")));
|
|
|
jsonObject.put("uTime", DateUtils.longToString(jsonObject.getLong("uTime")));
|
|
|
|
|
|
- String requestUrl = mainUrl + "/api/mix/v1/market/ticker?symbol=" + symbol;
|
|
|
+ // 获取合约标记价格
|
|
|
+ String requestUrl = mainUrl + "/api/mix/v1/market/mark-price?symbol=" + symbol;
|
|
|
try {
|
|
|
Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
|
|
|
- String last = JSONObject.parseObject(response.body()).getJSONObject("data").getString("last");
|
|
|
+ String markPrice = JSONObject.parseObject(response.body()).getJSONObject("data").getString("markPrice");
|
|
|
|
|
|
BigDecimal chaRate = BigDecimal.ZERO;
|
|
|
if ("open_short".equals(side)) {
|
|
|
- chaRate = new BigDecimal(last).divide(new BigDecimal(jsonObject.getString("price")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ chaRate = new BigDecimal(markPrice).divide(new BigDecimal(jsonObject.getString("price")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
} else if ("open_long".equals(side)) {
|
|
|
- chaRate = new BigDecimal(jsonObject.getString("price")).divide(new BigDecimal(last), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ chaRate = new BigDecimal(jsonObject.getString("price")).divide(new BigDecimal(markPrice), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
|
|
|
- jsonObject.put("last", last);
|
|
|
- jsonObject.put("lastStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
|
|
|
+ jsonObject.put("markPrice", markPrice);
|
|
|
+ jsonObject.put("markPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
|
|
|
jsonObject.put("chaRate", chaRate);
|
|
|
jsonObject.put("chaRateStyle", " style=\"color:#FFFFFF;background-color:#5EA294;\"");
|
|
|
} catch (Exception ex) {
|
|
|
@@ -914,8 +916,9 @@ public class CoinServiceImpl implements CoinService {
|
|
|
JSONObject jsonObject = (JSONObject) e;
|
|
|
|
|
|
// 币对名称
|
|
|
- String symbol = jsonObject.getString("symbol").replace("USDT_UMCBL", "");
|
|
|
- jsonObject.put("symbol", "<strong style=\"background-color:#F1B90d;\"><font color=\"#242A30\">" + symbol + "</font></strong>USDT_UMCBL");
|
|
|
+ String symbol = jsonObject.getString("symbol");
|
|
|
+ jsonObject.put("symbol", "<strong style=\"background-color:#F1B90d;\"><font color=\"#242A30\">" + symbol.replace("USDT_UMCBL", "") + "</font></strong>USDT_UMCBL");
|
|
|
+
|
|
|
// 持仓方向
|
|
|
String holdSide = jsonObject.getString("holdSide");
|
|
|
jsonObject.put("holdSide", InitRunner.publicParamsMap.get("holdSide").getString(holdSide));
|
|
|
@@ -954,6 +957,22 @@ public class CoinServiceImpl implements CoinService {
|
|
|
jsonObject.put("returnRateStyle", " style=\"color:#FFFFFF;background-color:#1DA2B4;\"");
|
|
|
}
|
|
|
|
|
|
+ // 获取当前资金费率
|
|
|
+ String requestUrl = mainUrl + "/api/mix/v1/market/current-fundRate?symbol=" + symbol;
|
|
|
+ try {
|
|
|
+ Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
|
|
|
+ String fundingRate = JSONObject.parseObject(response.body()).getJSONObject("data").getString("fundingRate");
|
|
|
+
|
|
|
+ if (new BigDecimal(fundingRate).compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ jsonObject.put("fundingRateStyle", " style=\"color:#FFFFFF;background-color:#F1493F;\"");
|
|
|
+ } else {
|
|
|
+ jsonObject.put("fundingRateStyle", " style=\"color:#FFFFFF;background-color:#1DA2B4;\"");
|
|
|
+ }
|
|
|
+ jsonObject.put("fundingRate", new BigDecimal(fundingRate).multiply(BigDecimal.valueOf(100)).setScale(4, RoundingMode.HALF_UP).toPlainString() + "%");
|
|
|
+ } catch (Exception ex) {
|
|
|
+ throw new RuntimeException(ex);
|
|
|
+ }
|
|
|
+
|
|
|
// 标记价格
|
|
|
jsonObject.put("marketPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
|
|
|
|