|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+{ 动态市场状态模型 }
|
|
|
2
|
+FS:=80;
|
|
|
3
|
+分数MIN:=IF(MACHINETIME<094500,FS-15,IF(MACHINETIME<100000,FS-10,IF(MACHINETIME<130000,FS-5,FS)));
|
|
|
4
|
+
|
|
|
5
|
+{ 市场牛熊判断 }
|
|
|
6
|
+N1:=21;
|
|
|
7
|
+N2:=55;
|
|
|
8
|
+VOL_RATIO:=1.2;
|
|
|
9
|
+ATR_PERIOD:=14;
|
|
|
10
|
+ANGLE:=5;
|
|
|
11
|
+
|
|
|
12
|
+EMA_INDEX:=EMA(INDEXC,N1);
|
|
|
13
|
+LONG_EMA_INDEX:=EMA(INDEXC,N2);
|
|
|
14
|
+TREND_ANGLE:=IF(REF(EMA_INDEX,5)!=0, ATAN((EMA_INDEX/REF(EMA_INDEX,5)-1)*100)*180/3.1416, 0);
|
|
|
15
|
+VOL_MA:=MA(INDEXV,N2);
|
|
|
16
|
+
|
|
|
17
|
+INDEX_ATR:=MA(TR,ATR_PERIOD);
|
|
|
18
|
+LOW_VOLATILITY:=INDEX_ATR/REF(INDEX_ATR,5)<0.7;
|
|
|
19
|
+
|
|
|
20
|
+COND_BULL:=
|
|
|
21
|
+ EMA_INDEX > LONG_EMA_INDEX AND
|
|
|
22
|
+ COUNT(TREND_ANGLE>ANGLE,3)>=2 AND
|
|
|
23
|
+ EVERY(INDEXV>VOL_MA*VOL_RATIO,3) AND
|
|
|
24
|
+ NOT(LOW_VOLATILITY);
|
|
|
25
|
+
|
|
|
26
|
+COND_BEAR:=
|
|
|
27
|
+ EMA_INDEX < LONG_EMA_INDEX AND
|
|
|
28
|
+ COUNT(TREND_ANGLE<-ANGLE,3)>=2 AND
|
|
|
29
|
+ EVERY(INDEXV<VOL_MA*0.7,3) AND
|
|
|
30
|
+ INDEX_ATR > REF(INDEX_ATR,5)*1.3;
|
|
|
31
|
+
|
|
|
32
|
+HY_EMA:=EMA(HY_INDEXC,N1);
|
|
|
33
|
+HY_TREND_ANGLE:= IF(REF(HY_EMA,5)!=0, ATAN((HY_EMA/REF(HY_EMA,5)-1)*100)*180/3.1416, 0);
|
|
|
34
|
+STRONG_INDUSTRY:=
|
|
|
35
|
+ HY_EMA > EMA(HY_INDEXC,N2) AND
|
|
|
36
|
+ HY_TREND_ANGLE > ANGLE AND
|
|
|
37
|
+ COUNT(HY_INDEXV>MA(HY_INDEXV,N2)*VOL_RATIO,5)>=3;
|
|
|
38
|
+
|
|
|
39
|
+WEAK_INDUSTRY:=
|
|
|
40
|
+ HY_EMA < EMA(HY_INDEXC,N2) AND
|
|
|
41
|
+ HY_TREND_ANGLE < -ANGLE AND
|
|
|
42
|
+ MA(HY_INDEXV,N2)/REF(MA(HY_INDEXV,N2),5)<0.8;
|
|
|
43
|
+
|
|
|
44
|
+HS300C:="399300$CLOSE";
|
|
|
45
|
+REL_STR:=IF(REF(C,N1)!=0 AND REF(HS300C,N1)!=0, (C/REF(C,N1)) / (HS300C/REF(HS300C,N1)) - 1, 0);
|
|
|
46
|
+IND_BULL:=FILTER(REL_STR>0.12 AND REL_STR>REF(REL_STR,1),3);
|
|
|
47
|
+IND_BEAR:=FILTER(REL_STR<-0.18 AND REL_STR<REF(REL_STR,1),3);
|
|
|
48
|
+
|
|
|
49
|
+WEEK_EMA:=EMA(C#WEEK,5);
|
|
|
50
|
+WEEK_TREND:=WEEK_EMA>REF(WEEK_EMA,3);
|
|
|
51
|
+
|
|
|
52
|
+BULL_SCORE:=(COND_BULL + STRONG_INDUSTRY + IND_BULL + WEEK_TREND)>=3;
|
|
|
53
|
+BEAR_SCORE:=(COND_BEAR + WEAK_INDUSTRY + IND_BEAR + NOT(WEEK_TREND))>=3;
|
|
|
54
|
+
|
|
|
55
|
+MARKET:=IF(BULL_SCORE,1, IF(BEAR_SCORE,2,3));{1:牛市,2:熊市,3:震荡市或不确定};
|
|
|
56
|
+
|
|
|
57
|
+{ 动态权重 - 根据市场强度调整 }
|
|
|
58
|
+牛熊强度:=EMA_INDEX/LONG_EMA_INDEX-1;
|
|
|
59
|
+权重主力 :=IF(MARKET==1, 50*(1+牛熊强度), IF(MARKET==3,35,40));
|
|
|
60
|
+权重量价 :=IF(MARKET==1, 20, IF(MARKET==3, 5,10));
|
|
|
61
|
+权重板块 :=IF(MARKET==1, 30*(1+牛熊强度/2), IF(MARKET==3,15,30));
|
|
|
62
|
+权重资效 :=IF(MARKET==1, 0, IF(MARKET==3,20,5));
|
|
|
63
|
+权重波动 := IF(MARKET==1, 0, IF(MARKET==3,10,5));
|
|
|
64
|
+权重趋势 := IF(MARKET==1, 0, IF(MARKET==3,5,5));
|
|
|
65
|
+权重风险 := IF(MARKET==1, 0, IF(MARKET==3,10,5));
|
|
|
66
|
+
|
|
|
67
|
+{ 主力资金增强 - 加入北向资金 }
|
|
|
68
|
+
|
|
|
69
|
+北向占比1:= GPJYVALUE(6,1,1);
|
|
|
70
|
+北向占比2:=IF(STRCMP(北向占比1,'-')=0,0,IF(北向占比1>0,北向占比1/CAPITAL,0)); { 深沪股通持股比例 }
|
|
|
71
|
+
|
|
|
72
|
+
|
|
|
73
|
+权重DDX:=IF(北向占比2=0,权重主力*0.6,权重主力*0.5);
|
|
|
74
|
+权重DDY:=IF(北向占比2=0,权重主力*0.4,权重主力*0.3);
|
|
|
75
|
+权重北向:=IF(北向占比2=0,0,权重主力*0.2);
|
|
|
76
|
+
|
|
|
77
|
+_DDX:=(LARGEINTRDVOL-LARGEOUTTRDVOL)*10000/CAPITAL;
|
|
|
78
|
+_DDY:=IF(TRADENUM>0,(TRADEOUTNUM-TRADEINNUM)*100/TRADENUM,0);
|
|
|
79
|
+
|
|
|
80
|
+资金分DDX:= 权重DDX * MIN(1, MAX(0, (_DDX - 0.3)/(1.4 - 0.3)));
|
|
|
81
|
+资金分DDY:= 权重DDY * MIN(1, MAX(0, (_DDY - 10)/(30 - 10)));
|
|
|
82
|
+资金分北向:= 权重北向 * MIN(1, MAX(0, 北向占比2/3)); { 3%为阈值 }
|
|
|
83
|
+资金分:资金分DDX + 资金分DDY + 资金分北向;
|
|
|
84
|
+
|
|
|
85
|
+{ 量价模型优化 - 解决早盘失效 }
|
|
|
86
|
+量比:=V/REF(MA(V,5),1);
|
|
|
87
|
+量比MIN:=IF(MACHINETIME<100000,2.5,IF(MACHINETIME<143000,2,1.8)); { 调整量比阈值 }
|
|
|
88
|
+量比判断:=量比 > 量比MIN;
|
|
|
89
|
+
|
|
|
90
|
+现价:=C;
|
|
|
91
|
+分时均价:=IF(MACHINETIME>093000, DYNAINFO(11), REF(DYNAINFO(11),1)); { 早盘用前日数据 }
|
|
|
92
|
+
|
|
|
93
|
+日内涨幅:=(C-OPEN)/OPEN*100;
|
|
|
94
|
+早盘涨幅:=IF(MACHINETIME<100000, 日内涨幅>1.5, 日内涨幅 > REF(MA(日内涨幅,5),1) AND 日内涨幅 > REF(日内涨幅,1)); { 分段处理 }
|
|
|
95
|
+
|
|
|
96
|
+LC:=REF(CLOSE,1);
|
|
|
97
|
+RSI_VAL:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
|
|
|
98
|
+RSI上限:=70;
|
|
|
99
|
+
|
|
|
100
|
+OBV_VAL:=SUM(IF(C>REF(C,1),V,IF(C<REF(C,1),-V,0)),0);
|
|
|
101
|
+OBV_MA:=MA(OBV_VAL,5);
|
|
|
102
|
+OBV确认:=OBV_VAL > OBV_MA;
|
|
|
103
|
+
|
|
|
104
|
+量价初始分:=IF(量比判断, 权重量价*0.3, 0) +
|
|
|
105
|
+ IF(现价>分时均价, 权重量价*0.3 , 0) +
|
|
|
106
|
+ IF(早盘涨幅, 权重量价*0.2, 0) +
|
|
|
107
|
+ IF(OBV确认, 权重量价*0.2, 0);
|
|
|
108
|
+量价分:IF(MARKET=1, 量价初始分, IF(RSI_VAL<RSI上限, 量价初始分, 0));
|
|
|
109
|
+
|
|
|
110
|
+{ 行业排名使用内置函数 }
|
|
|
111
|
+行业排名:=HORCALC(HYBLOCK, 105, 1, 0);
|
|
|
112
|
+行业热度:=HORCALC(HYBLOCK, 105, 2, 0)*100;
|
|
|
113
|
+
|
|
|
114
|
+板块分:IF(行业热度>=0,
|
|
|
115
|
+ ROUND(
|
|
|
116
|
+ IF(行业排名<=2, 权重板块*0.6,
|
|
|
117
|
+ IF(行业排名<=3, 权重板块*0.5,
|
|
|
118
|
+ IF(行业排名<=5, 权重板块*0.4,
|
|
|
119
|
+ IF(行业排名<=10, 权重板块*0.2,
|
|
|
120
|
+ IF(行业排名<=20, 权重板块*0.1,
|
|
|
121
|
+ 0)))))
|
|
|
122
|
+ + IF(行业热度>=3, 权重板块*0.4,
|
|
|
123
|
+ IF(行业热度>=2, 权重板块*0.3,
|
|
|
124
|
+ IF(行业热度>=1, 权重板块*0.2,
|
|
|
125
|
+ 0)))),
|
|
|
126
|
+ 0);
|
|
|
127
|
+
|
|
|
128
|
+{ 资金效率优化 }
|
|
|
129
|
+成交额万元 := AMOUNT/10000;
|
|
|
130
|
+行业平均涨幅 := 100 * HORCALC(HYBLOCK, 105, 2, 0);
|
|
|
131
|
+当前涨幅:=(C-REF(C,1))/REF(C,1)*100;
|
|
|
132
|
+超额涨幅 := 当前涨幅 - 行业平均涨幅;
|
|
|
133
|
+阈值 := MA(AMOUNT,20)/1000000; { 调整为百万元 }
|
|
|
134
|
+资金效率 := IF(成交额万元 > 阈值 AND 成交额万元 > 0, 超额涨幅 / LOG(成交额万元), 0);
|
|
|
135
|
+资效分:IF(资金效率 >= 2, 权重资效,
|
|
|
136
|
+ IF(资金效率 >= 1.5, 权重资效*0.8,
|
|
|
137
|
+ IF(资金效率 >= 1.0, 权重资效*0.6,
|
|
|
138
|
+ IF(资金效率 >= 0.5, 权重资效*0.4,
|
|
|
139
|
+ 0))));
|
|
|
140
|
+
|
|
|
141
|
+{ 波动率模型改进 }
|
|
|
142
|
+日收益率 := IF(REF(C,1)!=0, C/REF(C,1)-1, 0);
|
|
|
143
|
+真实波幅:=MAX(MAX(H-L,ABS(H-REF(C,1))),ABS(L-REF(C,1)));
|
|
|
144
|
+波动率:=MA(真实波幅,20)/REF(C,20); { ATR相对波动率 }
|
|
|
145
|
+VAR1:= -1.645 * 波动率 * SQRT(126); { 半年周期 }
|
|
|
146
|
+波动分 : IF(VAR1 > -0.05, 权重波动,
|
|
|
147
|
+IF(VAR1 > -0.1, 权重波动*0.8,
|
|
|
148
|
+IF(VAR1 > -0.15, 权重波动*0.6,
|
|
|
149
|
+IF(VAR1 > -0.2, 权重波动*0.4, 0))));
|
|
|
150
|
+
|
|
|
151
|
+{ 趋势判断增加流动性 }
|
|
|
152
|
+MID:=MA(C,20);
|
|
|
153
|
+UPPER:=MID + 2*STD(C,20);
|
|
|
154
|
+短期穿越1:= C > MA(C,5);
|
|
|
155
|
+短期穿越2:= MA(C,5) > MA(C,10);
|
|
|
156
|
+短期穿越3:= MA(C,10) > MA(C,20);
|
|
|
157
|
+BOLL穿越:=C > UPPER;
|
|
|
158
|
+
|
|
|
159
|
+{ 流动性风控 }
|
|
|
160
|
+流通市值:=FINANCE(40)/100000000;
|
|
|
161
|
+挂单厚度:=(DYNAINFO(58)+DYNAINFO(59))/CAPITAL;
|
|
|
162
|
+换手率条件:=DYNAINFO(37)>0.5 AND 流通市值>30 AND 挂单厚度>15; { 综合流动性 }
|
|
|
163
|
+
|
|
|
164
|
+趋势分1:IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3 AND BOLL穿越, 权重趋势,
|
|
|
165
|
+IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3, 权重趋势*0.8,
|
|
|
166
|
+IF(换手率条件 AND 短期穿越1 AND 短期穿越2, 权重趋势*0.5,
|
|
|
167
|
+IF(换手率条件 AND 短期穿越1, 权重趋势*0.2,
|
|
|
168
|
+0))));
|
|
|
169
|
+
|
|
|
170
|
+DIFF := EMA(C,12) - EMA(C,26);
|
|
|
171
|
+DEA := EMA(DIFF,9);
|
|
|
172
|
+MACD确认 := CROSS(DIFF,DEA) AND BARSLAST(CROSS(DEA,DIFF))>5;
|
|
|
173
|
+趋势分2 :=趋势分1 * IF(MACD确认, 1.2, 1);
|
|
|
174
|
+趋势分:IF(趋势分2> 权重趋势, 权重趋势, 趋势分2);
|
|
|
175
|
+
|
|
|
176
|
+
|
|
|
177
|
+{ 风险控制增强 }
|
|
|
178
|
+大盘趋势:=INDEXC > MA(INDEXC,50) AND (DYNAINFO(60)/(DYNAINFO(60)+DYNAINFO(61)))>0.3;
|
|
|
179
|
+流通市值达标:=流通市值>30; { 提高市值门槛 }
|
|
|
180
|
+市盈率条件:=IF(STRCMP(DYNAINFO(39),'-')=0,0,IF(DYNAINFO(39)>0 AND DYNAINFO(39)<=50,1,0)); { 动态PE<50 }
|
|
|
181
|
+
|
|
|
182
|
+{ 增加财务因子 }
|
|
|
183
|
+ROE连续:=COUNT(FINANCE(30)>15,4)=4; { 近4年ROE>15% }
|
|
|
184
|
+研发占比:=FINANCE(64)/AMOUNT>0.05; { 研发费用率>5% }
|
|
|
185
|
+
|
|
|
186
|
+风险分:IF(SAFESCORE>80,
|
|
|
187
|
+ IF(流通市值达标, 权重风险*0.2, 0)
|
|
|
188
|
+ + IF(市盈率条件, 权重风险*0.2, 0)
|
|
|
189
|
+ + IF(大盘趋势, 权重风险*0.2, 0)
|
|
|
190
|
+ + IF(ROE连续, 权重风险*0.2, 0)
|
|
|
191
|
+ + IF(研发占比, 权重风险*0.2, 0)
|
|
|
192
|
+ ,0);
|
|
|
193
|
+
|
|
|
194
|
+{ 其他过滤 }
|
|
|
195
|
+量比下限:=0.8;
|
|
|
196
|
+市盈率极限:=IF(STRCMP(DYNAINFO(39),'-')=0 OR DYNAINFO(39)<=0 OR DYNAINFO(39)>300,1,0);
|
|
|
197
|
+其他分:IF(量比<=量比下限,-10,0)+IF(市盈率极限,-10,0);
|
|
|
198
|
+
|
|
|
199
|
+{ 股票池过滤 }
|
|
|
200
|
+沪市主板:=CODELIKE('60') AND NOT(CODELIKE('688'));
|
|
|
201
|
+深市主板:=CODELIKE('000') OR CODELIKE('001') OR CODELIKE('002') OR CODELIKE('30');
|
|
|
202
|
+有效代码:=(沪市主板 OR 深市主板) AND NOT(NAMELIKE('ST')) AND NOT(NAMELIKE('*'));
|
|
|
203
|
+
|
|
|
204
|
+{ 总分计算 }
|
|
|
205
|
+信号强度初始:= (资金分 + 量价分 + 板块分 + 资效分 + 波动分 + 趋势分 + 风险分 + 其他分) * 有效代码;
|
|
|
206
|
+信号强度:MAX(MIN(信号强度初始,100),0);
|
|
|
207
|
+
|
|
|
208
|
+买入阈值:=分数MIN + 5*(MARKET-2);
|
|
|
209
|
+
|
|
|
210
|
+{ 买入条件优化 }
|
|
|
211
|
+最高涨幅:=(H-REF(C,1))/REF(C,1)*100;
|
|
|
212
|
+涨幅上限:=IF((CODELIKE('688') OR CODELIKE('30')), 12, 6);
|
|
|
213
|
+流动性达标:=挂单厚度>20 AND 流通市值>30;
|
|
|
214
|
+{熔断条件}
|
|
|
215
|
+熔断条件:= (INDEXC/REF(INDEXC,5)-1)*100 < -2;{ 大盘瞬间暴跌停止买入建议 }
|
|
|
216
|
+
|
|
|
217
|
+买入信号:=信号强度>=买入阈值 AND 最高涨幅<涨幅上限 AND 流动性达标 AND NOT(熔断条件);
|