From 2f2516749615da866e96d8d24e499b7ecbb63a3e Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 23 六月 2025 12:28:52 +0800
Subject: [PATCH] 默认交易模式变更/真实下单位置计算位置修改

---
 utils/init_data_util.py |   84 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 76 insertions(+), 8 deletions(-)

diff --git a/utils/init_data_util.py b/utils/init_data_util.py
index 6bc0635..70a3f5b 100644
--- a/utils/init_data_util.py
+++ b/utils/init_data_util.py
@@ -2,6 +2,7 @@
 import decimal
 
 from code_attribute import gpcode_manager
+from log_module.log import logger_debug
 from third_data.history_k_data_util import HistoryKDatasUtils
 from utils import tool
 
@@ -12,24 +13,28 @@
 
 
 def re_set_price_pres(codes, force=False):
-    result = HistoryKDatasUtils.get_gp_latest_info(codes)
-    for item in result:
-        symbol = item['symbol']
-        symbol = symbol.split(".")[1]
-        pre_close = tool.to_price(decimal.Decimal(str(item['pre_close'])))
-        gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force)
+    # 閫氳繃鍘嗗彶鏁版嵁缂撳瓨鑾峰彇
+    for code in codes:
+        result = HistoryKDatasUtils.get_history_tick_n(code, 1)
+        for item in result:
+            symbol = item['symbol']
+            symbol = symbol.split(".")[1]
+            pre_close = tool.to_price(decimal.Decimal(str(item['close'])))
+            gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force)
 
 
 # 鑾峰彇杩�90澶╃殑鏈�澶ч噺涓庢渶杩戠殑閲�
 # 鑾峰彇鏈�杩戜竴娆℃定鍋�/娑ㄥ仠涓嬩竴涓氦鏄撴棩鐨勬渶澶у��
-def get_volumns_by_code(code, count=60) -> object:
+def get_volumns_by_code(code, count=60):
     datas = HistoryKDatasUtils.get_history_tick_n(code, count, "open,high,low,close,volume,pre_close,bob,amount")
+    if not datas:
+        return None
     # 璁$畻
     datas.sort(key=lambda x: x["bob"], reverse=True)
     return datas
 
 
-def parse_max_volume(code,  datas, is_new_or_near_top=False):
+def parse_max_volume(code, datas, is_new_or_near_top=False):
     result = __parse_max_volume(code, datas, is_new_or_near_top)
     refer_index = result[3]
     # 璁$畻鏈�浣庝环
@@ -58,6 +63,69 @@
         "%Y-%m-%d"), refer_index
 
 
+def parse_max_volume_new(code, datas):
+    """
+    璁$畻杩滈珮閲�
+    @param code:
+    @param datas:
+    @return: [楂橀噺,楂橀噺,楂橀噺鏃ユ湡,楂橀噺绱㈠紩]
+    """
+
+    def __is_limited_up(item):
+        limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(code, item["pre_close"]))
+        if abs(limit_up_price - item["high"]) < 0.001:
+            return True
+        return False
+
+    # 鍙栨渶杩�60涓氦鏄撴棩
+    datas = datas[:60]
+
+    # 鍒ゆ柇鏄惁娑ㄥ仠杩�
+    target_index = None
+    for i in range(len(datas)):
+        data = datas[i]
+        if __is_limited_up(data):
+            next_data = None
+            if i > 0:
+                next_data = datas[i - 1]
+            # max锛堟定鍋滆繖涓�澶�, 鍚庝竴澶╋級鐨勯噺
+            if next_data and next_data['volume'] > data['volume']:
+                target_index = i - 1
+            else:
+                target_index = i
+            break
+    if target_index is None:
+        # 60澶╂湭娑ㄥ仠,鑾峰彇60澶╁唴鐨勬渶楂橀噺
+        for i in range(len(datas)):
+            data = datas[i]
+            if target_index is None:
+                target_index = i
+            if data['volume'] > datas[target_index]['volume']:
+                target_index = i
+    return datas[target_index]['volume'], datas[target_index]['volume'], datas[target_index]['bob'].strftime(
+        "%Y-%m-%d"), target_index
+
+
+def parse_max_volume_in_days(datas, max_day):
+    """
+    瑙f瀽鏈�杩戝嚑澶╂渶澶х殑閲�
+    @param datas:
+    @param max_day:
+    @return:
+    """
+    # 瑙f瀽鏈�杩戝嚑澶╃殑鏈�澶ч噺
+    datas = datas[:max_day]
+    max_volume_info = None
+    for d in datas:
+        if max_volume_info is None:
+            max_volume_info = (d["volume"], d)
+        if d["volume"] > max_volume_info[0]:
+            max_volume_info = (d["volume"], d)
+    if max_volume_info:
+        return max_volume_info[0]
+    return None
+
+
 # 杩斿洖锛�(60澶╂渶澶ч噺,鏄ㄦ棩閲�,閲忓弬鑰冩棩鏈�,鍙傝�冮噺鎹粖浜ゆ槗鏃ユ暟)
 def __parse_max_volume(code, datas, is_new_or_near_top=False):
     max_volume = 0

--
Gitblit v1.8.0