Administrator
9 天以前 a5b382dd3c9dc8c49b54591cd72de576b93b3f47
大单阈值改变后,累计阈值等比例改变取消
2个文件已修改
72 ■■■■ 已修改文件
l2/l2_sell_manager.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_sell_manager.py
@@ -115,6 +115,27 @@
                    return sell_data
        return None
    def get_latest_refer_sell_data_with_not_zero(self, code):
        """
        获取最近的非0的总卖数据
        @param code:
        @return:
        """
        total_sell_data_cache_list = self.__total_sell_data_cache_list_cache.get(code)
        if total_sell_data_cache_list:
            count = 0
            for i in range(len(total_sell_data_cache_list) - 1, -1, -1):
                count += 1
                if count > 20:
                    # 最多往前找20个tick
                    break
                sell_data = total_sell_data_cache_list[i]
                if sell_data[1] > 1:
                    # 获取非0总卖额
                    return sell_data
        return None
# 板上卖统计
class L2LimitUpSellManager:
trade/buy_radical/radical_buy_data_manager.py
@@ -21,6 +21,7 @@
from l2.huaxin import l2_huaxin_util
from l2.l2_data_manager import TradePointManager
from l2.l2_data_util import L2DataUtil
from l2.l2_sell_manager import L2MarketSellManager
from l2.l2_transaction_data_manager import BigOrderDealManager, HuaXinBuyOrderManager
from log_module import async_log_util
from log_module.log import logger_l2_radical_buy, logger_debug, logger_l2_radical_buy_data
@@ -1838,21 +1839,6 @@
    @return:(缺少的资金, 净成交金额, 要求的大单金额, 计算得到的大单阈值金额, 人为设置的大单)
    """
    THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code)
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = compute_total_deal_big_order_threshold_money(code,
                                                                                                     limit_up_price,
                                                                                                     THRESHOLD_MONEY)
    human_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code)
    if human_setting_money is not None:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = int(human_setting_money)
    else:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
    # if is_for_buy and is_temp_threshold_money:
    #     # 首次上板买入,大单阈值打3折
    #     TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY //= 3
    # 买大单, 上板前买大单, 卖大单, 上板前卖大单
    big_order_detail_info = get_total_detal_big_order_details(code)
    deal_big_order_money = big_order_detail_info[0] + big_order_detail_info[1] - big_order_detail_info[2] - \
@@ -1866,6 +1852,28 @@
            deal_big_order_money += dealing_order_info[2]
    except Exception as e:
        async_log_util.info(logger_l2_radical_buy, f"计算正在成交大单出错:{str(e)}")
    THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info(code)
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = compute_total_deal_big_order_threshold_money(code,
                                                                                                     limit_up_price,
                                                                                                     THRESHOLD_MONEY)
    # 再次计算算的值
    deal_rate = round(deal_big_order_money / TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE, 2)
    TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE = (1 + (-0.1 * deal_rate + 0.25)) * deal_big_order_money
    refer_sell_data = L2MarketSellManager().get_latest_refer_sell_data_with_not_zero(code)
    if refer_sell_data:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE += refer_sell_data[1]
    human_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code)
    if human_setting_money is not None:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = int(human_setting_money)
    else:
        TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY_WITH_COMPUTE
    # if is_for_buy and is_temp_threshold_money:
    #     # 首次上板买入,大单阈值打3折
    #     TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY //= 3
    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, human_setting_money
@@ -2235,12 +2243,13 @@
            # 新的阈大于老的阈值
            old_setting_money = TotalDealBigOrderThresholdMoneyManager().get_money_cache(code)
            if old_setting_money:
                new_setting_money = int(old_setting_money * money / THRESHOLD_MONEY)
                async_log_util.info(logger_l2_radical_buy_data,
                                    f"累计大单回调人为设置({code}): {old_setting_money}->{new_setting_money}")
                TotalDealBigOrderThresholdMoneyManager().set_money(code, new_setting_money,
                                                                   trade_manager.CodesTradeStateManager().get_trade_state_cache(
                                                                       code))
                pass
                # new_setting_money = int(old_setting_money * money / THRESHOLD_MONEY)
                # async_log_util.info(logger_l2_radical_buy_data,
                #                     f"累计大单回调人为设置({code}): {old_setting_money}->{new_setting_money}")
                # TotalDealBigOrderThresholdMoneyManager().set_money(code, new_setting_money,
                #                                                    trade_manager.CodesTradeStateManager().get_trade_state_cache(
                #                                                        code))
    # 只有涨停过的代码才需要拉大单
    if code_ not in LimitUpDataConstant.get_history_limit_up_codes():