chengjie vor 3 Monaten
Ursprung
Commit
53bbf33ac1

+ 0 - 32
src/test/data.txt

@@ -1,32 +0,0 @@
1
-{=== 参数区:手动改这里 ===}
2
-BUY_PRICE:=10.50;     {买入均价}
3
-STOP_PROFIT:=0.05;    {止盈5%}
4
-STOP_LOSS:=0.03;      {止损3%}
5
-
6
-
7
-{=== 大盘数据 ===}
8
-DP_ZDF:=(INDEXC-REF(INDEXC,1))/REF(INDEXC,1)*100;
9
-
10
-{=== 股票数据 ===}
11
-CUR_ZDF:=(C-REF(C,1))/REF(C,1)*100;
12
-
13
-{=== 止盈止损价 ===}
14
-Z_Y:=BUY_PRICE*(1+STOP_PROFIT);
15
-Z_S:=BUY_PRICE*(1-STOP_LOSS);
16
-
17
-{=== 次日情景模拟 ===}
18
-G1:=C*1.01; G2:=C*1.02; G3:=C*1.03;
19
-D1:=C*0.99; D2:=C*0.98; D3:=C*0.97;
20
-
21
-SELL_SIGNAL(P):=IF(P>=Z_Y,1,IF(P<=Z_S,-1,IF(DP_ZDF<0,-1,2)));
22
-
23
-DRAWTEXT_FIX(1,0.00,0.10,0,'高开1%:'+NUMTOSTR(SELL_SIGNAL(G1),0)),COLORWHITE;
24
-DRAWTEXT_FIX(1,0.00,0.15,0,'高开2%:'+NUMTOSTR(SELL_SIGNAL(G2),0)),COLORWHITE;
25
-DRAWTEXT_FIX(1,0.00,0.20,0,'高开3%:'+NUMTOSTR(SELL_SIGNAL(G3),0)),COLORWHITE;
26
-DRAWTEXT_FIX(1,0.00,0.25,0,'低开1%:'+NUMTOSTR(SELL_SIGNAL(D1),0)),COLORWHITE;
27
-DRAWTEXT_FIX(1,0.00,0.30,0,'低开2%:'+NUMTOSTR(SELL_SIGNAL(D2),0)),COLORWHITE;
28
-DRAWTEXT_FIX(1,0.00,0.35,0,'低开3%:'+NUMTOSTR(SELL_SIGNAL(D3),0)),COLORWHITE;
29
-
30
-{=== 止盈止损线 ===}
31
-STICKLINE(1,Z_Y,Z_Y,3,0),COLORGREEN;
32
-STICKLINE(1,Z_S,Z_S,3,0),COLORRED;

+ 187 - 0
src/test/通达信公式1.txt

