| | |
| | | source_origin_dict = copy.deepcopy(CodeThirdBlocksManager().get_source_blocks_origin(code)) |
| | | if not source_origin_dict: |
| | | source_origin_dict = {} |
| | | kpl_blocks = RadicalBuyBlockManager.get_code_kpl_blocks(code) |
| | | kpl_blocks = set() |
| | | if kpl_blocks is None: |
| | | kpl_blocks = set() |
| | | if not kpl_blocks: |
| | | KPLCodeJXBlockManager().load_jx_blocks_radical(code) |
| | | |
| | | filter_blocks, match_blocks = RadicalBuyBlockManager.get_code_blocks(code) |
| | | source_origin_dict[SOURCE_TYPE_KPL] = kpl_blocks |
| | |
| | | G_CANCEL_RATE_FOR_GOOD_MARKET = 0.59 |
| | | |
| | | # 华鑫L2的卡位数量 |
| | | HUAXIN_L2_MAX_CODES_COUNT = 90 |
| | | HUAXIN_L2_MAX_CODES_COUNT = 85 |
| | | |
| | | TRADE_WAY_HUAXIN = "huaxin" |
| | | TRADE_WAY_JUEJIN = "juejin" |
| | |
| | | from trade.trade_data_manager import CodeActualPriceProcessor, PlaceOrderCountManager, AccountMoneyManager, \ |
| | | RadicalBuyDealCodesManager |
| | | |
| | | from trade.trade_manager import TradeTargetCodeModeManager |
| | | from trade.trade_manager import TradeTargetCodeModeManager, CodesTradeStateManager |
| | | |
| | | from settings.trade_setting import MarketSituationManager, TradeBlockBuyModeManager |
| | | |
| | |
| | | if can_buy_result is None: |
| | | async_log_util.warning(logger_debug, "没有获取到板块缓存,将获取板块") |
| | | latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records() |
| | | |
| | | codes_delegate = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_DELEGATED, trade_constant.TRADE_STATE_BUY_PLACE_ORDER})) |
| | | codes_success = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_SUCCESS})) |
| | | |
| | | CodePlateKeyBuyManager.update_can_buy_blocks(code, |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas, |
| | | 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()) |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(), codes_delegate, codes_success) |
| | | can_buy_result = CodePlateKeyBuyManager.can_buy(code) |
| | | return can_buy_result |
| | | |
| | |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reasons()) |
| | | # 更新板块信息 |
| | | latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records() |
| | | |
| | | codes_delegate = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_DELEGATED, trade_constant.TRADE_STATE_BUY_PLACE_ORDER})) |
| | | codes_success = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_SUCCESS})) |
| | | |
| | | CodePlateKeyBuyManager.update_can_buy_blocks(code_, |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas, |
| | | 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()) |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(),codes_delegate, codes_success) |
| | | finally: |
| | | cls.__updating_jx_blocks_codes.discard(code_) |
| | | |
| | |
| | | |
| | | from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out, logger_kpl_jx_in, logger_debug |
| | | from third_data.kpl_util import KPLPlatManager |
| | | from trade import trade_manager, l2_trade_util, trade_constant |
| | | from trade import l2_trade_util, trade_constant |
| | | |
| | | # 代码精选板块管理 |
| | | from utils.kpl_data_db_util import KPLLimitUpDataUtil |
| | |
| | | __TargetCodePlateKeyManager = TargetCodePlateKeyManager() |
| | | __LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager() |
| | | __CodesHisReasonAndBlocksManager = CodesHisReasonAndBlocksManager() |
| | | __CodesTradeStateManager = trade_manager.CodesTradeStateManager() |
| | | __can_buy_compute_result_dict = {} |
| | | |
| | | @classmethod |
| | | def __remove_from_l2(cls, code, msg): |
| | | # 根据身位移除代码 |
| | | # return |
| | | # 下过单的代码不移除 |
| | | if trade_manager.CodesTradeStateManager().get_trade_state_cache(code) != trade_constant.TRADE_STATE_NOT_TRADE: |
| | | # 只要下过单的就不移除 |
| | | return |
| | | l2_trade_util.forbidden_trade(code, msg=msg) |
| | | logger_kpl_block_can_buy.info(msg) |
| | | |
| | | # 是否需要积极买 |
| | | @classmethod |
| | |
| | | @classmethod |
| | | def __compute_can_buy_blocks(cls, code, current_limit_up_datas, limit_up_record_datas, |
| | | yesterday_current_limit_up_codes, before_blocks_dict, |
| | | current_limit_up_block_codes_dict, high_level_general_code_blocks): |
| | | current_limit_up_block_codes_dict, high_level_general_code_blocks, codes_delegate, codes_success): |
| | | # 根据代码泛化板块获取泛化板块的代码集合 |
| | | high_level_general_block_codes = {} |
| | | for c in high_level_general_code_blocks: |
| | |
| | | high_level_general_block_codes) |
| | | if not blocks_compute_results: |
| | | return False, True, f"没有找到板块", [], keys, [] |
| | | codes_delegate = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_DELEGATED, trade_constant.TRADE_STATE_BUY_PLACE_ORDER})) |
| | | codes_success = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_SUCCESS})) |
| | | |
| | | codes = codes_delegate | codes_success |
| | | # 统计成交代码的板块 |
| | | trade_codes_blocks_dict = {} |
| | |
| | | @classmethod |
| | | def update_can_buy_blocks(cls, code, current_limit_up_datas, limit_up_record_datas, |
| | | latest_current_limit_up_records, |
| | | before_blocks_dict, current_limit_up_block_codes_dict): |
| | | before_blocks_dict, current_limit_up_block_codes_dict, delegate_codes, deal_codes): |
| | | yesterday_current_limit_up_codes = set() |
| | | yesterday_current_limit_up_records_dict = {} |
| | | yesterday_current_limit_up_records = latest_current_limit_up_records[0][1] |
| | |
| | | yesterday_current_limit_up_codes, |
| | | before_blocks_dict, |
| | | current_limit_up_block_codes_dict, |
| | | high_level_general_code_blocks) |
| | | high_level_general_code_blocks, delegate_codes, deal_codes) |
| | | # 保存板块计算结果 |
| | | cls.__can_buy_compute_result_dict[code] = ( |
| | | can_buy_blocks, unique, msg, can_buy_strong_blocks, keys, active_buy_blocks) |
| | |
| | | import l2_data_util |
| | | from code_attribute import code_nature_analyse, code_volumn_manager, gpcode_manager |
| | | from code_attribute.code_l1_data_manager import L1DataManager |
| | | from code_attribute.code_volumn_manager import CodeVolumeManager |
| | | from code_attribute.gpcode_manager import GreenListCodeManager |
| | | from db import redis_manager_delegate as redis_manager |
| | | from db.redis_manager_delegate import RedisUtils |
| | |
| | | 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 |
| | | from third_data import kpl_data_manager, kpl_block_util, huaxin_l1_data_manager, kpl_util, kpl_data_constant |
| | | from third_data.code_plate_key_manager import TargetCodePlateKeyManager, KPLCodeJXBlockManager, RealTimeKplMarketData |
| | | from third_data import kpl_block_util, huaxin_l1_data_manager, kpl_data_constant |
| | | from third_data.code_plate_key_manager import RealTimeKplMarketData |
| | | from third_data.kpl_data_constant import LimitUpDataConstant, LimitUpCodesBlockRecordManager |
| | | 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 |
| | | |
| | |
| | | if not limit_up_timestamp: |
| | | limit_up_timestamp = time.time() |
| | | return limit_up_timestamp |
| | | |
| | | @classmethod |
| | | def get_code_kpl_blocks(cls, code): |
| | | blocks = KPLCodeJXBlockManager().get_jx_blocks_radical(code) |
| | | if blocks is None: |
| | | blocks = set() |
| | | # 将获取涨停原因与涨停推荐 |
| | | keys = TargetCodePlateKeyManager().get_plate_keys(code, contains_today=True) |
| | | if keys and keys[0]: |
| | | blocks |= set(keys[0]) |
| | | return blocks |
| | | |
| | | @classmethod |
| | | def get_code_blocks(cls, code): |