chore(logs): 注释掉多个类中的日志输出语句
- 注释掉了 AccountWs 类中的多个日志输出语句
- 注释掉了 CaoZuoServiceImpl 类中的多个日志输出语句
- 注释掉了 InstrumentsWs 类中的日志输出语句
- 注释掉了 LoginWs 类中的日志输出语句
- 注释掉了 OrderInfoWs 类中的多个日志输出语句
- 注释掉了 PositionsWs 类中的多个日志输出语句
- 注释掉了 TradeOrderWs 类中的多个日志输出语句
- 移除了部分不再使用的日志打印逻辑及相关的字符串构建代码
| | |
| | | */ |
| | | @Override |
| | | public String caoZuo() { |
| | | log.info("开始执行操作CaoZuoServiceImpl......"); |
| | | // log.info("开始执行操作CaoZuoServiceImpl......"); |
| | | String accountReadyState = AccountWs.ACCOUNTWSMAP.get(CoinEnums.READY_STATE.name()); |
| | | if (!CoinEnums.READY_STATE_YES.getCode().equals(accountReadyState)) { |
| | | log.info("账户通道未就绪,取消发送"); |
| | | // log.info("账户通道未就绪,取消发送"); |
| | | return null; |
| | | } |
| | | BigDecimal positionsReadyState = PositionsWs.POSITIONSWSMAP.get(CoinEnums.READY_STATE.name()) == null |
| | | ? BigDecimal.ZERO : PositionsWs.POSITIONSWSMAP.get(CoinEnums.READY_STATE.name()); |
| | | if (WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()).compareTo(positionsReadyState) != 0) { |
| | | log.info("仓位通道未就绪,取消发送"); |
| | | // log.info("仓位通道未就绪,取消发送"); |
| | | return null; |
| | | } |
| | | // 系统设置的开关,等于冷静中,则代表不开仓 |
| | |
| | | } |
| | | BigDecimal pos = PositionsWs.POSITIONSWSMAP.get("pos"); |
| | | if (BigDecimal.ZERO.compareTo( pos) >= 0) { |
| | | log.error("持仓数量为零,进行初始化订单"); |
| | | // log.error("持仓数量为零,进行初始化订单"); |
| | | return OrderParamEnums.INIT.getValue(); |
| | | } |
| | | // 判断是否保证金超标 |
| | | if (PositionsWs.POSITIONSWSMAP.get("imr") == null){ |
| | | log.error("没有获取到持仓信息,等待初始化......"); |
| | | // log.error("没有获取到持仓信息,等待初始化......"); |
| | | return null; |
| | | } |
| | | BigDecimal ordFrozImr = PositionsWs.POSITIONSWSMAP.get("imr"); |
| | | BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get(CoinEnums.TOTAL_ORDER_USDT.name())); |
| | | if (ordFrozImr.compareTo(totalOrderUsdt) >= 0){ |
| | | log.error("已满仓......"); |
| | | // log.error("已满仓......"); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | |
| | |
| | | // 获取标记价格和平均持仓价格 |
| | | BigDecimal markPx = PositionsWs.POSITIONSWSMAP.get("markPx"); |
| | | BigDecimal avgPx = PositionsWs.POSITIONSWSMAP.get("avgPx"); |
| | | log.info("开仓价格: {}, 当前价格:{},匹配队列中......", avgPx, markPx); |
| | | // log.info("开仓价格: {}, 当前价格:{},匹配队列中......", avgPx, markPx); |
| | | |
| | | // 初始化网格队列 |
| | | PriorityBlockingQueue<AscBigDecimal> queueAsc = WangGeQueue.getQueueAsc(); |
| | |
| | | WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice", String.valueOf(markPx)); |
| | | // 判断是加仓还是减仓 |
| | | if (avgPx.compareTo(markPx) > 0) { |
| | | log.info("开始加仓..."); |
| | | // log.info("开始加仓..."); |
| | | if (queueKaiCang.isEmpty()) { |
| | | // 队列为空 |
| | | log.info("开始加仓,但是超出了网格设置..."); |
| | | // log.info("开始加仓,但是超出了网格设置..."); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | DescBigDecimal kaiCang = queueKaiCang.peek(); |
| | | if (kaiCang != null && markPx.compareTo(kaiCang.getValue()) <= 0 && avgPx.compareTo(kaiCang.getValue()) >= 0) { |
| | | log.info("开始加仓...开仓队列价格大于当前价格{}>{}", kaiCang.getValue(), markPx); |
| | | // log.info("开始加仓...开仓队列价格大于当前价格{}>{}", kaiCang.getValue(), markPx); |
| | | boolean buyCntTimeFlag = buyCntTimeEvent(avgPx, markPx); |
| | | if (buyCntTimeFlag){ |
| | | log.info("加仓参数准备成功......"); |
| | | // log.info("加仓参数准备成功......"); |
| | | return OrderParamEnums.BUY.getValue(); |
| | | }else{ |
| | | log.error("加仓参数准备失败......"); |
| | | // log.error("加仓参数准备失败......"); |
| | | return null; |
| | | } |
| | | } else { |
| | | log.info("未触发加仓......,等待"); |
| | | // log.info("未触发加仓......,等待"); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | } else if (avgPx.compareTo(markPx) < 0) { |
| | | log.info("开始减仓..."); |
| | | // log.info("开始减仓..."); |
| | | if (queuePingCang.isEmpty()) { |
| | | // 队列为空 |
| | | log.info("开始减仓,但是超出了网格设置..."); |
| | | // log.info("开始减仓,但是超出了网格设置..."); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | AscBigDecimal pingCang = queuePingCang.peek(); |
| | | if (pingCang != null && markPx.compareTo(pingCang.getValue()) >= 0 && avgPx.compareTo(pingCang.getValue()) < 0) { |
| | | log.info("开始减仓...平仓队列价格小于当前价格{}<={}", pingCang.getValue(), markPx); |
| | | // log.info("开始减仓...平仓队列价格小于当前价格{}<={}", pingCang.getValue(), markPx); |
| | | // 判断当前是否盈利 |
| | | BigDecimal uplValue = PositionsWs.POSITIONSWSMAP.get("upl"); |
| | | BigDecimal imr = PositionsWs.POSITIONSWSMAP.get("imr"); |
| | |
| | | if (realizedPnlValue.compareTo(BigDecimal.ZERO) <= 0) { |
| | | BigDecimal realizedPnlValueZheng = realizedPnlValue.multiply(new BigDecimal("-1")); |
| | | if (uplValue.compareTo(realizedPnlValue) > 0 && uplValue.compareTo(imrValue.add(realizedPnlValueZheng)) >= 0) { |
| | | log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue); |
| | | // log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue); |
| | | return OrderParamEnums.SELL.getValue(); |
| | | }else{ |
| | | log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | // log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | }else { |
| | | if (uplValue.compareTo(imrValue) >= 0) { |
| | | log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue); |
| | | // log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue); |
| | | return OrderParamEnums.SELL.getValue(); |
| | | }else{ |
| | | log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | // log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | } |
| | | } else { |
| | | log.info("未触发减仓......,等待"); |
| | | // log.info("未触发减仓......,等待"); |
| | | } |
| | | } else { |
| | | log.info("价格波动较小......,等待"); |
| | | // log.info("价格波动较小......,等待"); |
| | | } |
| | | return null; |
| | | } catch (NumberFormatException e) { |
| | |
| | | if (orderPrice == null) { |
| | | return; |
| | | } |
| | | log.info("需要移除的价格: {}", orderPrice); |
| | | // log.info("需要移除的价格: {}", orderPrice); |
| | | |
| | | BigDecimal priceDecimal; |
| | | try { |
| | |
| | | queueKaiCang.removeIf(item -> item.getValue().compareTo(priceDecimal) >= 0); |
| | | |
| | | // 打印开仓队列 |
| | | StringBuilder kaiCangStr = new StringBuilder(); |
| | | kaiCangStr.append("开仓队列: ["); |
| | | boolean first = true; |
| | | for (DescBigDecimal item : queueKaiCang) { |
| | | if (!first) { |
| | | kaiCangStr.append(", "); |
| | | } |
| | | kaiCangStr.append(item.getValue()); |
| | | first = false; |
| | | } |
| | | kaiCangStr.append("]"); |
| | | log.info(kaiCangStr.toString()); |
| | | // StringBuilder kaiCangStr = new StringBuilder(); |
| | | // kaiCangStr.append("开仓队列: ["); |
| | | // boolean first = true; |
| | | // for (DescBigDecimal item : queueKaiCang) { |
| | | // if (!first) { |
| | | // kaiCangStr.append(", "); |
| | | // } |
| | | // kaiCangStr.append(item.getValue()); |
| | | // first = false; |
| | | // } |
| | | // kaiCangStr.append("]"); |
| | | // log.info(kaiCangStr.toString()); |
| | | |
| | | // 删除比该价格小的数据 |
| | | queuePingCang.removeIf(item -> item.getValue().compareTo(priceDecimal) <= 0); |
| | | |
| | | // 打印平仓队列 |
| | | StringBuilder pingCangStr = new StringBuilder(); |
| | | pingCangStr.append("平仓队列: ["); |
| | | first = true; |
| | | for (AscBigDecimal item : queuePingCang) { |
| | | if (!first) { |
| | | pingCangStr.append(", "); |
| | | } |
| | | pingCangStr.append(item.getValue()); |
| | | first = false; |
| | | } |
| | | pingCangStr.append("]"); |
| | | log.info(pingCangStr.toString()); |
| | | // StringBuilder pingCangStr = new StringBuilder(); |
| | | // pingCangStr.append("平仓队列: ["); |
| | | // first = true; |
| | | // for (AscBigDecimal item : queuePingCang) { |
| | | // if (!first) { |
| | | // pingCangStr.append(", "); |
| | | // } |
| | | // pingCangStr.append(item.getValue()); |
| | | // first = false; |
| | | // } |
| | | // pingCangStr.append("]"); |
| | | // log.info(pingCangStr.toString()); |
| | | } |
| | | } |
| | |
| | | String connId = MallUtils.getOrderNum(ACCOUNTWS_CHANNEL); |
| | | JSONObject jsonObject = WsParamBuild.buildJsonObject(connId, option, argsArray); |
| | | webSocketClient.send(jsonObject.toJSONString()); |
| | | log.info("发送账户频道:{}", option); |
| | | // log.info("发送账户频道:{}", option); |
| | | } catch (Exception e) { |
| | | log.error("订阅账户频道构建失败", e); |
| | | } |
| | | } |
| | | |
| | | public static void initEvent(JSONObject response) { |
| | | log.info("订阅成功: {}", response.getJSONObject("arg")); |
| | | // log.info("订阅成功: {}", response.getJSONObject("arg")); |
| | | JSONObject arg = response.getJSONObject("arg"); |
| | | initParam(arg); |
| | | } |
| | |
| | | public static void handleEvent(JSONObject response) { |
| | | |
| | | |
| | | log.info("开始执行AccountWs......{}",ACCOUNTWS_CHANNEL); |
| | | // log.info("开始执行AccountWs......{}",ACCOUNTWS_CHANNEL); |
| | | try { |
| | | JSONArray dataArray = response.getJSONArray("data"); |
| | | if (dataArray == null || dataArray.isEmpty()) { |
| | |
| | | |
| | | for (int j = 0; j < detailsArray.size(); j++) { |
| | | JSONObject detail = detailsArray.getJSONObject(j); |
| | | // log.info("账户详情: {}", JSONUtil.formatJsonStr(String.valueOf(detail))); |
| | | //需要获取的参数 |
| | | |
| | | initParam(detail); |
| | | WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_YES.getCode()); |
| | | } |
| | | } catch (Exception innerEx) { |
| | | log.warn("处理账户频道数据失败", innerEx); |
| | |
| | | BigDecimal totalOrderUsdt = cashBalDecimal.multiply(total_order_usdt_factor).setScale(2, RoundingMode.DOWN); |
| | | WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.TOTAL_ORDER_USDT.name(), String.valueOf(totalOrderUsdt)); |
| | | |
| | | WsMapBuild.saveStringToMap(ACCOUNTWSMAP, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_YES.getCode()); |
| | | |
| | | log.info( |
| | | "账户详情-币种: {}, 可用余额: {}, 现金余额: {}, 余额: {}, 全仓未实现盈亏: {}, 下单总保证金: {}", |
| | | ccy, availBal, cashBal, eq, upl, totalOrderUsdt |
| | | ); |
| | | // log.info( |
| | | // "账户详情-币种: {}, 可用余额: {}, 现金余额: {}, 余额: {}, 全仓未实现盈亏: {}, 下单总保证金: {}", |
| | | // ccy, availBal, cashBal, eq, upl, totalOrderUsdt |
| | | // ); |
| | | } |
| | | } |
| | | |
| | |
| | | public static final String INSTRUMENTSWS_CHANNEL = "instruments"; |
| | | |
| | | public static void handleEvent() { |
| | | log.info("开始执行InstrumentsWs......"); |
| | | // log.info("开始执行InstrumentsWs......"); |
| | | |
| | | WsMapBuild.saveStringToMap(INSTRUMENTSWSMAP, CoinEnums.HE_YUE.name(), CoinEnums.HE_YUE.getCode()); |
| | | WsMapBuild.saveStringToMap(INSTRUMENTSWSMAP, CoinEnums.CTVAL.name(), CoinEnums.CTVAL.getCode()); |
| | |
| | | public class LoginWs { |
| | | public static void websocketLogin(WebSocketClient webSocketClient) { |
| | | |
| | | log.info("开始执行LoginWs......"); |
| | | // log.info("开始执行LoginWs......"); |
| | | try { |
| | | |
| | | JSONArray argsArray = new JSONArray(); |
| | |
| | | String connId = MallUtils.getOrderNum(ORDERINFOWS_CHANNEL); |
| | | JSONObject jsonObject = WsParamBuild.buildJsonObject(connId, option, argsArray); |
| | | webSocketClient.send(jsonObject.toJSONString()); |
| | | log.info("发送订单频道频道:{}", option); |
| | | // log.info("发送订单频道频道:{}", option); |
| | | } catch (Exception e) { |
| | | log.error("订阅订单频道构建失败", e); |
| | | } |
| | | } |
| | | |
| | | public static void initEvent(JSONObject response) { |
| | | log.info("订阅成功: {}", response.getJSONObject("arg")); |
| | | // log.info("订阅成功: {}", response.getJSONObject("arg")); |
| | | } |
| | | |
| | | |
| | |
| | | private static final String STATE_KEY = "state"; |
| | | public static void handleEvent(JSONObject response, RedisUtils redisUtils) { |
| | | |
| | | log.info("开始执行OrderInfoWs......"); |
| | | // log.info("开始执行OrderInfoWs......"); |
| | | try { |
| | | JSONArray dataArray = response.getJSONArray(DATA_KEY); |
| | | if (dataArray == null || dataArray.isEmpty()) { |
| | |
| | | |
| | | String instId = detail.getString(INSTID_KEY); |
| | | if (!CoinEnums.HE_YUE.getCode().equals(instId)){ |
| | | log.info( "订单详情-币种: {} 没有成交订单", CoinEnums.HE_YUE.getCode() ); |
| | | // log.info( "订单详情-币种: {} 没有成交订单", CoinEnums.HE_YUE.getCode() ); |
| | | continue; |
| | | } |
| | | String ordId = detail.getString(ORDID_KEY); |
| | |
| | | String avgPx = detail.getString(AVGPX_KEY); |
| | | String state = detail.getString(STATE_KEY); |
| | | |
| | | log.info( |
| | | "订单详情-币种: {}, 系统编号: {}, 自定义编号: {}, 订单方向: {}, 交易模式: {}," + |
| | | " 累计成交数量: {}, 成交均价: {}, 订单状态: {}", |
| | | instId, ordId, clOrdId, side, tdMode, |
| | | accFillSz, avgPx,state |
| | | ); |
| | | // log.info( |
| | | // "订单详情-币种: {}, 系统编号: {}, 自定义编号: {}, 订单方向: {}, 交易模式: {}," + |
| | | // " 累计成交数量: {}, 成交均价: {}, 订单状态: {}", |
| | | // instId, ordId, clOrdId, side, tdMode, |
| | | // accFillSz, avgPx,state |
| | | // ); |
| | | |
| | | String clOrdIdStr = TradeOrderWs.TRADEORDERWSMAP.get("clOrdId"); |
| | | String stateStr = TradeOrderWs.TRADEORDERWSMAP.get("state"); |
| | |
| | | WsMapBuild.saveBigDecimalToMap(PositionsWs.POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_NO.getCode())); |
| | | WsMapBuild.saveStringToMap(AccountWs.ACCOUNTWSMAP, CoinEnums.READY_STATE.name(), CoinEnums.READY_STATE_NO.getCode()); |
| | | |
| | | log.info("订单详情已完成: {}, 自定义编号: {}", CoinEnums.HE_YUE.getCode(), clOrdId); |
| | | // log.info("订单详情已完成: {}, 自定义编号: {}", CoinEnums.HE_YUE.getCode(), clOrdId); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | String connId = MallUtils.getOrderNum(POSITIONSWS_CHANNEL); |
| | | JSONObject jsonObject = WsParamBuild.buildJsonObject(connId, option, argsArray); |
| | | webSocketClient.send(jsonObject.toJSONString()); |
| | | log.info("发送持仓频道频道:{}", option); |
| | | // log.info("发送持仓频道频道:{}", option); |
| | | } catch (Exception e) { |
| | | log.error("订阅持仓频道频道构建失败", e); |
| | | } |
| | | } |
| | | |
| | | public static void initEvent(JSONObject response) { |
| | | log.info("订阅成功,数据初始化: {}", response.getJSONObject("arg")); |
| | | // log.info("订阅成功,数据初始化: {}", response.getJSONObject("arg")); |
| | | JSONObject arg = response.getJSONObject("arg"); |
| | | initParam(arg); |
| | | } |
| | |
| | | public static void handleEvent(JSONObject response) { |
| | | |
| | | |
| | | log.info("开始执行PositionsWs......"); |
| | | // log.info("开始执行PositionsWs......"); |
| | | try { |
| | | JSONArray dataArray = response.getJSONArray("data"); |
| | | if (dataArray == null || dataArray.isEmpty()) { |
| | | log.info("账户持仓频道数据为空,已当前价买入,并且初始化网格"); |
| | | // log.info("账户持仓频道数据为空,已当前价买入,并且初始化网格"); |
| | | JSONObject posData = new JSONObject(); |
| | | initParam(posData); |
| | | return; |
| | |
| | | JSONObject posData = dataArray.getJSONObject(i); |
| | | String instId = posData.getString("instId"); |
| | | if (CoinEnums.HE_YUE.getCode().equals(instId)) { |
| | | log.info("查询到账户{}持仓数据",CoinEnums.HE_YUE.getCode()); |
| | | // log.info("查询到账户{}持仓数据",CoinEnums.HE_YUE.getCode()); |
| | | String mgnMode = posData.getString("mgnMode"); |
| | | String posSide = posData.getString("posSide"); |
| | | String pos = posData.getString("pos"); |
| | |
| | | String bePx = posData.getString("bePx"); |
| | | String realizedPnl = posData.getString("realizedPnl"); |
| | | String settledPnl = posData.getString("settledPnl"); |
| | | log.info( |
| | | "账户持仓频道-产品类型: {}, 保证金模式: {}, 持仓方向: {}, 持仓数量: {}, 开仓平均价: {}, " |
| | | + "未实现收益: {}, 未实现收益率: {}, 杠杆倍数: {}, 预估强平价: {}, 初始保证金: {}, " |
| | | + "维持保证金率: {}, 维持保证金: {}, 以美金价值为单位的持仓数量: {}, 占用保证金的币种: {}, " |
| | | + "最新成交价: {}, 最新指数价格: {}, 盈亏平衡价: {}, 已实现收益: {}, 累计已结算收益: {}" |
| | | + "最新标记价格: {}", |
| | | instId, mgnMode, posSide, pos, avgPx, |
| | | upl, uplRatio, lever, liqPx, imr, |
| | | mgnRatio, mmr, notionalUsd, ccy, |
| | | last, idxPx, bePx, realizedPnl, settledPnl, |
| | | markPx |
| | | ); |
| | | // log.info( |
| | | // "账户持仓频道-产品类型: {}, 保证金模式: {}, 持仓方向: {}, 持仓数量: {}, 开仓平均价: {}, " |
| | | // + "未实现收益: {}, 未实现收益率: {}, 杠杆倍数: {}, 预估强平价: {}, 初始保证金: {}, " |
| | | // + "维持保证金率: {}, 维持保证金: {}, 以美金价值为单位的持仓数量: {}, 占用保证金的币种: {}, " |
| | | // + "最新成交价: {}, 最新指数价格: {}, 盈亏平衡价: {}, 已实现收益: {}, 累计已结算收益: {}" |
| | | // + "最新标记价格: {}", |
| | | // instId, mgnMode, posSide, pos, avgPx, |
| | | // upl, uplRatio, lever, liqPx, imr, |
| | | // mgnRatio, mmr, notionalUsd, ccy, |
| | | // last, idxPx, bePx, realizedPnl, settledPnl, |
| | | // markPx |
| | | // ); |
| | | |
| | | initParam(posData); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode())); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "markPx", WsMapBuild.parseBigDecimalSafe(posData.getString("markPx"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "bePx", WsMapBuild.parseBigDecimalSafe(posData.getString("bePx"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "realizedPnl", WsMapBuild.parseBigDecimalSafe(posData.getString("realizedPnl"))); |
| | | |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode())); |
| | | } |
| | | } |
| | |
| | | |
| | | public static void orderEvent(WebSocketClient webSocketClient, String side) { |
| | | |
| | | log.info("开始执行TradeOrderWs......"); |
| | | // log.info("开始执行TradeOrderWs......"); |
| | | String accountReadyState = AccountWs.ACCOUNTWSMAP.get(CoinEnums.READY_STATE.name()); |
| | | if (!CoinEnums.READY_STATE_YES.getCode().equals(accountReadyState)) { |
| | | log.info("账户通道未就绪,取消发送"); |
| | | // log.info("账户通道未就绪,取消发送"); |
| | | return; |
| | | } |
| | | BigDecimal positionsReadyState = PositionsWs.POSITIONSWSMAP.get(CoinEnums.READY_STATE.name()) == null |
| | | ? BigDecimal.ZERO : PositionsWs.POSITIONSWSMAP.get(CoinEnums.READY_STATE.name()); |
| | | if (WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode()).compareTo(positionsReadyState) != 0) { |
| | | log.info("仓位通道未就绪,取消发送"); |
| | | // log.info("仓位通道未就绪,取消发送"); |
| | | return; |
| | | } |
| | | // 校验必要参数 |
| | |
| | | } |
| | | String buyCnt = ""; |
| | | if (OrderParamEnums.HOLDING.getValue().equals(side)){ |
| | | log.info("当前状态为持仓中,取消发送"); |
| | | // log.info("当前状态为持仓中,取消发送"); |
| | | return; |
| | | }else if (OrderParamEnums.OUT.getValue().equals(side)){ |
| | | log.info("当前状态为止损"); |
| | | // log.info("当前状态为止损"); |
| | | side = OrderParamEnums.SELL.getValue(); |
| | | buyCnt = String.valueOf(PositionsWs.POSITIONSWSMAP.get("pos")); |
| | | }else if (OrderParamEnums.INIT.getValue().equals(side)){ |
| | | log.info("当前状态为初始化"); |
| | | // log.info("当前状态为初始化"); |
| | | side = OrderParamEnums.BUY.getValue(); |
| | | buyCnt = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.BUY_CNT.name()); |
| | | }else if (OrderParamEnums.BUY.getValue().equals(side)){ |
| | | log.info("当前状态为加仓"); |
| | | // log.info("当前状态为加仓"); |
| | | String buyCntTime = TRADEORDERWSMAP.get("buyCntTime"); |
| | | String buyCntStr = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.BUY_CNT.name()); |
| | | buyCnt = String.valueOf(new BigDecimal(buyCntTime).multiply(new BigDecimal(buyCntStr))); |
| | | }else if (OrderParamEnums.SELL.getValue().equals(side)){ |
| | | log.info("当前状态为减仓"); |
| | | // log.info("当前状态为减仓"); |
| | | buyCnt = String.valueOf(PositionsWs.POSITIONSWSMAP.get("pos")); |
| | | }else{ |
| | | log.warn("交易状态异常,取消发送"); |
| | |
| | | String connId = WsParamBuild.getOrderNum(ORDERWS_CHANNEL); |
| | | JSONObject jsonObject = WsParamBuild.buildJsonObject(connId, ORDERWS_CHANNEL, argsArray); |
| | | webSocketClient.send(jsonObject.toJSONString()); |
| | | log.info("发送下单频道:{},数量:{}", side, buyCnt); |
| | | // log.info("发送下单频道:{},数量:{}", side, buyCnt); |
| | | |
| | | WsMapBuild.saveStringToMap(TRADEORDERWSMAP, "buyCntTime",String.valueOf(BigDecimal.ONE)); |
| | | WsMapBuild.saveStringToMap(TRADEORDERWSMAP, "clOrdId", clOrdId); |