Administrator
2024-12-12 3d3a5d56aceee0ca8fab1866f1e03a5a25e69c32
买入金额枚举修改/订阅前大单接口输出
6个文件已修改
73 ■■■■ 已修改文件
api/outside_api_command_callback.py 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/code_plate_key_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_command_callback.py
@@ -51,7 +51,7 @@
from trade.huaxin import huaxin_trade_api, huaxin_trade_data_update, \
    huaxin_trade_record_manager, huaxin_trade_order_processor, huaxin_sell_util
from trade.huaxin.huaxin_trade_record_manager import PositionManager, DealRecordManager, DelegateRecordManager
from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager
from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager
from trade.sell import sell_manager
from trade.sell.sell_rule_manager import TradeRuleManager, SellRule
from trade.trade_data_manager import RadicalBuyDealCodesManager
@@ -1223,6 +1223,13 @@
                bigger_money = l2_data_util_old.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code),
                                                                  tool.is_ge_code(code))
                fdatas = []
                # 加载订阅之前的大单
                pre_deals = BeforeSubDealBigOrderManager().get_deal_big_order_money_list(code)
                if pre_deals:
                    for d in pre_deals:
                        if d[0] < bigger_money:
                            continue
                        fdatas.append(d[0])
                for d in data_list:
                    if d < bigger_money:
                        continue
cancel_strategy/s_l_h_cancel_strategy.py
@@ -1040,7 +1040,7 @@
            if index > real_place_order_index:
                # L后后段已经囊括
                return False
        # 下单位置之后数10笔卖单
        # 下单位置之后数10笔买单
        watch_indexes = set()
        total_datas = local_today_datas.get(code)
        MIN_NUM = int(5000 / gpcode_manager.get_limit_up_price_as_num(code))
constant.py
@@ -186,7 +186,7 @@
########华鑫配置########
if not is_windows() or True:
    # 下单1手
    BUY_MONEY_PER_CODE = 500 if constant.IS_A else 20000
    BUY_MONEY_PER_CODE = 500 if constant.IS_A else 30000
    L2_SOURCE_TYPE = L2_SOURCE_TYPE_HUAXIN
    JUEJIN_LOCAL_API = False
    TRADE_WAY = TRADE_WAY_HUAXIN
@@ -208,7 +208,7 @@
L2_DATA_IS_LOADED = False
# 可买入的金额
AVAILABLE_BUY_MONEYS = [5000, 20000, 30000, 40000, 50000]
AVAILABLE_BUY_MONEYS = [5000, 30000, 35000, 40000, 45000, 50000]
# 板上放量是否可扫入
CAN_RADICAL_BUY_AT_LIMIT_UP = False
@@ -223,4 +223,3 @@
RADICAL_BUY_TOP_IN_COUNT_BY_MARKET_STRONG = [(0, 60, 20), (60, 70, 25), (70, 80, 30), (80, 90, 35), (90, 101, 40)]
# 辨识度的票板块最低流入前几
RADICAL_BUY_TOP_IN_INDEX_WITH_SPECIAL = 20
servers/huaxin_trade_server.py
@@ -52,11 +52,12 @@
from trade.huaxin.huaxin_trade_record_manager import DelegateRecordManager
from trade.order_statistic import DealAndDelegateWithBuyModeDataManager
from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager, RadicalBuyBlockManager, \
    EveryLimitupBigDealOrderManager, RadicalCodeMarketInfoManager, RadicalBigOrderThresholdManager
    EveryLimitupBigDealOrderManager, RadicalCodeMarketInfoManager, BeforeSubDealBigOrderManager
from trade.sell.sell_rule_manager import TradeRuleManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from trade.trade_manager import CodesTradeStateManager
from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util
from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util, \
    output_util
trade_data_request_queue = queue.Queue(maxsize=1000)
@@ -221,8 +222,18 @@
                            fresults = []
                            if codes:
                                for code in codes:
                                    try:
                                        # 获取成交大单:(参考大单金额,已成交大单金额,大单要求金额)
                                        th = BeforeSubDealBigOrderManager().get_big_order_threshold(code)
                                        deal_big_money_info = radical_buy_data_manager.get_total_deal_big_order_info(
                                            code, gpcode_manager.get_limit_up_price_as_num(code))
                                        deal_big_order_info = (
                                            output_util.money_desc(th), output_util.money_desc(deal_big_money_info[1]),
                                            output_util.money_desc(deal_big_money_info[2]))
                                    except:
                                        deal_big_order_info = None
                                    code_name = gpcode_manager.get_code_name(code)
                                    fresults.append((code, code_name))
                                    fresults.append((code, code_name, deal_big_order_info))
                            fdata = middle_api_protocol.load_l2_subscript_codes(fresults)
                            middle_api_protocol.request(fdata)
@@ -401,10 +412,10 @@
                                                             kpl_data_manager.KPLLimitUpDataRecordManager.total_datas,
                                                             latest_current_limit_up_records,
                                                             block_info.get_before_blocks_dict(),
                                                             kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(),codes_delegate, codes_success)
                                                             kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(),
                                                             codes_delegate, codes_success)
            finally:
                cls.__updating_jx_blocks_codes.discard(code_)
        time_str = f"{data['dataTimeStamp']}"
        if time_str.startswith("9"):
