From adbdffdb3b80eed8c7110c0583f8ae2f216b7990 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Mon, 13 Oct 2025 18:22:59 +0800
Subject: [PATCH] K线优化

---
 trading-order-huobi/src/main/java/com.yami.trading.huobi/data/DataCache.java |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/DataCache.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/DataCache.java
index 9967bec..9562b96 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/DataCache.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/DataCache.java
@@ -8,6 +8,7 @@
 import com.yami.trading.huobi.data.internal.TrendTimeObject;
 import org.apache.commons.lang3.StringUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -29,7 +30,10 @@
      */
     private volatile static Map<String, KlineTimeObject> kline = new ConcurrentHashMap<String, KlineTimeObject>();
 
-
+    /**
+     * 上一条K线数据
+     */
+    private volatile static Map<String, Kline> lastKline = new ConcurrentHashMap<String, Kline>();
     /**
      * 24小时的历史记录
      */
@@ -71,6 +75,7 @@
      * 最新的实时价格信息缓存 <币种code, RealTime>
      */
     public static Map<String, Realtime> latestRealTime = new ConcurrentHashMap<>();
+    public static Map<String, BigDecimal> latestOpen = new ConcurrentHashMap<>();
     //股票时区暂存
     public static Map<String, StockMarket> realMarketMap = new ConcurrentHashMap<>();
     public static void depthToTrade(Depth depth) {
@@ -112,6 +117,10 @@
             key = key + "_" + line;
         }
         return kline.get(key);
+    }
+
+    public static Map<String, Kline> getLastKline() {
+        return lastKline;
     }
 
     public static TrendTimeObject getTrend(String symbol) {
@@ -198,4 +207,22 @@
     public static void putLatestRealTime(String symbol, Realtime model) {
         latestRealTime.put(symbol, model);
     }
+
+    public static void putLatestOpen(String symbol, BigDecimal open) {
+        latestOpen.put(symbol, open);
+    }
+
+    public static BigDecimal getLatestOpen(String symbol) {
+        BigDecimal open = latestOpen.get(symbol);
+        if (open == null) {
+            if (StringUtils.isAllLowerCase(symbol)) {
+                symbol = symbol.toUpperCase();
+            } else if (StringUtils.isAllUpperCase(symbol)) {
+                symbol = symbol.toLowerCase();
+            }
+            return latestOpen.get(symbol);
+        } else {
+            return open;
+        }
+    }
 }

--
Gitblit v1.9.3