Administrator
2025-06-03 ea44e1fddfb7a663802ca6dcd33f2350c805ec61
获取昨日收盘价接口更换为huaxin/调整大单接口/优化昨日收盘价获取方式
6个文件已修改
53 ■■■■ 已修改文件
code_attribute/gpcode_manager.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/history_k_data_manager.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/init_data_util.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/gpcode_manager.py
@@ -8,7 +8,7 @@
from db import redis_manager_delegate as redis_manager
from db.mysql_data_delegate import Mysqldb
from db.redis_manager_delegate import RedisUtils
from log_module import log_export
from log_module import log_export, async_log_util
from log_module.log import logger_pre_close_price, logger_debug
from trade import trade_record_log_util
from utils import tool
@@ -794,6 +794,9 @@
    # 设置收盘价
    @classmethod
    def set_price_pre(cls, code, price, force=False):
        if float(price) > 1000:
            async_log_util.info(logger_debug, f"获取昨日收盘价异常:{code}-{price}")
            return
        if code in cls.__price_pre_cache and not force:
            return
        price = round(float(price), 2)
servers/data_server.py
@@ -993,6 +993,8 @@
                                output_util.money_desc(deal_big_money_info[2]),
                                # 原累计大单阈值(非人为设置)
                                output_util.money_desc(deal_big_money_info[3]),
                                # 人为设置的大单
                                output_util.money_desc(deal_big_money_info[4]) if deal_big_money_info[4] else '',
                            ]
                            if len(codes) == 1:
                                # 加载大单详情
servers/huaxin_trade_server.py
@@ -41,6 +41,7 @@
from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util
from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData, \
    KPLPlateForbiddenManager
from third_data.history_k_data_manager import HistoryKDataManager
from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils
from trade import l2_trade_util, \
    trade_data_manager, trade_constant, buy_open_limit_up_strategy
@@ -1149,6 +1150,8 @@
    # 初始化数据
    BuyMoneyAndCountSetting()
    gpcode_manager.WantBuyCodesManager()
    # 加载历史K线数据
    HistoryKDataManager().load_data()
def run(queue_strategy_r_trade_w, queue_strategy_w_trade_r, queue_strategy_w_trade_r_for_read, trade_ipc_addr):
third_data/history_k_data_manager.py
@@ -11,6 +11,7 @@
from huaxin_client import l1_subscript_codes_manager
from log_module.log import logger_debug
from third_data import history_k_data_util
from third_data.history_k_data_util import HistoryKDatasUtils
from utils import tool, init_data_util
@@ -47,10 +48,13 @@
def re_set_price_pres(codes, force=False):
    day = tool.get_now_date_str()
    # 通过历史数据缓存获取
    # 获取上一个交易日
    day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str())
    not_codes = []
    for code in codes:
        if not tool.is_can_buy_code(code):
            continue
        pre_close = HistoryKDataManager().get_pre_close(code, day)
        if pre_close is not None:
            gpcode_manager.CodePrePriceManager.set_price_pre(code, pre_close, force)
@@ -158,6 +162,34 @@
                return datas
        return None
    def load_data(self):
        """
        加载数据
        @param day:
        @return:
        """
        day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str())
        cache_dir = self.__get_cache_dir()
        if not os.path.exists(cache_dir):
            return
        fs = os.listdir(cache_dir)
        for f in fs:
            if f.find(day) < 0:
                continue
            with open(os.path.join(cache_dir, f), mode='r', encoding='utf-8') as fs:
                line = fs.readline()
                if line:
                    datas = eval(line)
                    # 将日期格式转为datetime
                    for d in datas:
                        for k in d:
                            if type(d[k]) == str and d[k].find("-") > 0 and d[k].find(":") > 0 and d[k].find(" ") > 0:
                                d[k] = datetime.datetime.strptime(d[k], "%Y-%m-%d %H:%M:%S")
                    if datas:
                        if day not in self.__history_k_day_datas:
                            self.__history_k_day_datas[day] = {}
                        self.__history_k_day_datas[day][datas[0]['sec_id']] = datas
    def get_pre_close(self, code, day):
        """
        获取之前的收盘价
trade/buy_radical/radical_buy_data_manager.py
@@ -1792,7 +1792,7 @@
    """
    总成交大单啊是否足够
    @param code:
    @return:(缺少的资金, 总成交金额, 要求的大单金额, 计算得到的大单阈值金额)
    @return:(缺少的资金, 总成交金额, 要求的大单金额, 计算得到的大单阈值金额, 人为设置的大单)
    """
    THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code)
@@ -1824,7 +1824,7 @@
    except Exception as e:
        async_log_util.info(logger_l2_radical_buy, f"计算正在成交大单出错:{str(e)}")
    total_lack_money = max(0, int(TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY - deal_big_order_money))
    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
    return total_lack_money, deal_big_order_money, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY, TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE, human_setting_money
def is_big_order_deal_enough(code, volume_rate, refer_total_sell_money, for_buy=False, is_almost_open_limit_up=False):
utils/init_data_util.py
@@ -14,11 +14,12 @@
def re_set_price_pres(codes, force=False):
    # 通过历史数据缓存获取
    result = HistoryKDatasUtils.get_gp_latest_info(codes)
    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['pre_close'])))
            pre_close = tool.to_price(decimal.Decimal(str(item['close'])))
        gpcode_manager.CodePrePriceManager.set_price_pre(symbol, pre_close, force)