| | |
| | | * <pre> |
| | | * WebSocket 推送 update event |
| | | * → handleMessage() → 解析 OHLCV → log 打印 → gridTradeService.onKline(closePx) |
| | | * → 首次 K 线触发双开 |
| | | * → 后续 K 线仅缓存 lastKlinePrice 供补仓参考 |
| | | * → WAITING_KLINE: 首次 K 线触发基底双开 |
| | | * → ACTIVE: 驱动 processShortGrid + processLongGrid 网格触发 |
| | | * </pre> |
| | | * |
| | | * <h3>订阅格式</h3> |
| | |
| | | |
| | | @Override |
| | | public boolean handleMessage(JSONObject response) { |
| | | if (!CHANNEL_NAME.equals(response.getString("channel"))) return false; |
| | | if (!CHANNEL_NAME.equals(response.getString("channel"))) { |
| | | return false; |
| | | } |
| | | try { |
| | | JSONArray resultArray = response.getJSONArray("result"); |
| | | if (resultArray == null || resultArray.isEmpty()) { log.warn("[{}] 数据为空", CHANNEL_NAME); return true; } |
| | |
| | | data.getBooleanValue("w")); |
| | | log.info("=================================="); |
| | | |
| | | if (gridTradeService != null) gridTradeService.onKline(closePx); |
| | | if (gridTradeService != null) { |
| | | gridTradeService.onKline(closePx); |
| | | } |
| | | } catch (Exception e) { log.error("[{}] 处理数据失败", CHANNEL_NAME, e); } |
| | | return true; |
| | | } |