package com.xcong.excoin.modules.okxNewPrice.utils;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Random;
|
|
/**
|
* @author Administrator
|
*/
|
public class WsParamBuild {
|
|
public static String getOrderNum(String prefix) {
|
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
|
String dd=df.format(new Date());
|
if (StrUtil.isNotBlank(prefix)) {
|
return prefix+dd+getRandomNum(5);
|
}
|
return dd+getRandomNum(5);
|
}
|
|
public static String getRandomNum(int length) {
|
String str = "0123456789";
|
Random random = new Random();
|
StringBuilder sb = new StringBuilder();
|
for (int i = 0; i < length; ++i) {
|
int number = random.nextInt(str.length());
|
sb.append(str.charAt(number));
|
}
|
|
return sb.toString();
|
}
|
|
public static JSONObject buildJsonObject(String connId, String option, JSONArray argsArray) {
|
JSONObject jsonObject = new JSONObject();
|
if (StrUtil.isNotEmpty(connId)){
|
jsonObject.put("id", connId);
|
}
|
jsonObject.put("op", option);
|
jsonObject.put("args", argsArray);
|
return jsonObject;
|
}
|
|
|
/**
|
* 计算购买合约的数量
|
*
|
* USDT 币本位合约
|
* 公式:张数 = 保证金 / (面值 * 标记价格 / 杠杆倍数)
|
*
|
* @param margin 用户的保证金金额
|
* @param leverage 杠杆倍数
|
* @param faceValue 合约面值
|
* @param markPrice 标记价格
|
* @param minLotSz 最小下单精度
|
* @return 返回用户可以购买的合约数量
|
*/
|
public static BigDecimal buyCnt(BigDecimal margin, BigDecimal leverage, BigDecimal faceValue, BigDecimal markPrice, int minLotSz) {
|
if (margin.compareTo(BigDecimal.ZERO) <= 0 ||
|
leverage.compareTo(BigDecimal.ZERO) <= 0 ||
|
faceValue.compareTo(BigDecimal.ZERO) <= 0 ||
|
markPrice.compareTo(BigDecimal.ZERO) <= 0) {
|
return BigDecimal.ZERO;
|
}
|
|
BigDecimal divisor = markPrice.divide(leverage, 10, BigDecimal.ROUND_DOWN);
|
BigDecimal denominator = faceValue.multiply(divisor);
|
return margin.divide(denominator, minLotSz, BigDecimal.ROUND_DOWN);
|
}
|
}
|