@@ -479,7 +490,7 @@
                                                          data["totalAskVolume"], sell_1_info, data.get("sell"))
        # 炸板
        if sell_1_info and sell_1_info[1] > 0:
            if RadicalBigOrderThresholdManager().is_need_update(code):
            if BeforeSubDealBigOrderManager().is_need_update(code):
                #  炸板更新数据
                cls.__sell_thread_pool.submit(
                    lambda: radical_buy_data_manager.pull_pre_deal_big_orders(code))
@@ -487,7 +498,6 @@
        if data["sell"] and len(data["sell"]) > 1 and data["sell"][1][1] > 0:
            # 出现卖二
            radical_buy_strategy.clear_data(code, force=True)
        # 设置扫入数据
        RadicalCodeMarketInfoManager().set_market_info(code, time_str, round(float(limit_up_price), 2), data["buy"][0],
third_data/code_plate_key_manager.py
@@ -377,7 +377,7 @@
        @return:
        """
        # 流入阈值
        THRESHOLD_MONEY = 100 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000
        THRESHOLD_MONEY = 50 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000
        THRESHOLD_MONEY = min(THRESHOLD_MONEY, 10000)
        THRESHOLD_MONEY = max(THRESHOLD_MONEY, 1000)
        THRESHOLD_MONEY = THRESHOLD_MONEY * 10000
trade/buy_radical/radical_buy_data_manager.py
@@ -29,10 +29,11 @@
from utils import tool, global_util
# RadicalBigOrderThresholdManager
@tool.singleton
class RadicalBigOrderThresholdManager:
class BeforeSubDealBigOrderManager:
    """
    大单阈值管理
    订阅之前的大单管理
    """
    __db = 3
    __big_order_threshold = {}
@@ -61,6 +62,8 @@
        @param threshold_money:
        @return:
        """
        if code in self.__big_order_threshold:
            return
        async_log_util.info(logger_l2_radical_buy_data, f"大单阈值数据:{code}-{threshold_money}")
        if threshold_money < 299e4:
            # 小于299w的不保存
@@ -81,6 +84,7 @@
        total_deal_money = 0
        total_deal_money_info_list = []
        limit_up_price_money_list = []
        pre_limit_up_price_money_list = []
        deal_order_ids = BigOrderDealManager().get_total_buy_order_ids(code)
        for info in money_list:
            if info[1] != limit_up_price:
@@ -88,12 +92,13 @@
            limit_up_price_money_list.append(info[0])
            if info[2] in deal_order_ids:
                continue
            pre_limit_up_price_money_list.append((info[0], info[2]))
            total_deal_money += info[0]
            total_deal_money_info_list.append(info)
        if limit_up_price_money_list:
            average_money = sum(limit_up_price_money_list) // len(limit_up_price_money_list)
            self.set_big_order_threshold(code, average_money)
        self.__already_total_deal_big_order_money[code] = total_deal_money
        self.__already_total_deal_big_order_money[code] = (total_deal_money, pre_limit_up_price_money_list)
        async_log_util.info(logger_l2_radical_buy_data, f"之前的大单:{code}-{total_deal_money}-{total_deal_money_info_list}")
    def get_big_order_threshold(self, code):
@@ -113,8 +118,18 @@
        @return:
        """
        if code in self.__already_total_deal_big_order_money:
            return self.__already_total_deal_big_order_money[code]
            return self.__already_total_deal_big_order_money[code][0]
        return 0
    def get_deal_big_order_money_list(self, code):
        """
        获取大单成交列表
        @param code:
        @return: [(金额, 订单号)]
        """
        if code in self.__already_total_deal_big_order_money:
            return self.__already_total_deal_big_order_money[code][1]
        return []
    def is_need_update(self, code):
        """
@@ -1143,7 +1158,7 @@
    @param code:
    @return:(缺少的资金,总成交金额, 要求的大单金额)
    """
    THRESHOLD_MONEY = RadicalBigOrderThresholdManager().get_big_order_threshold(code)
    THRESHOLD_MONEY = BeforeSubDealBigOrderManager().get_big_order_threshold(code)
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT = round(
        code_volumn_manager.CodeVolumeManager().get_max_volume_in_5days(code) * limit_up_price / 1e8, 2)
    if tool.is_ge_code(code):
@@ -1152,7 +1167,7 @@
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY
    deal_big_order_money = BigOrderDealManager().get_total_buy_money(code)
    # 添加订阅之前缺失的大单
    deal_big_order_money += RadicalBigOrderThresholdManager().get_deal_big_order_money(code)
    deal_big_order_money += BeforeSubDealBigOrderManager().get_deal_big_order_money(code)
    try:
        # 获取正在成交的订单
        dealing_order_info = HuaXinBuyOrderManager().get_dealing_order_info(code)
@@ -1192,7 +1207,7 @@
    if before_time:
        current_threshold_count = int(round(0.4 * money_y * 1.5))
    THRESHOLD_MONEY = RadicalBigOrderThresholdManager().get_big_order_threshold(code)
    THRESHOLD_MONEY = BeforeSubDealBigOrderManager().get_big_order_threshold(code)
    current_threshold_money = current_threshold_count * THRESHOLD_MONEY
@@ -1391,7 +1406,7 @@
    if response_data["code"] == 0:
        datas = response_data["data"]
        if datas:
            RadicalBigOrderThresholdManager().set_big_deal_order_list(code_, datas,
            BeforeSubDealBigOrderManager().set_big_deal_order_list(code_, datas,
                                                                      gpcode_manager.get_limit_up_price_as_num(code_))