| | |
| | | } |
| | | |
| | | 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")); |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | simpleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); |
| | | DecimalFormat df = new DecimalFormat("#.##"); |
| | | Map<String, Object> map = new HashMap<String, Object>(); |
| | | map.put("order_no", order.getOrder_no()); |
| | |
| | | } else { |
| | | 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; |
| | | |
| | | // 得到强平价格 |
| | | double leve = Double.parseDouble(map.get("lever_rate").toString()); |
| | | //得到强平价格 |
| | | if(null != map.get("direction")){ |
| | | double liquidationPrice; |
| | | if(map.get("direction").equals("sell")){ |
| | | liquidationPrice = currentPrice + (100 / quantity); |
| | | liquidationPrice = currentPrice * (1 + (1 / leve)); |
| | | }else{ |
| | | liquidationPrice = currentPrice - (100 / quantity); |
| | | liquidationPrice = currentPrice * (1 - 1 / leve); |
| | | } |
| | | 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()); |
| | | |