From 7499d1aab63c5a97bc416f28a7e44d9e07b0ec65 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 25 十一月 2024 18:03:58 +0800 Subject: [PATCH] 更新板块流入流出统计 --- third_data/custom_block_in_money_manager.py | 86 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 84 insertions(+), 2 deletions(-) diff --git a/third_data/custom_block_in_money_manager.py b/third_data/custom_block_in_money_manager.py index 57b1e87..261897a 100644 --- a/third_data/custom_block_in_money_manager.py +++ b/third_data/custom_block_in_money_manager.py @@ -2,9 +2,11 @@ 鑷畾涔夋澘鍧楁祦鍏ラ噾棰� """ import copy +import itertools import os import constant +from db import mysql_data_delegate as mysql_data from huaxin_client import l1_subscript_codes_manager from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager from third_data.third_blocks_manager import BlockMapManager @@ -53,11 +55,15 @@ """ 鏉垮潡娴佸叆娴佸嚭绠$悊 """ - + __mysql_db = mysql_data.Mysqldb() __code_blocks = {} __in_list = [] __out_list = [] + # 鏈�杩戣繖娈垫椂闂寸殑浠g爜娑ㄥ仠娆℃暟 + __history_code_limit_up_count = {} + # 琚帓闄ょ殑浠g爜 + __exclude_codes = set() def __load_codes(self): codes = [] @@ -79,9 +85,59 @@ fblocks -= constant.KPL_INVALID_BLOCKS self.__code_blocks[code] = fblocks + def __load_exclude_codes(self): + """ + 鑾峰彇涔嬪墠4涓氦鏄撴棩鐨勬暟鎹� + @return: + """ + max_day = tool.get_now_date_str() + min_day = tool.date_sub(max_day, 30) + sql = f"select * from (select distinct(r.`_day`) as 'day' from `kpl_limit_up_record` r where r.`_day`<'{max_day}' and r.`_day`>'{min_day}') a order by a.day desc limit 4" + results = self.__mysql_db.select_all(sql) + dates = [r[0] for r in results] + # 鑾峰彇涔嬪墠4澶╂定鍋滄鏁�>=2娆$殑浠g爜 + day_codes = {} + for day in dates: + sql = f"select distinct(r._code) from kpl_limit_up_record r where r.`_day`='{day}'" + results = self.__mysql_db.select_all(sql) + day_codes[day] = set([x[0] for x in results]) + codes_list = [day_codes[k] for k in day_codes] + # 缁熻浠g爜鐨勬定鍋滃ぉ鏁� + code_limit_up_count_dict = {} + for codes in codes_list: + for c in codes: + if c not in code_limit_up_count_dict: + code_limit_up_count_dict[c] = 0 + code_limit_up_count_dict[c] += 1 + self.__history_code_limit_up_count = code_limit_up_count_dict + self.load_today_limit_up_codes() + + def load_today_limit_up_codes(self): + # 鍔犺浇浠婃棩娑ㄥ仠浠g爜 + day = tool.get_now_date_str() + sql = f"select distinct(r._code) from kpl_limit_up_record r where r.`_day`='{day}'" + results = self.__mysql_db.select_all(sql) + codes = set([x[0] for x in results]) + # 璁$畻闇�瑕佹帓闄ょ殑浠g爜 + temp_limit_up_count = {} + # 缁熻鎬诲叡娑ㄥ仠澶╂暟 + for c in self.__history_code_limit_up_count: + if c in codes: + temp_limit_up_count[c] = self.__history_code_limit_up_count[c] + 1 + else: + temp_limit_up_count[c] = self.__history_code_limit_up_count[c] + exclude_codes = set() + for c in temp_limit_up_count: + if temp_limit_up_count[c] < 3: + continue + exclude_codes.add(c) + self.__exclude_codes = exclude_codes + def __init__(self): self.codes = self.__load_codes() self.__load_blocks() + self.__load_exclude_codes() + print("鎺掗櫎鐨勪唬鐮�", self.__exclude_codes) def get_codes(self): return self.codes @@ -90,6 +146,8 @@ codes = self.codes block_money = {} for code in codes: + if code in self.__exclude_codes: + continue money = CodeInMoneyManager().get_money(code) if money is None: continue @@ -110,6 +168,29 @@ temp_list.sort(key=lambda x: x[1]) self.__out_list = temp_list + def get_block_codes_money(self, block): + """ + 鑾峰彇鏉垮潡涓唬鐮佺殑娴佸叆娴佸嚭 + @param block: + @return:(浠g爜, 閲戦, 鏄惁琚帓闄�) + """ + codes = self.codes + fdatas = [] + for code in codes: + if code in self.__exclude_codes: + continue + money = CodeInMoneyManager().get_money(code) + if money is None: + continue + before_fblocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code) + if not before_fblocks: + before_fblocks = set() + fblocks = BlockMapManager().filter_blocks(before_fblocks) + if block not in fblocks: + continue + fdatas.append((code, money, code in self.__exclude_codes)) + return fdatas + def get_in_list(self): return self.__in_list @@ -118,7 +199,8 @@ if __name__ == '__main__': - print(CodeInMoneyManager().get_money("300264")) + BlockInMoneyRankManager() + # print(CodeInMoneyManager().get_money("300264")) # BlockInMoneyRankManager().compute() # print(BlockInMoneyRankManager().get_in_list()[:20]) # print(BlockInMoneyRankManager().get_out_list()[:20]) -- Gitblit v1.8.0