"""
|
所有的变量
|
"""
|
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
|
|
# 大单个数: 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.六个交易日涨幅过高 = False
|
|
# ======历史K线属性======
|
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
|
|
# 当日板块涨停:{板块:[(代码, 涨停时间),(代码, 涨停时间)]}
|
self.板块涨停 = None
|
# 当日板块:{"板块1","板块2"}
|
self.代码板块 = None
|
|
# 板块成交代码:{"板块":{"代码1","代码2"}}
|
self.板块成交代码 = {}
|
|
|
|
|
|
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))
|