| | |
| | | # stock.startswith('SHSE.60') or (stock.startswith('SZSE.00'))] |
| | | self.filtered_stocks = [stock['symbol'] for stock in self.all_stocks if |
| | | isinstance(stock.get('symbol'), str) and ( |
| | | stock['symbol'].startswith('SHSE.60') or stock['symbol'].startswith( |
| | | 'SZSE.00'))] |
| | | stock['symbol'].startswith('SHSE.60') or stock['symbol'].startswith( |
| | | 'SZSE.00'))] |
| | | # self.filtered_stocks = self.filtered_stocks[:10] |
| | | print(f"过滤后上证A股和深证A股数量filtered_stocks:{len(self.filtered_stocks)}") |
| | | # 声明一下需要拉取K线的列表 |
| | |
| | | # print(f"非ST, 退市, 退, XD, N==={basic_info['sec_name']} 继续判断") |
| | | no_k_line_stocks.append(i['symbol']) |
| | | # 将列表推导式移出循环 过滤出昨日收盘价在2-30元的股票 |
| | | min_instruments = [stock for stock in instruments if 2 < stock['pre_close'] < 30] |
| | | min_instruments = [stock for stock in instruments if 3 < stock['pre_close'] < 30] |
| | | # print(f"min_instruments 数量==={len(min_instruments)}") |
| | | # 使用 get 方法安全地获取 symbol 字段的值 |
| | | self.min_stocks = [stock.get('symbol') for stock in min_instruments if stock.get('symbol') is not None] |
| | | print(f"min_stocks==={len(self.min_stocks)}") |
| | | print(f"min_stocks 数量 ==={len(self.min_stocks)}") |
| | | # logger.info(f"min_stocks==={self.min_stocks}") |
| | | logging.info(f"全局初始化数据 完成《《《 - {os.getpid()}") |
| | | # 获取当前进程的PID |
| | | |
| | | |
| | | ''' |
| | | 设定基本时间点 |
| | | 设定常用当前时间函数方法,为什么这里不是一个函数方法???? |
| | | ''' |
| | | Local_startup_time = datetime.datetime.now().strftime("%H:%M:%S") |
| | | server_restart_time = datetime.time(9, 00, 00).strftime("%H:%M:%S") # 定义9:00 |
| | | L1_data_start_time = datetime.time(9, 15, 00).strftime("%H:%M:%S") # 定义9:15 |
| | | before_open_bidding_time = datetime.time(9, 20, 00).strftime("%H:%M:%S") # 定义9:20 |
| | | open_bidding_time = datetime.time(9, 25, 00).strftime("%H:%M:%S") # 定义 盘前 集合竞价 时间 |
| | | later_open_bidding_time = datetime.time(9, 25, 30).strftime("%H:%M:%S") # 定义 盘前 集合竞价 时间 |
| | | after_open_bidding_time = datetime.time(9, 26, 00).strftime("%H:%M:%S") # 定义 集合竞价 开始后 时间 |
| | | opening_time = datetime.time(9, 30, 00).strftime("%H:%M:%S") # 定义开盘时间 |
| | | morn_market_time = datetime.time(9, 35, 00).strftime("%H:%M:%S") # 定义早盘时间 |
| | | noon_market_time = datetime.time(13, 5, 00).strftime("%H:%M:%S") # 定义午盘时间 |
| | | close_position_time = datetime.time(14, 55, 00).strftime("%H:%M:%S") # 定义平仓时间 |
| | | watch_disk_end_time = datetime.time(14, 56, 00).strftime("%H:%M:%S") # 定义 板上盯结束时间 |
| | | close_bidding_time = datetime.time(14, 57, 00).strftime("%H:%M:%S") # 定义 盘后 集合竞价 时间 |
| | | closing_time = datetime.time(15, 00, 00).strftime("%H:%M:%S") # 定义 收盘时间 |
| | | after_closing_time = datetime.time(15, 1, 00).strftime("%H:%M:%S") # 定义 收盘后时间 |
| | | checking_data_time = datetime.time(17, 00, 00).strftime("%H:%M:%S") # 定义 检查数据时间 |
| | | update_data_time = datetime.time(18, 31, 00).strftime("%H:%M:%S") # 定义更新数据时间 |
| | | program_sleep_time = datetime.time(23, 00, 00).strftime("%H:%M:%S") # 定义程序休眠时间 |
| | | now_time = datetime.datetime.now().strftime("%H:%M:%S") # 定义并实时获取 当前时间 |
| | | ''' |
| | | 设定常用时间点【常量】 |
| | | 字符串格式=="09:25:12" |
| | | ''' |
| | | |
| | | # 读取已经获取到并存储在本地的目标范围的个股的板块概念 |
| | | # 读取JSON文件并解析为字典 |
| | | if os.path.exists(constant.ALL_STOCKS_PLATE_PATH): |
| | | with open(constant.ALL_STOCKS_PLATE_PATH, 'r', |
| | | encoding='utf-8') as f: |
| | | json_data = f.read() |
| | | else: |
| | | json_data = "{}" |
| | | all_stocks_plate_dict = json.loads(json_data) |
| | | logger.info(f"all_stocks_plate_dict的数量={len(all_stocks_plate_dict)}") |
| | | SERVER_RESTART_TIME = "09:00:00" # 服务器重启时间 |
| | | L1_DATA_START_TIME = "09:15:00" # L1数据开始时间 |
| | | BEFORE_OPEN_BIDDING_TIME = "09:20:00" # 【盘前】集合竞价开始前时间 |
| | | OPEN_BIDDING_TIME = "09:25:00" # 【盘前】集合竞价开始时间 |
| | | LATER_OPEN_BIDDING_TIME = "09:25:06" # 【盘前】集合竞价开始后瞬间 |
| | | AFTER_OPEN_BIDDING_TIME = "09:25:12" # 【盘前】集合竞价开始后一会 |
| | | OPENING_TIME = "09:30:00" # 上午开盘时间 |
| | | MORN_MARKET_TIME = "09:35:00" # 早盘黄金五分钟 |
| | | MORN_MARKET_CLOSING_TIME = "11:30:00" # 上午收盘时间 |
| | | NOON_MARKET_OPENING_TIME = "13:00:00" # 下午开盘时间 |
| | | NOON_MARKET_TIME = "13:05:00" # 午盘黄金五分钟 |
| | | CLOSE_POSITION_TIME = "14:55:00" # 尾盘平仓时间 |
| | | WATCH_DISK_END_TIME = "14:56:00" # 板上盯结束时间 |
| | | CLOSE_BIDDING_TIME = "14:57:00" # 【盘后】集合竞价开始 |
| | | CLOSING_TIME = "15:00:00" # 定义 收盘时间 |
| | | AFTER_CLOSING_TIME = "15:01:00" # 下午收盘后时间 |
| | | CHECKING_DATA_TIME = "17:00:00" # 检查数据时间 |
| | | UPDATE_DATA_TIME = "18:31:00" # 更新数据时间 |
| | | PROGRAM_SLEEP_TIME = "22:00:00" # 程序休眠时间【不能在23点之后仍运行,获取到的数据可能有谬误】 |
| | | |
| | | # 初始化当日当时最高价 |
| | | high_price = 0 |
| | |
| | | yesterday_limit_up_code_list = [] |
| | | # 初始化开盘啦昨日炸板但通过K线数据计算涨停的股票代码列表 |
| | | yesterday_frying_plate_last_minute_list = [] |
| | | # 初始化每日涨停信息方法被执行记录 |
| | | # 初始化每日涨停信息方法 和 获取所有个股的板块概念 是否被执行 |
| | | execution = False |
| | | # 初始化 写入带属性指数K线的方法 是否被执行 |
| | | index_K_line_write_execution = False |
| | | # 初始化实时涨停概念板块 |
| | | limit_up_block_names = [] |
| | | # 初始化板块强度下的个股强度 |
| | | market_sift_plate_stock_dict = {} |
| | | # 初始化实时大盘行情市场情绪综合强度【完整】字典 |
| | | rise_and_fall_statistics_dirt = {} |
| | | # 初始化实时大盘行情情绪综合强度[分数] |
| | | real_time_market_strong = 0 |
| | | # 初始化实时大盘行情情绪综合强度分时列表 |
| | | time_sharing_market_strong_dirt = {} |
| | | # 初始化实时大盘行情市场情绪 涨跌统计 字典 |
| | | real_time_market_sentiment_dirt = {} |
| | | |
| | | # 为K线属性指标字典初始化 |
| | | # 为所有个股的带属性K线 字典初始化 |
| | | all_stocks_all_K_line_property_dict = {} |
| | | # 为指数的带属性K线 字典初始化 |
| | | all_index_k_line_property_dict = {} |
| | | # 为所有个股的所属板块概念字典初始化 |
| | | all_stocks_plate_dict = {} |
| | | # 声明K线属性中所有涨停类型 |
| | | limit_up_type = ['one_line_limit_up', 'limit_down_then_limit_up', 'limit_up_then_limit_down_then_limit_up', |
| | | 'limit_up'] |
| | |
| | | # 声明K线属性中所有炸板类型 |
| | | frying_plate_type = ['frying_plate', 'first_frying_plate', 'one_line_limit_up_then_frying_plate', |
| | | 'one_line_limit_up_then_frying_plate_then_limit_down', 'not_first_frying_plate'] |
| | | |
| | | # 定义一个当日分时内所有个股的开盘价字典 |
| | | all_stocks_current_open = {} |
| | | # 定义一个当日分时内所有个股的实时最高价和最低价字典 |
| | |
| | | usefulMoney = 0 |
| | | # 为当前账户全部【持仓信息】创建列表 |
| | | account_positions_dict = {} |
| | | # 下面三个集合是为了分类整理持仓字典数据,将各类持仓情况的数据整理为需要的集合 |
| | | # 为持仓代码创建一个初始集合 |
| | | position_symbols_set = set() |
| | | # 为当日可用持仓代码创建一个初始集合 |
| | |
| | | record_current_open_execution = False |
| | | # 定义一个实时计算最高价和最低价的函数是否在规定时间内启动 |
| | | record_high_and_low_execution = False |
| | | # 定义一个集合竞价后开盘前的逻辑是否只进入判断一次 |
| | | # later_open_bidding_time_is_entered = False ################## |
| | | # 定义一个集合竞价时间段条件分支逻辑的初始执行次数 |
| | | execution_times = 0 |
| | | # 定义一个有概念逻辑分支买入进入执行的初始化次数 |
| | |
| | | bought_plate = [] |
| | | # 持仓金额自动管理开关 |
| | | position_automatic_management_switch = True |
| | | # GUI手动设置的每次买入的金额 |
| | | BUY_MONEY_PER_CODE = -1 |
| | | # 初始化有概念买入金额 |
| | | have_plate_buy_money = 3000 |
| | | # 初始化有强度买入金额 |
| | | have_strength_buy_money = 3000 |
| | | # 开仓策略计算金额 |
| | | opening_strategy_results = 0 |
| | | # 今日第一次下单的金额 |
| | | today_first_planned_order_amount = 0 |
| | | # 今日计划下单金额 |
| | | today_planned_order_amount = 0 |
| | | |
| | |
| | | # {"code":(代码,昨日收盘价,最新价,总成交量,总成交额,买五档(价格,成交额),卖五档(价格,成交额),更新时间)} |
| | | latest_code_market_info_dict = {} |
| | | |
| | | # 主要指数 掘金代码 列表:[上证指数,深证成指,创业扳指,沪深300] |
| | | INDEX_SYMBOL_LIST = ['SHSE.000001', 'SZSE.399001', 'SZSE.399006', 'SHSE.000300'] |
| | | # 股票指数字典 例如:{"000001":(指数, 量, 额, 昨日收盘价)} |
| | | stock_index_dict = {} |
| | | # 上证指数 瞬时涨幅 |
| | |
| | | TSXV_today_growth = 0 |
| | | # 创业板指 开盘涨幅 |
| | | TSXV_open_growth = 0 |
| | | # 大盘指数情绪预期分数 |
| | | index_trend_expectation_score = 0 |
| | | # 理想交易行情比率分 满分=1 |
| | | ideal_trading_market_score = 1 |
| | | |
| | | # 可以板上盯卖的代码 |
| | | LIMIT_UP_SELL_CODES = set() |
| | | # L2炸板数据 |
| | | L2_explosion_data = {} |
| | | |
| | | # 最新的L1数据: {代码: L1数据} |
| | | current_l1_dict = {} |
| | | |
| | | # 最新成交价格 |
| | | latest_deal_price_dict = {} |
| | | |
| | | # 大单成交数据: {"代码":[大单数据1,大单数据2,...]} |
| | | big_order_deal_dict = {} |
| | | |
| | | # 有意购买的股票名称列表 |
| | | willing_buy_list = [] |
| | | |
| | | logging.info(f"全局初始化数据 完成《《《 - {os.getpid()}") |
| | | |
| | | |