l2/l2_transaction_data_manager.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
log_module/log.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
servers/data_server.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
trade/buy_strategy.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
l2/l2_transaction_data_manager.py
@@ -101,7 +101,7 @@ @return: """ if code not in self.__total_buy_datas_dict: return 0 return [] return [x[2] for x in self.__total_buy_datas_dict[code]] def get_total_sell_money(self, code): log_module/log.py
@@ -135,6 +135,10 @@ logger.add(self.get_path("ths", "code_operate"), filter=lambda record: record["extra"].get("name") == "code_operate", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("strategy", "buy_strategy"), filter=lambda record: record["extra"].get("name") == "buy_strategy", rotation="00:00", compression="zip", enqueue=True) # 显示在控制台 # logger.add(sys.stdout, # filter=lambda record: record["extra"].get("name") == "code_operate", enqueue=True) @@ -420,6 +424,8 @@ logger_mysql_debug = __mylogger.get_logger("mysql_debug") logger_buy_strategy = __mylogger.get_logger("buy_strategy") # -------------------------------华鑫日志--------------------------------- hx_logger_l2_orderdetail = __mylogger.get_logger("hx_l2_orderdetail") hx_logger_l2_transaction = __mylogger.get_logger("hx_l2_transaction") servers/data_server.py
@@ -10,6 +10,7 @@ from l2.l2_transaction_data_manager import HuaXinBuyOrderManager from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api from third_data.kpl_limit_up_data_manager import LatestLimitUpBlockManager, CodeLimitUpSequenceManager from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy from utils import global_util, tool, data_export_util from code_attribute import gpcode_manager from log_module import log, log_analyse, log_export, async_log_util @@ -816,6 +817,11 @@ CodeLimitUpSequenceManager().set_current_limit_up_datas(result_list_) except: pass try: OpenLimitUpGoodBlocksBuyStrategy.set_current_limit_up_data(result_list_) except: pass self.__kplDataManager.save_data(type_, result_list_) except Exception as e: logger_debug.exception(e) trade/buy_strategy.py
New file @@ -0,0 +1,90 @@ """ 买入策略 """ import constant from log_module import async_log_util from log_module.log import logger_buy_strategy from third_data import kpl_api from utils import tool class OpenLimitUpGoodBlocksBuyStrategy: """ 开1的好板块买入策略 """ __excuted = False @classmethod def set_current_limit_up_data(cls, datas): """ 设置当前的涨停数据 @param datas: @return: """ now_time = int(tool.get_now_time_str().replace(":", "")) if now_time < int("092800") or now_time > int("093000"): return if cls.__excuted: return cls.__excuted = True # 形如: {"801038":['801038', '维生素', 7.325]} reason_id_info_dict = {} # 形如: {"801038":{}} reason_id_codes = {} for d in datas: code = d[0] limit_up_reason = d[5] # [['801038', '维生素', 7.325]] reasons = cls.__load_blocks(code, limit_up_reason) for r in reasons: reason_id_info_dict[r[0]] = r if r[0] not in reason_id_codes: reason_id_codes[r[0]] = set() reason_id_codes[r[0]].add(code) reason_list = [reason_id_info_dict[x] for x in reason_id_info_dict] # 按涨幅倒序排 reason_list.sort(key=lambda x: x[2], reverse=True) async_log_util.info(logger_buy_strategy, f"原因排序:{reason_list}") async_log_util.info(logger_buy_strategy, f"原因代码:{reason_id_codes}") max_lenth = len(reason_list) # 剔除宽泛原因 for i in range(0, max_lenth): if i >= len(reason_list): break if reason_list[i][1] in constant.KPL_INVALID_BLOCKS: del reason_list[i] i -= 1 @classmethod def __load_blocks(cls, code, limit_up_reason): """ 加载板块 @param code: @return: """ limit_up_reason_info = None jx_blocks = kpl_api.getCodeJingXuanBlocks(code) for x in jx_blocks: if x[1] == limit_up_reason: limit_up_reason_info = x break recommend_reasons = jx_blocks if len(jx_blocks) > 2: recommend_reasons = jx_blocks[:2] reasons = [] if limit_up_reason_info: reasons.append(limit_up_reason_info) for r in recommend_reasons: if limit_up_reason_info and r[0] == limit_up_reason_info[0]: continue reasons.append(r) return reasons if __name__ == "__main__": with open("C:\\Users\\Administrator\\Desktop\\新建文本文档 (2).txt", encoding="utf-8") as f: line = f.readline() line = eval(line) OpenLimitUpGoodBlocksBuyStrategy.set_current_limit_up_data(line)