| | |
| | | except: |
| | | pass |
| | | # L撤比例 |
| | | l_down_cancel_rate, must_buy = LCancelRateManager.get_cancel_rate(code, buy_mode = OrderBeginPosInfo.MODE_RADICAL) |
| | | l_down_cancel_rate, must_buy = LCancelRateManager.get_cancel_rate(code, |
| | | buy_mode=OrderBeginPosInfo.MODE_RADICAL) |
| | | |
| | | # 在挂的距离成交进度位金额/(远近期参考量-单当日实时成交量)*100% |
| | | expire_rate = "未知" |
| | | try: |
| | | referer_volume = code_volumn_manager.CodeVolumeManager().get_radical_buy_refer_volume( |
| | | code, limit_up_price) |
| | | today_volumn = code_volumn_manager.CodeVolumeManager().get_today_volumn(code) |
| | | expire_rate = f"{round(100 * total_left_num * 100 / (referer_volume - today_volumn), 2)}%" |
| | | except: |
| | | pass |
| | | |
| | | fdata = {"id": orderSysID, "code_info": (code, code_name), "total_num": total_nums, |
| | | "finish_num": deal_or_cancel_num, |
| | | "buy1_money": output_util.money_desc(buy1_money), |
| | |
| | | "is_near_big_order": is_near_big_order, |
| | | "block": '', |
| | | "trade_queue": [], |
| | | "l_down_cancel_rate":l_down_cancel_rate |
| | | "l_down_cancel_rate": l_down_cancel_rate, |
| | | "expire_rate": expire_rate |
| | | } |
| | | limit_up_data = kpl_data_manager.KPLLimitUpDataRecordManager.record_code_dict.get(code) |
| | | # 获取当前板块 |
| | |
| | | "zyltgb": constant.RADICAL_BUY_ZYLTGB_AS_YI_RANGES, |
| | | "top_block_count_by_market_strong": constant.RADICAL_BUY_TOP_IN_COUNT_BY_MARKET_STRONG, |
| | | "special_codes_max_block_in_rank": constant.RADICAL_BUY_TOP_IN_INDEX_WITH_SPECIAL, |
| | | "ignore_block_in_money_market_strong":constant.IGNORE_BLOCK_IN_MONEY_MARKET_STRONG |
| | | "ignore_block_in_money_market_strong": constant.IGNORE_BLOCK_IN_MONEY_MARKET_STRONG |
| | | }} |
| | | self.send_response({"code": 0, "data": data, "msg": f""}, |
| | | client_id, |
| | |
| | | constant.RADICAL_BUY_TOP_IN_INDEX_WITH_SPECIAL = radical_buy.get( |
| | | "special_codes_max_block_in_rank") |
| | | if radical_buy.get('ignore_block_in_money_market_strong') is not None: |
| | | constant.IGNORE_BLOCK_IN_MONEY_MARKET_STRONG = radical_buy.get('ignore_block_in_money_market_strong') |
| | | constant.IGNORE_BLOCK_IN_MONEY_MARKET_STRONG = radical_buy.get( |
| | | 'ignore_block_in_money_market_strong') |
| | | self.send_response({"code": 0, "data": {}, "msg": f""}, |
| | | client_id, |
| | | request_id) |
| | |
| | | def __is_new_top(code, limit_up_price, datas): |
| | | datas = copy.deepcopy(datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[-80:] |
| | | datas = datas[-60:] |
| | | max_price = 0 |
| | | for data in datas: |
| | | if max_price < data["high"]: |
| | |
| | | from third_data.history_k_data_util import HistoryKDatasUtils, JueJinApi |
| | | from trade import l2_trade_util |
| | | from settings.trade_setting import MarketSituationManager |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | from utils import global_util, tool, init_data_util, buy_condition_util |
| | | |
| | | __CodesPlateKeysManager = CodesHisReasonAndBlocksManager() |
| | |
| | | k_format = code_nature_analyse.get_k_format(code, limit_up_price, volumes_data) |
| | | code_nature_analyse.CodeNatureRecordManager().save_k_format(code, k_format) |
| | | |
| | | # 是否具有辨识度 |
| | | is_special = True if k_format and k_format[8][0] else False |
| | | if not WantBuyCodesManager().is_in_cache( |
| | | code) and not gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(code): |
| | | # 不是想买单,也不是排一的代码 |
| | | # if not is_special: |
| | | # situation = MarketSituationManager().get_situation_cache() |
| | | # zylt_threshold_as_yi = buy_condition_util.get_zyltgb_threshold(situation) |
| | | # if global_util.zyltgb_map.get(code) and global_util.zyltgb_map.get(code) > zylt_threshold_as_yi[ |
| | | # 1] * 100000000: |
| | | # l2_trade_util.forbidden_trade(code, |
| | | # f"无辨识度,自由流通市值({global_util.zyltgb_map.get(code) // 100000000})>{zylt_threshold_as_yi[1]}亿") |
| | | # continue |
| | | # elif limit_up_price and float(limit_up_price) >= constant.MAX_CODE_PRICE: |
| | | # l2_trade_util.forbidden_trade(code, |
| | | # f"无辨识度,涨停价({limit_up_price})>{constant.MAX_CODE_PRICE}") |
| | | # continue |
| | | if code_nature_analyse.is_price_too_high_in_days(code, volumes_data, limit_up_price)[0]: |
| | | # 判断是否太高 |
| | | l2_trade_util.forbidden_trade(code, "6天内股价长得太高") |
| | | continue |
| | | |
| | | if tool.is_ge_code(code) and float(limit_up_price) < 10: |
| | | l2_trade_util.forbidden_trade(code, "创业板股价10块内") |
| | | |
| | | if len(k_format) > 14 and k_format[14]: |
| | | l2_trade_util.forbidden_trade(code, "昨日炸板") |
| | | continue |
| | | |
| | | # if code_nature_analyse.is_continue_limit_up_not_enough_fall_dwon(code, volumes_data): |
| | | # # 判断是否太高 |
| | | # l2_trade_util.forbidden_trade(code, "回踩不够") |
| | | # continue |
| | | try: |
| | | if not __is_normal_in_5d(code): |
| | | l2_trade_util.forbidden_trade(code, "最近5天有ST/非正常状态") |
| | | need_forbidden = True |
| | | # 新题材破前高就不需要加黑 |
| | | if BlockSpecialCodesManager().get_code_blocks(code) and k_format and k_format[1]: |
| | | need_forbidden = False |
| | | if need_forbidden: |
| | | if code_nature_analyse.is_price_too_high_in_days(code, volumes_data, limit_up_price)[0]: |
| | | # 判断是否太高 |
| | | l2_trade_util.forbidden_trade(code, "6天内股价长得太高") |
| | | continue |
| | | except Exception as e: |
| | | logger_debug.error(f"{code}出错__is_normal_in_5d") |
| | | logger_debug.exception(e) |
| | | |
| | | if tool.is_ge_code(code) and float(limit_up_price) < 10: |
| | | l2_trade_util.forbidden_trade(code, "创业板股价10块内") |
| | | |
| | | if len(k_format) > 14 and k_format[14]: |
| | | l2_trade_util.forbidden_trade(code, "昨日炸板") |
| | | continue |
| | | |
| | | # if code_nature_analyse.is_continue_limit_up_not_enough_fall_dwon(code, volumes_data): |
| | | # # 判断是否太高 |
| | | # l2_trade_util.forbidden_trade(code, "回踩不够") |
| | | # continue |
| | | try: |
| | | if not __is_normal_in_5d(code): |
| | | l2_trade_util.forbidden_trade(code, "最近5天有ST/非正常状态") |
| | | continue |
| | | except Exception as e: |
| | | logger_debug.error(f"{code}出错__is_normal_in_5d") |
| | | logger_debug.exception(e) |
| | | |
| | | if code_nature_analyse.is_up_too_high_in_10d_with_limit_up(code, volumes_data): |
| | | # 判断是否太高 |
| | |
| | | import requests |
| | | |
| | | import constant |
| | | from code_attribute.gpcode_manager import BlackListCodeManager |
| | | from code_attribute.gpcode_manager import BlackListCodeManager, HumanRemoveForbiddenManager |
| | | from l2.huaxin import huaxin_target_codes_manager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager |
| | | from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api |
| | |
| | | ContainsLimitupCodesBlocksManager |
| | | from third_data.kpl_limit_up_data_manager import LatestLimitUpBlockManager, CodeLimitUpSequenceManager |
| | | from third_data.third_blocks_manager import BlockMapManager |
| | | from trade.buy_radical import radical_buy_data_manager |
| | | from trade.buy_radical import radical_buy_data_manager, new_block_processor |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy |
| | | from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager |
| | | from utils import global_util, tool, data_export_util |
| | | from code_attribute import gpcode_manager |
| | | from code_attribute import gpcode_manager, code_nature_analyse |
| | | from log_module import log_analyse, log_export, async_log_util |
| | | from l2 import code_price_manager, l2_data_util, transaction_progress |
| | | from cancel_strategy.s_l_h_cancel_strategy import HourCancelBigNumComputer, LCancelRateManager |
| | |
| | | if code_info_list: |
| | | # 将代码加入新题材 |
| | | for x in code_info_list: |
| | | add_result = LimitUpCodesBlockRecordManager().add_new_blocks(x[0], bi[0]) |
| | | if add_result: |
| | | # 增加新题材是否成功, 临时将票加入辨识度 |
| | | BlockSpecialCodesManager().add_code_block_for_temp(x[0], bi[0]) |
| | | new_block_processor.process_new_block(x[0], bi[0]) |
| | | |
| | | |
| | | try: |
| | | if result_list_: |
| | |
| | | update_new_block_plates = [] |
| | | for r in reasons: |
| | | for c in block_codes[r]: |
| | | add_result = LimitUpCodesBlockRecordManager().add_new_blocks(c, r) |
| | | if add_result: |
| | | # 增加新题材是否成功, 临时将票加入辨识度 |
| | | BlockSpecialCodesManager().add_code_block_for_temp(c, r) |
| | | new_block_processor.process_new_block(c, r) |
| | | |
| | | for r in reasons: |
| | | if r in block_plate_code_dict: |
New file |
| | |
| | | """ |
| | | 新题材处理器 |
| | | """ |
| | | from code_attribute import code_nature_analyse |
| | | from code_attribute.gpcode_manager import HumanRemoveForbiddenManager |
| | | from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager |
| | | from trade import l2_trade_util, trade_record_log_util |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | |
| | | |
| | | def process_new_block(code, block): |
| | | """ |
| | | 处理新题材 |
| | | @param code: |
| | | @param block: |
| | | @return: |
| | | """ |
| | | add_result = LimitUpCodesBlockRecordManager().add_new_blocks(code, block) |
| | | if add_result: |
| | | # 增加新题材是否成功, 临时将票加入辨识度 |
| | | BlockSpecialCodesManager().add_code_block_for_temp(code, block) |
| | | # 新题材破前高就移黑 |
| | | k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code) |
| | | if k_format and k_format[1]: |
| | | if l2_trade_util.is_in_forbidden_trade_codes(code): |
| | | l2_trade_util.remove_from_forbidden_trade_codes(code) |
| | | # 加想买单要从黑名单移除 |
| | | trade_record_log_util.add_common_msg(code, "新题材移黑", block) |
| | | |
| | | # |
| | |
| | | from log_module import async_log_util |
| | | from log_module.log import logger_trade |
| | | from trade import trade_record_log_util |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | |
| | |
| | | need_add = False |
| | | else: |
| | | need_add = True |
| | | |
| | | if need_add: |
| | | if not is_in_forbidden_trade_codes(code): |
| | | trade_record_log_util.add_forbidden_buy_log(code, msg) |