| | |
| | | return fblocks, before_fblocks |
| | | |
| | | @classmethod |
| | | def is_block_can_buy_with_block_in(cls, code, block, yesterday_limit_up_codes): |
| | | def is_block_can_buy_with_block_in(cls, code, block, yesterday_limit_up_codes, is_for_buy=False): |
| | | """ |
| | | 根据板块流入判断板块是否可买 |
| | | @param code: |
| | | @param block: |
| | | @param is_for_buy: 是否是买入 |
| | | @return:板块是否可买, 是否需要大单够 |
| | | """ |
| | | jx_in_blocks = RealTimeKplMarketData.get_top_market_jingxuan_blocks() |
| | |
| | | if codes and len(codes) >= 5: |
| | | return True, False |
| | | else: |
| | | if tool.get_now_time_as_int() < 100000: |
| | | # 10点以前 |
| | | # 当前板块净流入>=0且历史涨停数量>=2且是老大和老二 |
| | | codes = LimitUpDataConstant.get_history_limit_up_block_codes(code) |
| | | if codes and len(codes) >= 2: |
| | | # 判断板块净流入 |
| | | if codes and len(codes) >= 3: |
| | | # 10点之后净流入是正才能订阅 |
| | | in_money = RealTimeKplMarketData.get_jx_block_in_money(block) |
| | | if in_money and in_money >= 0: |
| | | if tool.get_now_time_as_int() > 100000 and (not in_money or in_money < 0): |
| | | # 10点以后且净流入不为正 |
| | | return False, False |
| | | # 净流入不为负 |
| | | # 获取首板的身位 |
| | | info = RadicalBuyBlockManager().get_history_index(code, block, yesterday_limit_up_codes, |
| | | ignore_open_limit_up=False) |
| | | if info[0] < 2: |
| | | if info[0] < 3: |
| | | if is_for_buy: |
| | | # 买入 |
| | | if tool.get_now_time_as_int() < 100000: |
| | | return True, True |
| | | else: |
| | | # 订阅 |
| | | return True, False |
| | | return False, False |
| | | |
| | | @classmethod |
| | |
| | | keys_, info = cls.get_code_blocks(code) |
| | | if not keys_: |
| | | return set(), "没获取到板块" |
| | | |
| | | if WantBuyCodesManager().is_in_cache(code): |
| | | return set(keys_), "已加想" |
| | | |
| | | # 获取精选净流入 |
| | | keys_in_jx = set() |
| | | msgs = [] |
| | | for k in keys_: |
| | | block_info = cls.is_block_can_buy_with_block_in(code, k, yesterday_limit_up_codes) |
| | | block_info = cls.is_block_can_buy_with_block_in(code, k, yesterday_limit_up_codes, is_for_buy=True) |
| | | if block_info[0]: |
| | | if block_info[1]: |
| | | # 要求大单够了才买 |
| | | if block_info[1] and False: |
| | | # 暂时不需要: 要求大单够了才买 |
| | | big_deal_info = get_total_deal_big_order_info(code, gpcode_manager.get_limit_up_price_as_num(code)) |
| | | if big_deal_info[0] <= 0: |
| | | keys_in_jx.add(k) |
| | |
| | | msgs.append(f"【{keys_}】板块未在精选流入中:") |
| | | # 板块尚未精选流入,且板块涨停代码个数是否<5个 |
| | | return set(), ",".join(msgs) |
| | | # 加想的票也必须在板块净流入中 |
| | | if WantBuyCodesManager().is_in_cache(code): |
| | | return set(keys_), "已加想" |
| | | |
| | | keys_ = keys_in_jx |
| | | match_blocks = open_limit_up_blocks & keys_ |
| | | can_buy_blocks = set() |