| | |
| | | |
| | | private static final String WS_URL_MONIPAN = "wss://wspap.okx.com:8443/ws/v5/public"; |
| | | private static final String WS_URL_SHIPAN = "wss://ws.okx.com:8443/ws/v5/public"; |
| | | private static final boolean isAccountType = false; |
| | | private static final boolean isAccountType = true; |
| | | // private static final boolean isAccountType = false; |
| | | |
| | | /** |
| | | * 建立与 OKX WebSocket 服务器的连接。 |
| | |
| | | */ |
| | | private void triggerQuantOperations(String markPx) { |
| | | try { |
| | | |
| | | // markPx = String.valueOf(new BigDecimal(markPx).subtract(new BigDecimal("20"))); |
| | | // 1. 判断当前价格属于哪个网格 |
| | | WangGeListEnum gridByPriceNew = WangGeListEnum.getGridByPrice(new BigDecimal(markPx)); |
| | | if (gridByPriceNew == null) { |
| | |
| | | for (OkxQuantWebSocketClient client : clientManager.getAllClients()) { |
| | | String accountName = client.getAccountName(); |
| | | if (accountName != null) { |
| | | log.info("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian()); |
| | | log.error("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian()); |
| | | //处理历史网格信息 |
| | | String fangXiang = gridByPriceNew.getFang_xiang(); |
| | | String posSideOld = null; |
| | |
| | | if (gridByPriceOld != null){ |
| | | String zhiSunDian = gridByPriceOld.getZhi_sun_dian(); |
| | | if (CoinEnums.POSSIDE_SHORT.getCode().equals(posSideOld)) { |
| | | if (new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) > 0){ |
| | | boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) > 0; |
| | | log.error("{}历史网格方向{},当前价格大于止损点{}",gridByPriceOld.name(),posSideOld,flag); |
| | | if (flag){ |
| | | TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld); |
| | | TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam); |
| | | |
| | | } |
| | | } |
| | | if (CoinEnums.POSSIDE_LONG.getCode().equals(posSideOld)) { |
| | | if (new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) < 0){ |
| | | boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) < 0; |
| | | log.error("{}历史网格方向{},当前价格小于止损点{}",gridByPriceOld.name(),posSideOld,flag); |
| | | if (flag){ |
| | | TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld); |
| | | TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam); |
| | | } |
| | |
| | | private void sendPing() { |
| | | try { |
| | | if (webSocketClient != null && webSocketClient.isOpen()) { |
| | | JSONObject ping = new JSONObject(); |
| | | ping.put("op", "ping"); |
| | | webSocketClient.send(ping.toJSONString()); |
| | | webSocketClient.send("ping"); |
| | | log.debug("发送ping请求"); |
| | | } |
| | | } catch (Exception e) { |