| | |
| | | |
| | | # 每次扫入是否都需要大单 |
| | | CAN_RADICAL_BUY_NEED_BIG_ORDER_EVERYTIME = True |
| | | |
| | | # 常规买是否买入 |
| | | CAN_COMMON_BUY = False |
| | |
| | | if RadicalBuyDealCodesManager.radical_buy_blocks_dict.get(code): |
| | | return |
| | | |
| | | if not constant.CAN_COMMON_BUY: |
| | | # 常规买不买入了 |
| | | return |
| | | |
| | | # 获取买入信号计算起始位置 |
| | | order_begin_pos = cls.__get_order_begin_pos(code) |
| | | |
| | |
| | | continue |
| | | if not tool.is_can_buy_code(d[3]): |
| | | continue |
| | | # 代码,名称,涨停时间,是否炸板,是否想买,是否已经下过单,涨停时间,自由流通市值,是否在黑名单里面 |
| | | # 代码,名称,涨停时间,是否炸板,是否想买,是否已经下过单,涨停时间,自由流通市值,是否在黑名单里面, 是否有辨识度, 大单净额 |
| | | codes_info.append( |
| | | [d[3], d[4], tool.to_time_str(int(d[5])), 1 if d[3] not in now_limit_up_codes else 0, 0, 0, d[12], |
| | | output_util.money_desc(d[13]), 1, 1 if l2_trade_util.is_in_forbidden_trade_codes(d[3]) else 0, 1 if d[3] in special_codes else 0]) |
| | | output_util.money_desc(d[13]), 1, 1 if l2_trade_util.is_in_forbidden_trade_codes(d[3]) else 0, 1 if d[3] in special_codes else 0, CodeInMoneyManager().get_money(d[3])]) |
| | | codes_info.sort(key=lambda x: x[2]) |
| | | # 查询是否为想买单 |
| | | green_codes = gpcode_manager.GreenListCodeManager().list_codes_cache() |
| | |
| | | from third_data.kpl_data_manager import CodeHighLevel |
| | | from third_data.third_blocks_manager import BlockMapManager |
| | | from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | from trade.order_statistic import DealAndDelegateWithBuyModeDataManager |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | | from utils import tool, global_util |
| | |
| | | return True, f"历史涨停:{history_codes}" |
| | | |
| | | @classmethod |
| | | def __block_special_codes(cls, code, block, yesterday_limit_up_codes): |
| | | """ |
| | | 是否是这个板块有辨识度的票 |
| | | @param code: |
| | | @param block: |
| | | @return: |
| | | """ |
| | | block_codes = BlockSpecialCodesManager().get_block_codes(block) |
| | | if code not in block_codes: |
| | | return False, "无辨识度" |
| | | history_index, history_before_codes_info = cls.__get_history_index(code, block, yesterday_limit_up_codes) |
| | | if history_index > 5: |
| | | return False, f"处于首板老{history_index + 1}" |
| | | return True, f"处于首板老{history_index + 1}" |
| | | |
| | | @classmethod |
| | | def __get_limit_up_timestamp(cls, code): |
| | | """ |
| | | 获取代码的涨停时间,默认当前时间 |
| | |
| | | msges.append(f"【{b}】:{result[1]}") |
| | | fmsges.append("板块回封判断##" + ",".join(msges)) |
| | | |
| | | if not can_buy_blocks: |
| | | msges.clear() |
| | | for b in keys_: |
| | | result = cls.__block_special_codes(code, b ,yesterday_limit_up_codes) |
| | | if result[0]: |
| | | can_buy_blocks.add(b) |
| | | msges.append(f"【{b}】:{result[1]}") |
| | | fmsges.append("板块辨识度判断##" + ",".join(msges)) |
| | | |
| | | # 如果能扫入就需要获取代码在板块中的身位 |
| | | # if can_buy_blocks: |
| | | # excude_codes = set() |