Administrator
2025-06-12 ab662be5c523b75c1bd28fc6bfcab2872b9623b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
"""
所有的变量
"""
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))