Administrator
7 天以前 91d1a35eac17c9fbaea387191587cd1d860a7931
接口修改
5个文件已修改
105 ■■■■ 已修改文件
code_attribute/today_max_price_manager.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l1_client.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/today_max_price_manager.py
@@ -34,9 +34,10 @@
                val = json.loads(val)
                cls.__max_price_info_cache[code] = val
    def set_price_info(self, code, price, time):
    def set_price_info(self, code, price, time, sell1_info):
        """
        设置价格信息
        @param sell1_info: 卖1信息:(卖1价, 卖1量)
        @param code:
        @param price:
        @param time:
@@ -45,7 +46,7 @@
        old_price_info = self.__max_price_info_cache.get(code)
        if old_price_info and old_price_info[0] >= price:
            return
        price_info = (price, time)
        price_info = (price, time, sell1_info)
        tool.CodeDataCacheUtil.set_cache(self.__max_price_info_cache, code, price_info)
        RedisUtils.setex_async(
            self.__db, "max_price_info-{}".format(code), tool.get_expire(), json.dumps(price_info))
huaxin_client/l1_client.py
@@ -130,11 +130,12 @@
        if out_tool.get_limit_up_rate(pMarketDataField.SecurityID) > 1.1001:
            # 涨停板20%以上的打折
            rate = rate / 2
        # (代码, 现价, 涨幅, 量, 当前时间, 买1价, 买1量, 买2价, 买2量, 更新时间)
        # (代码, 现价, 涨幅, 量, 当前时间, 买1价, 买1量, 买2价, 买2量, 更新时间, 卖1价, 卖1量)
        level1_data_dict[pMarketDataField.SecurityID] = (
            pMarketDataField.SecurityID, pMarketDataField.LastPrice, rate, pMarketDataField.Volume, time.time(),
            pMarketDataField.BidPrice1, pMarketDataField.BidVolume1, pMarketDataField.BidPrice2,
            pMarketDataField.BidVolume2, pMarketDataField.UpdateTime)
            pMarketDataField.BidVolume2, pMarketDataField.UpdateTime, pMarketDataField.AskPrice1,
            pMarketDataField.AskVolume1)
__latest_subscript_codes = set()
servers/data_server.py
@@ -29,11 +29,14 @@
from trade.buy_radical.new_block_processor import BeforeBlocksComputer
from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy
from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager
from utils import global_util, tool, data_export_util, init_data_util
from trade.huaxin import huaxin_trade_record_manager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from utils import global_util, tool, data_export_util, init_data_util, huaxin_util
from code_attribute import gpcode_manager, code_nature_analyse
from log_module import log_analyse, log_export, async_log_util
from l2 import code_price_manager, l2_data_util, transaction_progress
from cancel_strategy.s_l_h_cancel_strategy import HourCancelBigNumComputer, LCancelRateManager
from cancel_strategy.s_l_h_cancel_strategy import HourCancelBigNumComputer, LCancelRateManager, \
    CancelRateHumanSettingManager
from output.limit_up_data_filter import IgnoreCodeManager
from third_data import kpl_util, kpl_data_manager, kpl_api, block_info
from third_data.code_plate_key_manager import RealTimeKplMarketData, KPLPlateForbiddenManager
@@ -1082,9 +1085,27 @@
                        except:
                            is_limit_up = 0
                            pass
                        # 获取L后人为设置的撤单比例
                        l_down_human_rate = None
                        if single_code:
                            # 获取挂单
                            try:
                                current_delegates = huaxin_trade_record_manager.DelegateRecordManager().list_current_delegates()
                                codes_set = set()
                                if current_delegates:
                                    for c in current_delegates:
                                        if int(c["direction"]) != huaxin_util.TORA_TSTP_D_Buy:
                                                continue
                                        codes_set.add(c["securityID"])
                                if code not in codes_set:
                                    # 没有挂单
                                    l_down_human_rate = CancelRateHumanSettingManager().get_l_down(code)
                            except:
                                pass
                        fresults.append(
                            (code, code_name, deal_big_order_info, deal_big_order_detail_info, big_order_enough_type,
                             current_rate_dict.get(code, 0), is_limit_up))
                             current_rate_dict.get(code, 0), is_limit_up, l_down_human_rate))
                response_data = json.dumps({"code": 0, "data": fresults})
            except Exception as e:
                response_data = json.dumps({"code": 1, "data": str(1)})
@@ -1105,10 +1126,18 @@
            response_data = json.dumps({"code": 0, "data": fdata})
        elif url.path == "/get_want_buy_detail_list":
            # 获取想买单详细信息
            codes = gpcode_manager.WantBuyCodesManager().list_code_cache()
            history_limit_up_datas = LimitUpDataConstant.history_limit_up_datas
            codes = set()
            if history_limit_up_datas:
                codes |= set([x[3] for x in history_limit_up_datas])
            want_codes = gpcode_manager.WantBuyCodesManager().list_code_cache()
            if want_codes:
                codes |= want_codes
            # 拉取涨停时间
            # 拉取最近成交信息
            fdatas = []
            yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
            for code in codes:
                # (代码,名称,涨停时间,涨幅,现手,自由市值,现价)
                data = [code, gpcode_manager.get_code_name(code)]
@@ -1134,7 +1163,29 @@
                    data.append(price)
                else:
                    data.append("--")
                # 是否是想买单
                data.append(1 if code in want_codes else 0)
                # 显示代码板块身位
                block_rank_info = None
                # 获取当前板块
                try:
                    if limit_up_time:
                        # 涨停过的数据才有身位
                        blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code)
                        if blocks:
                            blocks_info=[]
                            for b in blocks:
                                info = radical_buy_data_manager.RadicalBuyBlockManager.get_history_index(code,b, yesterday_codes)
                                blocks_info.append((b,info[0],info[2]))
                            max_info = max(blocks_info, key= lambda x:x[2])
                            block_rank_info = max_info
                except:
                    pass
                data.append(block_rank_info)
                fdatas.append(data)
            fdatas.sort(key=lambda x: x[2] if x[2] else time.time())
            response_data = json.dumps({"code": 0, "data": fdatas})
servers/huaxin_trade_server.py
@@ -406,7 +406,7 @@
            # 09:25之后才开始记录
            if datas and tool.get_now_time_str() > '09:25:00':
                for d in datas:
                    MaxPriceInfoManager().set_price_info(d[0], price=d[1], time=d[9])
                    MaxPriceInfoManager().set_price_info(d[0], price=d[1], time=d[9], sell1_info=(d[10], d[11]))
        except Exception as e:
            logger_debug.exception(e)
trade/buy_radical/radical_buy_data_manager.py
@@ -861,7 +861,7 @@
    @classmethod
    def get_history_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None, ignore_open_limit_up=True):
        datas = cls.__get_history_index(code, block, yesterday_limit_up_codes, exclude_codes, ignore_open_limit_up)
        return datas[0], datas[1]
        return datas[0], datas[1], datas[3]
    @classmethod
    def filter_before_codes(cls, code, block, history_index,
@@ -880,7 +880,7 @@
        @param yesterday_limit_up_codes:
        @param exclude_codes:
        @param ignore_open_limit_up: 是否忽略开1代码
        @return:
        @return:身位,前排代码信息,炸板代码持续涨停时间小于1分钟的代码,板块代码总数
        """
        if exclude_codes is None:
            exclude_codes = set()
