| | |
| | | from log_module import log_export, async_log_util |
| | | from log_module.log import hx_logger_l2_transaction, logger_debug, logger_request_api |
| | | from strategy import data_cache |
| | | from strategy.kpl_data_manager import KPLStockOfMarketsPlateLogManager, KPLMarketStockHeatLogManager |
| | | from strategy.kpl_data_manager import KPLMarketsSiftPlateLogManager, KPLMarketStockHeatLogManager |
| | | from strategy.trade_setting import TradeSetting |
| | | from trade import huaxin_trade_api, huaxin_trade_data_update |
| | | from trade.huaxin_trade_record_manager import DelegateRecordManager, DealRecordManager, MoneyManager, PositionManager |
| | |
| | | if use_time_list and use_time_list[-1][1] > 10: |
| | | logger_debug.warning(f"环境获取时间大于10s({request_id}):{use_time_list}") |
| | | # 获取板块强度数据 |
| | | elif url.path == "/load_get_kpl_market_sift_plate": |
| | | elif url.path == "/load_kpl_market_sift_plate": |
| | | # 加载数据 |
| | | KPLStockOfMarketsPlateLogManager().load_data() |
| | | KPLMarketsSiftPlateLogManager().load_data() |
| | | response_data = json.dumps({"code": 0, "msg": "暂无内容"}) |
| | | elif url.path == "/get_kpl_market_sift_plate": |
| | | # 获取开盘啦流入板块详细信息 |
| | |
| | | time_str = params_dict.get("time") |
| | | if not time_str: |
| | | time_str = tool.get_now_time_str() |
| | | fdatas = KPLStockOfMarketsPlateLogManager().get_filter_log_datas() |
| | | fdatas = KPLMarketsSiftPlateLogManager().get_filter_log_datas() |
| | | response_data = json.dumps({"code": 1, "msg": "暂无内容"}) |
| | | for i in range(len(fdatas) - 1, -1, -1): |
| | | if fdatas[i][0] <= time_str: |
| | |
| | | return contents |
| | | |
| | | |
| | | def load_market_stock_heat(date=tool.get_now_date_str()): |
| | | def load_market_sift_plate(date=tool.get_now_date_str()): |
| | | """ |
| | | 获取精选流入的成分股 |
| | | :param date: |
| | |
| | | lines = f.readlines() |
| | | for line in lines: |
| | | if line: |
| | | time_str = __get_async_log_time(line) |
| | | time_str = __get_log_time(line) |
| | | try: |
| | | data = line.split(" - ")[1].strip() |
| | | if data.startswith("["): |
| | | data = data[data.find("]") + 1:].strip() |
| | | data_dict = eval(data) |
| | | fdatas.append((time_str, data_dict)) |
| | | except: |
| | |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | datas = load_kpl_market_strong() |
| | | datas = load_market_sift_plate() |
| | | fdatas = [] |
| | | for data in datas: |
| | | # (距离09:15:00的秒数, 时间, 强度) |
| | |
| | | |
| | | |
| | | # 加载开盘啦板块日志数据 |
| | | kpl_data_manager.KPLStockOfMarketsPlateLogManager() |
| | | kpl_data_manager.KPLMarketsSiftPlateLogManager() |
| | | kpl_data_manager.KPLMarketStockHeatLogManager() |
| | | |
| | | # 启动异步日志 |
| | | threading.Thread(target=async_log_util.run_sync, daemon=True).start() |
| | |
| | | # 充分交易量公式 用于计算日内涨幅段理论的安全交易量值 |
| | | def sufficient_volume(current_volume, yesterday_volume, today_growth): |
| | | if today_growth > 0: |
| | | if current_volume < yesterday_volume * today_growth: |
| | | return False |
| | | else: |
| | | if current_volume > yesterday_volume * 0.8 * today_growth: |
| | | return True |
| | | else: |
| | | return False |
| | | |
| | | |
| | | # 计算 委买和委卖的比例函数(获取买盘强度数据)【掘金数据结构】 |
| | |
| | | logger_info( |
| | | f"【不利】当日成交量小于昨日成交量的{ratios}倍!不买!!公司名称:{k_line_data[0]['sec_name']},当日当时总成交量:{current_volume},最新价: {current_price}") |
| | | return |
| | | data_cache.willing_buy_list.add_buy_code(k_line_data[0]['sec_name']) |
| | | logger_info(f"当前有意购买:{k_line_data[0]['sec_name']},有意购买列表:{data_cache.willing_buy_list}") |
| | | if len(intersection_plate) > 0: |
| | | logger_info( |
| | | f"【不利】同概念只买一次,不买了,公司名称:{k_line_data[0]['sec_name']},重复相交概念==={intersection_plate}") |
| | |
| | | # 最新成交价格 |
| | | latest_deal_price_dict = {} |
| | | |
| | | logging.info(f"全局初始化数据 完成《《《 - {os.getpid()}") |
| | | |
| | | # 大单成交数据: {"代码":[大单数据1,大单数据2,...]} |
| | | big_order_deal_dict = {} |
| | | |
| | | # 有意购买的股票名称列表 |
| | | willing_buy_list = [] |
| | | |
| | | logging.info(f"全局初始化数据 完成《《《 - {os.getpid()}") |
| | |
| | | |
| | | from strategy import data_cache |
| | | from strategy import basic_methods |
| | | from strategy.kpl_data_manager import KPLStockOfMarketsPlateLogManager |
| | | from strategy.kpl_data_manager import KPLMarketsSiftPlateLogManager |
| | | from trade import middle_api_protocol |
| | | from utils import hx_qc_value_util, tool |
| | | |
| | |
| | | from log_module.log import logger_stock_of_markets_plate, logger_debug, logger_kpl_market_sift_plate |
| | | from utils import tool |
| | | |
| | | # 开盘啦个股强度日志管理 |
| | | |
| | | # 开盘啦板块强度日志管理 |
| | | @tool.singleton |
| | | class KPLStockOfMarketsPlateLogManager: |
| | | class KPLMarketsSiftPlateLogManager: |
| | | """ |
| | | 精选流入板块与板块代码日志管理 |
| | | """ |
| | |
| | | |
| | | def __load_data(self): |
| | | if tool.get_now_time_str() > '13:10:00': |
| | | logger_debug.info("KPLMarketStockHeatLogManager 开始加载数据") |
| | | datas = log_export.load_market_stock_heat() |
| | | logger_debug.info("KPLMarketsSiftPlateLogManager 开始加载数据") |
| | | datas = log_export.load_market_sift_plate() |
| | | for data in datas: |
| | | # (发生时间,[净流入板块], {"板块":(代码, 名称, 涨幅)}) |
| | | self.__filter_log_datas.append(self.__filter_origin_data(data)) |
| | | logger_debug.info("KPLMarketStockHeatLogManager 数据加载完成:{}", len(self.__filter_log_datas)) |
| | | logger_debug.info("KPLMarketsSiftPlateLogManager 数据加载完成:{}", len(self.__filter_log_datas)) |
| | | |
| | | def load_data(self): |
| | | self.__load_data() |
| | |
| | | |
| | | def get_filter_log_datas(self): |
| | | return self.__filter_log_datas |
| | | |
| | | |
| | | # 开盘啦个股强度日志管理 |
| | | @tool.singleton |
| | |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | KPLStockOfMarketsPlateLogManager() |
| | | KPLMarketStockHeatLogManager() |
| | |
| | | |
| | | from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_debug, logger_kpl_market_sift_plate |
| | | from strategy import kpl_api, data_cache, basic_methods |
| | | from strategy.kpl_data_manager import KPLMarketStockHeatLogManager |
| | | from utils import tool, hx_qc_value_util |
| | | |
| | | |
| | |
| | | |
| | | # logger.info(f"精选板块股票强度数据更新 == {market_sift_plate_stock_dict}") |
| | | # 只在盘中时间获取 |
| | | kpl_api.KPLStockOfMarketsPlateLogManager().add_log(market_sift_plate['list'], log_datas) |
| | | KPLMarketStockHeatLogManager().add_log(market_sift_plate['list'], log_datas) |
| | | # 行情》精选板块》排名前20中》对应个股》符合条件的个股 |
| | | return market_sift_plate_stock_dict |
| | | |