""" 所有的变量 """ import ast 大单表达式 = "299e4" class StockVariables: """ 股票变量实体类 """ def __init__(self): # =======股票属性======= self.自由流通市值 = None # ======今日K线属性====== self.今日开盘价 = None self.当前价 = None self.今日最高价信息 = None self.今日涨停价 = None self.今日成交量 = None self.今日成交额 = None self.今日开盘涨幅 = None self.今日分时最高量价 = None self.今日最低价 = None # (时间,涨幅) self.今日量够信息 = None # ========今日大单成交数据======= self.大单表达式 = None # [(订单号, 量, 金额, 时间, 最新价格)] self.今日大单数据 = None self.今日大单均价 = None self.今日卖大单数据 = None # 大单个数: len([for x in 今日大单数据 if x[2] > (大单表达式)]) # 满足单价的大单个数: len([for x in 今日大单数据 if (x[2] > (大单表达式) and x[2]/x[1] > ?)]) # =======昨日K线属性====== self.昨日收盘价 = None self.昨日非涨停 = None self.昨日非跌停 = None self.昨日非炸板 = None self.昨日成交量 = None self.昨日成交额 = None self.昨日最高价 = None self.昨日分时最高量价 = None self.昨日最低价 = None self.昨日开盘价 = None self.六个交易日涨幅过高 = False # ======历史K线属性====== self.日最高价_3 = None self.日最高价_5 = None self.日最高价_10 = None self.日最高价_30 = None self.日最高价_60 = None self.日最高价_120 = None self.日最高量_5 = None self.日最高量_10 = None self.日最高量_30 = None self.日最高量_60 = None self.日最高量_120 = None # 0-今日 1-昨日 5-5日内 10-10日 30-30日 60-60日 # 5日高量分时最高量价 self.日高量分时最高量价_5 = None self.日高量分时最高量价_10 = None self.日高量分时最高量价_30 = None self.日高量分时最高量价_60 = None self.日高量分时最高量价_120 = None # 5,10,30,60,120涨停数,炸板数,跌停数 self.涨停数_5 = None self.涨停数_10 = None self.涨停数_30 = None self.涨停数_60 = None self.涨停数_120 = None self.炸板数_5 = None self.炸板数_10 = None self.炸板数_30 = None self.炸板数_60 = None self.炸板数_120 = None self.跌停数_5 = None self.跌停数_10 = None self.跌停数_30 = None self.跌停数_60 = None self.跌停数_120 = None # 首板平均溢价率(后一个交易日最高价计算) self.日首板溢价率_5 = None self.日首板溢价率_10 = None self.日首板溢价率_30 = None self.日首板溢价率_60 = None self.日首板溢价率_120 = None # 首板炸板平均溢价率(后一个交易日最高价计算) self.日首板炸板溢价率_5 = None self.日首板炸板溢价率_10 = None self.日首板炸板溢价率_30 = None self.日首板炸板溢价率_60 = None self.日首板炸板溢价率_120 = None # xx日内个股最正的原因(涨停数相同可并列) self.日个股最正的原因_5 = None self.日个股最正的原因_10 = None self.日个股最正的原因_30 = None self.日个股最正的原因_60 = None self.日个股最正的原因_120 = None # xx日内首板个数 self.日首板个数_5 = None self.日首板个数_10 = None self.日首板个数_30 = None self.日首板个数_60 = None self.日首板个数_120 = None # xx日内2板个数 self.日二板个数_5 = None self.日二板个数_10 = None self.日二板个数_30 = None self.日二板个数_60 = None self.日二板个数_120 = None # xx日内3板个数 self.日三板个数_5 = None self.日三板个数_10 = None self.日三板个数_30 = None self.日三板个数_60 = None self.日三板个数_120 = None # xx日内>=4板个数 self.日大等于四板个数_5 = None self.日大等于四板个数_10 = None self.日大等于四板个数_30 = None self.日大等于四板个数_60 = None self.日大等于四板个数_120 = None # xx日内首次跌停 self.日首跌停个数_5 = None self.日首跌停个数_10 = None self.日首跌停个数_30 = None self.日首跌停个数_60 = None self.日首跌停个数_120 = None # xx日内连续2次跌停 self.日2次跌停个数_5 = None self.日2次跌停个数_10 = None self.日2次跌停个数_30 = None self.日2次跌停个数_60 = None self.日2次跌停个数_120 = None # xx日内连续3次跌停 self.日3次跌停个数_5 = None self.日3次跌停个数_10 = None self.日3次跌停个数_30 = None self.日3次跌停个数_60 = None self.日3次跌停个数_120 = None # xx日内连续>=4次跌停 self.日大等于4次跌停个数_5 = None self.日大等于4次跌停个数_10 = None self.日大等于4次跌停个数_30 = None self.日大等于4次跌停个数_60 = None self.日大等于4次跌停个数_120 = None # xx日内最正原因在xx日出现的天数 self.日最正原因出现的天数_5 = None self.日最正原因出现的天数_10 = None self.日最正原因出现的天数_30 = None self.日最正原因出现的天数_60 = None self.日最正原因出现的天数_120 = None # 最近xx个交易日出现的板块 self.日出现的板块_2 = None self.日出现的板块_5 = None self.日出现的板块_10 = None self.日出现的板块_30 = None self.日出现的板块_60 = None self.日出现的板块_120 = None # 最近xx个交易日出现倍量的日期 self.日放倍量日期_5 = None self.日放倍量日期_10 = None self.日放倍量日期_15 = None self.日放倍量日期_30 = None self.日放倍量日期_60 = None self.日放倍量日期_120 = None # 当日板块涨停:{板块:[(代码, 涨停时间),(代码, 涨停时间)]} self.板块涨停 = None self.开盘啦板块涨停 = None self.开盘啦领涨板块涨停 = None self.开盘啦精选板块涨停 = None self.开盘啦最正板块涨停 = None # 当日板块:{"板块1","板块2"} self.代码板块 = None self.新代码板块 = None self.代码精选板块 = None # 板块成交代码:{"板块":{"代码1","代码2"}} self.板块成交代码 = {} self.成交代码 = set() # 流入板块 self.资金流入板块 = [] self.辨识度代码 = set() self.领涨板块信息 = set() self.连续老题材 = set() def replace_variables(self, expression): """ 将表达式中的变量名替换为对应的属性值 :param expression: 包含变量名的字符串表达式 :return: 替换后的表达式 """ for attr in dir(self): if not attr.startswith('_') and hasattr(self, attr): value = getattr(self, attr) if value is not None: expression = expression.replace(attr, str(value)) return expression def get_all_variables(self): attr_set = set() for attr in dir(self): if not attr.startswith('_') and hasattr(self, attr): attr_set.add(attr) return attr_set if __name__ == "__main__": print(StockVariables().get_all_variables()) express = StockVariables.builder().三十日最高量("15541").当前价(1.0).build().replace_variables( "len([x for x in [1,2,3] if x>1])") print(len([x for x in [1, 2, 3] if x > 1])) print(eval(express))