@@ -0,0 +1,187 @@
1
+FS:=80;
2
+分数MIN:=IF(MACHINETIME<094500,FS-15,IF(MACHINETIME<100000,FS-10,IF(MACHINETIME<130000,FS-5,FS)));
3
+
4
+{多维度市场牛熊状态模型}
5
+N1:=21;
6
+N2:=55;
7
+VOL_RATIO:=1.2;
8
+ATR_PERIOD:=14;
9
+ANGLE:=5;
10
+
11
+EMA_INDEX:=EMA(INDEXC,N1);
12
+LONG_EMA_INDEX:=EMA(INDEXC,N2);
13
+TREND_ANGLE:=IF(REF(EMA_INDEX,5)!=0, ATAN((EMA_INDEX/REF(EMA_INDEX,5)-1)*100)*180/3.1416, 0);
14
+VOL_MA:=MA(INDEXV,N2);
15
+
16
+INDEX_ATR:=MA(TR,ATR_PERIOD);
17
+LOW_VOLATILITY:=INDEX_ATR/REF(INDEX_ATR,5)<0.7;
18
+
19
+COND_BULL:=
20
+    EMA_INDEX > LONG_EMA_INDEX AND
21
+    COUNT(TREND_ANGLE>ANGLE,3)>=2 AND 
22
+    EVERY(INDEXV>VOL_MA*VOL_RATIO,3) AND 
23
+    NOT(LOW_VOLATILITY);
24
+
25
+COND_BEAR:=
26
+    EMA_INDEX < LONG_EMA_INDEX AND
27
+    COUNT(TREND_ANGLE<-ANGLE,3)>=2 AND
28
+    EVERY(INDEXV<VOL_MA*0.7,3) AND
29
+    INDEX_ATR > REF(INDEX_ATR,5)*1.3;
30
+
31
+HY_EMA:=EMA(HY_INDEXC,N1);
32
+HY_TREND_ANGLE:= IF(REF(HY_EMA,5)!=0, ATAN((HY_EMA/REF(HY_EMA,5)-1)*100)*180/3.1416, 0);
33
+STRONG_INDUSTRY:=
34
+    HY_EMA > EMA(HY_INDEXC,N2) AND
35
+    HY_TREND_ANGLE > ANGLE AND
36
+    COUNT(HY_INDEXV>MA(HY_INDEXV,N2)*VOL_RATIO,5)>=3;
37
+
38
+WEAK_INDUSTRY:=
39
+    HY_EMA < EMA(HY_INDEXC,N2) AND
40
+    HY_TREND_ANGLE < -ANGLE AND
41
+    MA(HY_INDEXV,N2)/REF(MA(HY_INDEXV,N2),5)<0.8;
42
+
43
+HS300C:="399300$CLOSE";
44
+REL_STR:=IF(REF(C,N1)!=0 AND REF(HS300C,N1)!=0, (C/REF(C,N1)) / (HS300C/REF(HS300C,N1)) - 1, 0);
45
+IND_BULL:=FILTER(REL_STR>0.12 AND REL_STR>REF(REL_STR,1),3);
46
+IND_BEAR:=FILTER(REL_STR<-0.18 AND REL_STR<REF(REL_STR,1),3);
47
+
48
+WEEK_EMA:=EMA(C#WEEK,5);
49
+WEEK_TREND:=WEEK_EMA>REF(WEEK_EMA,3);
50
+
51
+BULL_SCORE:=(COND_BULL + STRONG_INDUSTRY + IND_BULL + WEEK_TREND)>=3;
52
+BEAR_SCORE:=(COND_BEAR + WEAK_INDUSTRY + IND_BEAR + NOT(WEEK_TREND))>=3;
53
+
54
+MARKET:=IF(BULL_SCORE,1, IF(BEAR_SCORE,2,3));{1:牛市,2:熊市,3:震荡市或不确定};
55
+
56
+{动态阈值设定,满分100}
57
+
58
+权重主力 :=IF(MARKET==1,	50, IF(MARKET==3,		35,		40));
59
+权重量价 :=IF(MARKET==1,	20, IF(MARKET==3,		 5,		10));
60
+权重板块 :=IF(MARKET==1,	30, IF(MARKET==3,		15,		30));
61
+权重资效 :=IF(MARKET==1,	 0, IF(MARKET==3,		20,		5));
62
+权重波动 := IF(MARKET==1,	 0, IF(MARKET==3,		10,		5));
63
+权重趋势 := IF(MARKET==1,	 0, IF(MARKET==3,		5,		5));
64
+权重风险 := IF(MARKET==1, 	 0, IF(MARKET==3,		10,		5));
65
+
66
+{主力资金动态捕捉}
67
+权重DDX:=权重主力*0.6;
68
+权重DDY:=权重主力*0.4;
69
+
70
+
71
+_DDX:=(LARGEINTRDVOL-LARGEOUTTRDVOL)*10000/FINANCE(7);
72
+_DDY:=IF(TRADENUM>0,(TRADEOUTNUM-TRADEINNUM)*100/TRADENUM,0);
73
+
74
+资金分DDX:= 权重DDX * MIN(1, MAX(0, (_DDX - 0.3)/(1.4 - 0.3)));
75
+资金分DDY:= 权重DDY * MIN(1, MAX(0, (_DDY - 10)/(30 - 10)));
76
+
77
+资金分:=资金分DDX + 资金分DDY;
78
+
79
+{量价动能共振模型}
80
+量比:=DYNAINFO(17);
81
+量比MIN:=IF (TIME<1000,3,IF (TIME<1430, 2, 1.5));
82
+量比判断:=量比 > 量比MIN;
83
+
84
+现价:=DYNAINFO(7);
85
+分时均价:=DYNAINFO(11);
86
+
87
+日内涨幅:=(C-OPEN)/OPEN*100; {聚焦日内}
88
+涨幅扩大:=日内涨幅 > MA(日内涨幅,5) AND 日内涨幅 > REF(日内涨幅,1);
89
+
90
+LC:=REF(CLOSE,1);
91
+RSI_VAL:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),14,1)*100;
92
+RSI上限:=70;
93
+
94
+OBV_VAL:=SUM(IF(C>REF(C,1),VOL,IF(C<REF(C,1),-VOL,0)),0);
95
+OBV_MA:=MA(OBV_VAL,5);
96
+OBV确认:=OBV_VAL > OBV_MA;
97
+
98
+量价初始分:=IF(量比判断, 权重量价*0.3, 0)  + IF(现价>分时均价, 权重量价*0.3 , 0)  + IF(涨幅扩大, 权重量价*0.2, 0) + IF(OBV确认, 权重量价*0.2, 0);
99
+量价分:=IF(MARKET==1, 量价初始分, IF(RSI_VAL<RSI上限,	量价初始分,	0));
100
+
101
+{板块效应强化机制}
102
+行业排名:=HORCALC(HYBLOCK, 105, 1, 0);
103
+行业热度:=HORCALC(HYBLOCK, 105, 2, 0)*100;
104
+
105
+板块分:=IF(行业热度>=0, 
106
+		ROUND(
107
+		IF(行业排名<=2, 权重板块*0.6, 
108
+		IF(行业排名<=3, 权重板块*0.5, 
109
+		IF(行业排名<=5, 权重板块*0.4, 
110
+		IF(行业排名<=10, 权重板块*0.2, 
111
+		IF(行业排名<=20, 权重板块*0.1, 
112
+		0)))))
113
+          + IF(行业热度>=3, 权重板块*0.4, 
114
+			IF(行业热度>=2, 权重板块*0.3,  
115
+			IF(行业热度>=1, 权重板块*0.2, 
116
+		0)))),
117
+		0);
118
+
119
+{资金效率筛选}
120
+成交额万元 := DYNAINFO(10)/10000;  
121
+行业平均涨幅 := 100 * HORCALC(HYBLOCK, 105, 2, 0);
122
+当前涨幅:=(C-REF(C,1))/REF(C,1)*100;
123
+超额涨幅 := 当前涨幅 - 行业平均涨幅; 
124
+阈值 := MA(VOL,20)/10000;
125
+资金效率 := IF(成交额万元 > 阈值 AND 成交额万元 > 0, 超额涨幅 / LOG(成交额万元), 0);  
126
+资效分:=IF(资金效率 >= 2, 权重资效, 
127
+		IF(资金效率 >= 1.5, 权重资效*0.8, 
128
+		IF(资金效率 >= 1.0, 权重资效*0.6, 
129
+		IF(资金效率 >= 0.5, 权重资效*0.4, 
130
+		0)))); 
131
+
132
+{波动筛选}
133
+日收益率 := IF(REF(C,1)!=0, C/REF(C,1)-1, 0);
134
+波动率:=STD(日收益率,20);
135
+VAR1:= -1.645 * 波动率 * SQRT(252);  {95%置信水平}
136
+波动分 := IF(VAR1 > -0.05, 权重波动,
137
+IF(VAR1 > -0.1, 权重波动*0.8,
138
+IF(VAR1 > -0.15, 权重波动*0.6,
139
+IF(VAR1 > -0.2, 权重波动*0.4, 0))));
140
+
141
+{趋势判断}
142
+MID:=MA(C,20);
143
+UPPER:=MID + 2*STD(C,20);
144
+短期穿越1:= 现价 > MA(C,5);
145
+短期穿越2:= MA(C,5) > MA(C,10);
146
+短期穿越3:= MA(C,10) > MA(C,20);
147
+BOLL穿越:=现价 > UPPER;
148
+换手率下限:=IF (MACHINETIME<094500,0.5,IF (MACHINETIME<100000, 0.5, 0.5));
149
+换手率条件:=DYNAINFO(36)>换手率下限;
150
+趋势分:=IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3 AND BOLL穿越, 权重趋势,
151
+IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3, 权重趋势*0.8,
152
+IF(换手率条件 AND 短期穿越1 AND 短期穿越2, 权重趋势*0.5,
153
+IF(换手率条件 AND 短期穿越1, 权重趋势*0.2,
154
+0))));
155
+
156
+{风险控制与信号强化}
157
+大盘趋势:=INDEXC > MA(INDEXC,50) AND (DYNAINFO(60)/(DYNAINFO(60)+DYNAINFO(61)))>0.3;
158
+流通市值过滤:=FINANCE(40)/100000000;
159
+流通市值达标:=流通市值过滤>10;
160
+市盈率条件:=IF(DYNAINFO(40)>0 AND DYNAINFO(40)<=HYSYL*1.1,1,0);
161
+风险分:=IF(SAFESCORE>80,
162
+			IF(流通市值达标, 权重风险*0.2, 0) 
163
+          + IF(市盈率条件, 权重风险*0.3, 0) 
164
+          + IF(大盘趋势, 权重风险*0.5, 0)
165
+		,0);
166
+
167
+{量比过小不买}
168
+量比下限:=0.8;
169
+市盈率极限:=IF(DYNAINFO(40)<=0 OR DYNAINFO(40)>300,1,0);
170
+其他分:=IF(量比<=量比下限,-10,0)+IF(市盈率极限,-10,0);
171
+
172
+{不是有效代码直接得分为0}
173
+沪市主板:=CODELIKE('60') AND NOT(CODELIKE('688'));
174
+深市主板:=CODELIKE('000') OR CODELIKE('001') OR CODELIKE('002')  OR CODELIKE('30');
175
+有效代码:=(沪市主板 OR 深市主板) AND NOT(NAMELIKE('ST'));
176
+
177
+{总分计算(满分100)}
178
+信号强度初始:= (资金分 + 量价分 + 板块分 + 资效分 + 波动分 + 趋势分 + 风险分 + 其他分) * 有效代码;
179
+信号强度:=MAX(MIN(信号强度初始,100),0);
180
+
181
+买入阈值:=分数MIN + 5*(MARKET-2);
182
+
183
+{即时价格必须小于某涨幅}
184
+最高涨幅:=(H-REF(C,1))/REF(C,1)*100;
185
+涨幅上限:=IF((CODELIKE('688') OR CODELIKE('30')), 12, 6);
186
+
187
+买入信号:信号强度>=买入阈值 AND 最高涨幅<涨幅上限;

+ 217 - 0
src/test/通达信公式2.txt

@@ -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(熔断条件);

+ 217 - 0
src/test/通达信公式9_在线使用最终版.txt

@@ -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(熔断条件);