Administrator
2024-10-25 394331913f4c19d2effd57b9b263f2a9fc0c54a2
trade/radical_buy_data_manager.py
@@ -11,7 +11,7 @@
from third_data import kpl_data_manager
from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from utils import tool
from utils import tool, global_util
class RedicalBuyDataManager():
@@ -21,7 +21,7 @@
        是否可以买
        @param code: 代码
        @param total_sell_volume: 总卖量
        @return:
        @return: 是否可以买, 原因
        """
        k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
        if k_format:
@@ -36,17 +36,20 @@
                volume_rate = code_volumn_manager.get_volume_rate(code, total_sell_volume=total_sell_volume)
                if volume_rate < 0.6:
                    return False, f"昨日炸板,量比({volume_rate})<0.6"
        # MAX_CODE_PRICE = 50
        # MIN_CODE_PRICE = 2
        # 获取涨停价
        price = gpcode_manager.get_limit_up_price_as_num(code)
        if not price:
            # 获取现价
            price = L1DataManager.get_l1_current_price(code)
        if price:
            if price < constant.MIN_CODE_PRICE or price > constant.MAX_CODE_PRICE:
            if price < constant.MIN_CODE_RADICAL_BUY_PRICE or price > constant.MAX_CODE_RADICAL_BUY_PRICE:
                return False, "价格不满足需求"
        # 判断自由流通股本
        zyltgb = global_util.zyltgb_map.get(code)
        if zyltgb:
            zyltgb_as_yi = round(zyltgb / 100000000, 2)
            if zyltgb_as_yi > 80:
                return False, "自由流通市值过大"
        if gpcode_manager.BlackListCodeManager().is_in_cache(code):
            if deal_codes is not None and code in deal_codes:
                pass
@@ -75,6 +78,32 @@
            gpcode_manager.MustBuyCodesManager().add_code(code)
class EveryLimitupBigDealOrderManager:
    """
    每次上板的大单管理
    """
    # 成交大单的订单号:{"code":{"order_no",...}}
    __deal_big_order_nos_dict = {}
    @classmethod
    def open_limit_up(cls, code):
        if code in cls.__deal_big_order_nos_dict:
            cls.__deal_big_order_nos_dict[code].clear()
    @classmethod
    def add_big_buy_order_deal(cls, code, order_nos:list):
        if code not in cls.__deal_big_order_nos_dict:
            cls.__deal_big_order_nos_dict[code] = set()
        for order_no in order_nos:
            cls.__deal_big_order_nos_dict[code].add(order_no)
    @classmethod
    def get_big_buy_deal_order_count(cls, code):
        if code in cls.__deal_big_order_nos_dict:
            return len(cls.__deal_big_order_nos_dict[code])
        return 0
def is_block_can_radical_buy(code, radical_buy_blocks, deal_codes):
    # 原因下面的代码个数
    deal_reason_codes = {}