@@ -903,6 +903,10 @@
            # 不是这个板块
            if block not in blocks:
                continue
            # 剔除高位板
            if _code in yesterday_limit_up_codes:
                continue
            # 剔除4板以上且板块数量大于1个
            if CodeHighLevel().get_high_level(_code) >= 4 and len(blocks) > 1:
                continue
@@ -912,9 +916,7 @@
            # 剔除开1的数据
            if ignore_open_limit_up and timestamp_start <= int(k[5]) < timestamp_end:
                continue
            # 剔除高位板
            if _code in yesterday_limit_up_codes:
                continue
            # 剔除炸板代码持续涨停时间小于1分钟的代码 且 只能用于不排除前2条数据
            if _code not in cls.__current_limit_up_codes and _code in cls.__total_limit_up_space_dict and \
                    cls.__total_limit_up_space_dict[_code] < 60 and not exclude_codes and len(
@@ -932,7 +934,7 @@
                break
            else:
                before_codes_info.append(block_codes_infos[i])
        return history_index, before_codes_info, limit_up_space_ge_60s_codes
        return history_index, before_codes_info, limit_up_space_ge_60s_codes, len(block_codes_infos)
    @classmethod
    def __is_radical_buy_with_open_limitup(cls, code, block, yesterday_limit_up_codes):
@@ -971,7 +973,7 @@
        open_limit_up_block_codes = list(open_limit_up_block_codes_dict.get(block))
        count = len(open_limit_up_block_codes)
        # ----获取历史身位----
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_  = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes)
        # ----获取实时身位----
        current_index, current_before_codes_info = cls.__get_current_index(code, block, yesterday_limit_up_codes,
@@ -999,7 +1001,7 @@
            # 只有一个开1
            # 获取包含高位板的身位
            # ----获取历史身位----
            history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
            history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_ = cls.__get_history_index(code, block,
                                                                                                            set())
            # ----获取实时身位----
            current_index, current_before_codes_info = cls.__get_current_index(code, block, set(),
@@ -1012,7 +1014,7 @@
                return False, f"开1数量:{count},历史-{history_index + 1} 实时-{current_index + 1}"
        # 获取主板的身位(已经排除了开1的代码)
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_  = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes,
                                                                                                        exclude_codes=exclude_codes)
        # 过滤不正的原因
@@ -1162,12 +1164,12 @@
            return False, f"距离上个代码涨停已过去{THRESHOLD_MINUTES}分钟({current_before_codes_info[-1]})"
        # 包含高位板的整体排序
        all_history_index, all_history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code,
        all_history_index, all_history_before_codes_info, limit_up_space_ge_60s_codes,_ = cls.__get_history_index(code,
                                                                                                                block,
                                                                                                                set(),
                                                                                                                ignore_open_limit_up=False)
        history_index_first, history_before_codes_info_first, limit_up_space_ge_60s_codes = cls.__get_history_index(
        history_index_first, history_before_codes_info_first, limit_up_space_ge_60s_codes,_ = cls.__get_history_index(
            code, block,
            yesterday_limit_up_codes,
            ignore_open_limit_up=False)
@@ -1200,7 +1202,7 @@
        open_limit_up_code_dict = kpl_data_constant.open_limit_up_code_dict_for_radical_buy
        if open_limit_up_code_dict:
            exclude_codes |= set(open_limit_up_code_dict.keys())
        origin_history_index, origin_history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(
        origin_history_index, origin_history_before_codes_info, limit_up_space_ge_60s_codes, _ = cls.__get_history_index(
            code, block,
            yesterday_limit_up_codes,
            exclude_codes)
@@ -1270,7 +1272,7 @@
        current_index, current_before_codes_info = cls.__get_current_index(code, block, set(),
                                                                           limit_up_time=cls.__get_limit_up_timestamp(
                                                                               code))
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_ = cls.__get_history_index(code, block,
                                                                                                        set())
        if current_index != history_index:
            return False, f"有其他炸板"
@@ -1318,7 +1320,7 @@
        block_codes = BlockSpecialCodesManager().get_block_codes(block)
        if not block_codes or code not in block_codes:
            return False, "无辨识度"
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_ = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes,
                                                                                                        ignore_open_limit_up=False)
        if history_before_codes_info:
@@ -1357,7 +1359,7 @@
        if len(codes) < 2:
            return False, "板块涨停个数小于2个"
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_  = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes,
                                                                                                        ignore_open_limit_up=False)
        if history_before_codes_info:
@@ -1599,7 +1601,7 @@
                        delete_blocks.add(b)
                        continue
                    # 新题材只买前2
                    history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(
                    history_index, history_before_codes_info, limit_up_space_ge_60s_codes,_  = cls.__get_history_index(
                        code, b,
                        yesterday_limit_up_codes)
                    if history_index > 1: