|
|
@@ -1,101 +1,99 @@
|
|
1
|
1
|
{ 持有股票名称和成本价 }
|
|
2
|
|
-BUYDATE1:=1000000+250818;
|
|
3
|
|
-NAME1:='300806';
|
|
4
|
|
-PRICE1:=23.40;
|
|
|
2
|
+BUYDATE1:=1000000+250819;
|
|
|
3
|
+NAME1:='600487';
|
|
|
4
|
+PRICE1:=18.76;
|
|
5
|
5
|
|
|
6
|
6
|
BUYDATE2:=BUYDATE1;
|
|
7
|
|
-NAME2:='301165';
|
|
8
|
|
-PRICE2:=74.57;
|
|
9
|
|
-
|
|
10
|
|
-BUYDATE3:=BUYDATE1;
|
|
11
|
|
-NAME3:='';
|
|
12
|
|
-PRICE3:=0;
|
|
13
|
|
-
|
|
14
|
|
-MYBUYPRICE:=IF(CODELIKE(NAME1),PRICE1,IF(CODELIKE(NAME2),PRICE2,IF(CODELIKE(NAME3),PRICE3,0)));
|
|
15
|
|
-MYBUYDATE:=IF(CODELIKE(NAME1),BUYDATE1,IF(CODELIKE(NAME2),BUYDATE2,IF(CODELIKE(NAME3),BUYDATE3,0)));
|
|
16
|
|
-
|
|
17
|
|
-{ ===================== 参数设置 =====================}
|
|
18
|
|
-N1_BASE:=2; { 基础回撤阈值系数 }
|
|
19
|
|
-N2:=3; { 开盘过滤时间(分钟) }
|
|
20
|
|
-N3:=2; { 保守系数 }
|
|
21
|
|
-N4_BASE:=1.5; { 基础动态止盈回撤系数 }
|
|
22
|
|
-N5:=0.5; { 大盘弱势系数 }
|
|
23
|
|
-N6:=-5; { 集合大幅低开阈值 }
|
|
24
|
|
-N7:=0.7; { 基础流动性阈值(%) }
|
|
25
|
|
-N7_创业板:=0.6; { 创业板流动性阈值(%) }
|
|
26
|
|
-STOPLOSS:=5; { 基础止损阈值(%) }
|
|
27
|
|
-TAKEPROFIT:=10; { 基础止盈阈值(%) }
|
|
28
|
|
-
|
|
29
|
|
-{ ========== 创业板特殊参数 (300/301开头股票) ========== }
|
|
|
7
|
+NAME2:='301171';
|
|
|
8
|
+PRICE2:=34.10;
|
|
|
9
|
+
|
|
|
10
|
+BUYDATE3:=1000000+250818;
|
|
|
11
|
+NAME3:='301165';
|
|
|
12
|
+PRICE3:=74.57;
|
|
|
13
|
+
|
|
|
14
|
+BUYDATE4:=BUYDATE3;
|
|
|
15
|
+NAME4:='300806';
|
|
|
16
|
+PRICE4:=23.40;
|
|
|
17
|
+
|
|
|
18
|
+MYBUYPRICE:=IF(CODELIKE(NAME1),PRICE1,IF(CODELIKE(NAME2),PRICE2,IF(CODELIKE(NAME3),PRICE3,IF(CODELIKE(NAME4),PRICE4,0))));
|
|
|
19
|
+MYBUYDATE:=IF(CODELIKE(NAME1),BUYDATE1,IF(CODELIKE(NAME2),BUYDATE2,IF(CODELIKE(NAME3),BUYDATE3,IF(CODELIKE(NAME4),BUYDATE4,0))));
|
|
|
20
|
+持仓天数 :=DATETODAY(DATE)-DATETODAY(MYBUYDATE);
|
|
|
21
|
+
|
|
|
22
|
+{ ===================== 参数设置 ===================== }
|
|
|
23
|
+N1_BASE:=2;
|
|
|
24
|
+N2:=3;
|
|
|
25
|
+N3:=2;
|
|
|
26
|
+N4_BASE:=1.5;
|
|
|
27
|
+N5:=0.5;
|
|
|
28
|
+N6:=-5;
|
|
|
29
|
+STOPLOSS:=5;
|
|
|
30
|
+TAKEPROFIT:=10;
|
|
|
31
|
+
|
|
30
|
32
|
创业板标识 := CODELIKE('300') OR CODELIKE('301');
|
|
31
|
|
-N1 := IF(创业板标识, 2.75, N1_BASE); { 创业板用2.75,其他用基础值 }
|
|
32
|
|
-N4 := IF(创业板标识, 2.25, N4_BASE); { 创业板用2.25,其他用基础值 }
|
|
33
|
|
-流动性阈值 := IF(创业板标识, N7_创业板, N7);
|
|
|
33
|
+N1 := IF(创业板标识, 2.75, N1_BASE);
|
|
|
34
|
+N4 := IF(创业板标识, 2.25, N4_BASE);
|
|
34
|
35
|
|
|
35
|
|
-{ ===================== 时间控制 =====================}
|
|
|
36
|
+{ ===================== 时间控制 ===================== }
|
|
36
|
37
|
集合竞价时段 := MACHINETIME>=092500 AND MACHINETIME<=093000;
|
|
37
|
38
|
上午开盘后 := MACHINETIME >= (093000 + N2*100) AND MACHINETIME <= 113000;
|
|
38
|
39
|
下午开盘后 := MACHINETIME >= 130000 AND MACHINETIME <= 145500;
|
|
39
|
40
|
有效时段 := 上午开盘后 OR 下午开盘后;
|
|
40
|
41
|
|
|
41
|
|
-{ ===================== 基础数据 =====================}
|
|
|
42
|
+{ ===================== 基础数据 ===================== }
|
|
42
|
43
|
TR1 := MAX(MAX(H-L, ABS(REF(C,1)-H)), ABS(REF(C,1)-L));
|
|
43
|
44
|
相对ATR := MA(TR1,14)/REF(C,1)*100;
|
|
44
|
45
|
日内系数 := FROMOPEN/240;
|
|
45
|
46
|
分时均价 := DYNAINFO(11);
|
|
46
|
47
|
基准价 := MAX(O, REF(C,1));
|
|
47
|
48
|
|
|
48
|
|
-{ 动态计算最高价 }
|
|
49
|
|
-{ 方法1:使用BARSLASTCOUNT检测持续状态 }
|
|
50
|
49
|
持续高波动 := BARSLASTCOUNT(相对ATR > 0.5);
|
|
51
|
|
-{ 方法2:使用SUM直接计算高波动天数 }
|
|
52
|
50
|
高波动天数 := SUM(相对ATR > 0.5, 100);
|
|
53
|
|
-{ 组合方法 - 确保在各种情况下都能获得有效周期 }
|
|
54
|
|
-有效周期 := IF(相对ATR > 0.5,
|
|
55
|
|
- MIN(MAX(持续高波动, 高波动天数), 30),
|
|
56
|
|
- 10);
|
|
|
51
|
+有效周期 := IF(相对ATR > 0.5, MIN(MAX(持续高波动, 高波动天数), 30), 10);
|
|
57
|
52
|
有效最高价 := HHV(H, 有效周期);
|
|
58
|
53
|
当前回撤 := IF(基准价>0, (有效最高价 - C)/基准价*100, 0);
|
|
59
|
54
|
|
|
60
|
|
-{ ===================== 集合竞价策略 =====================}
|
|
|
55
|
+{ ===================== 集合竞价策略 ===================== }
|
|
61
|
56
|
集合竞价低开 := (O-REF(C,1))/REF(C,1)*100;
|
|
62
|
57
|
集合卖出 := 集合竞价时段 AND (
|
|
63
|
58
|
(MYBUYPRICE>0 AND (O - MYBUYPRICE)/MYBUYPRICE*100 <= -STOPLOSS)
|
|
64
|
59
|
OR 集合竞价低开 < N6
|
|
65
|
60
|
);
|
|
66
|
61
|
|
|
67
|
|
-{ ===================== 动态止盈止损 =====================}
|
|
|
62
|
+{ ===================== 动态止盈止损 ===================== }
|
|
68
|
63
|
当前盈利 := IF(MYBUYPRICE>0, (C - MYBUYPRICE)/MYBUYPRICE*100, 0);
|
|
69
|
64
|
动态止损 := MAX(STOPLOSS, 1.2 * 相对ATR);
|
|
70
|
|
-动态止盈 := MAX(TAKEPROFIT, 当前盈利 - N4 * 相对ATR); { 使用调整后的N4 }
|
|
|
65
|
+动态止盈 := MAX(TAKEPROFIT, 当前盈利 - N4 * 相对ATR);
|
|
71
|
66
|
|
|
72
|
|
-止损触发 := MYBUYPRICE>0 AND 当前盈利 <= -动态止损;
|
|
73
|
|
-止盈准备 := MYBUYPRICE>0 AND 当前盈利 >= 动态止盈;
|
|
|
67
|
+止损触发瞬时 := MYBUYPRICE>0 AND 当前盈利 <= -动态止损;
|
|
|
68
|
+止盈准备瞬时 := MYBUYPRICE>0 AND 当前盈利 >= 动态止盈;
|
|
74
|
69
|
|
|
75
|
|
-{ ===================== 动态回撤阈值 =====================}
|
|
76
|
|
-动态回撤阈值 := (1 + 相对ATR/100) * N1 * (1 - 0.3*日内系数) * N3; { 使用调整后的N1 }
|
|
|
70
|
+{ ---- 锁定逻辑 ---- }
|
|
|
71
|
+止损锁定 := IF(BARSLAST(止损触发瞬时)=DRAWNULL,0, BARSLAST(止损触发瞬时)< 10000);
|
|
|
72
|
+止盈准备锁定 := IF(BARSLAST(止盈准备瞬时)=DRAWNULL,0, BARSLAST(止盈准备瞬时)< 10000);
|
|
77
|
73
|
|
|
78
|
|
-{ ===================== 量价动能 =====================}
|
|
|
74
|
+{ ===================== 动态回撤阈值 ===================== }
|
|
|
75
|
+动态回撤阈值 := (1 + 相对ATR/100) * N1 * (1 - 0.3*日内系数) * N3;
|
|
|
76
|
+
|
|
|
77
|
+{ ===================== 量价动能 ===================== }
|
|
79
|
78
|
缩量回落 := V < MA(V,20) * 0.8;
|
|
80
|
79
|
DIF := EMA(C,12)-EMA(C,26);
|
|
81
|
80
|
动能转弱 := DIF < REF(DIF,1) AND MACD<0;
|
|
82
|
81
|
下破均价 := C < 分时均价 AND REF(C,1) >= REF(分时均价,1);
|
|
83
|
82
|
|
|
84
|
|
-{ ===================== 板块计算 =====================}
|
|
|
83
|
+{ ===================== 板块计算 ===================== }
|
|
85
|
84
|
行业涨幅 := HORCALC(HYBLOCK,105,2,3);
|
|
86
|
85
|
板块弱势 := 行业涨幅 < REF(行业涨幅,1) AND 行业涨幅 < 0;
|
|
87
|
86
|
|
|
88
|
|
-{ ===================== L2信号 =====================}
|
|
|
87
|
+{ ===================== L2信号 ===================== }
|
|
89
|
88
|
主力对倒 := L2_AMO(1,3) > L2_AMO(1,2)*1.2
|
|
90
|
89
|
AND (L2_AMO(1,3)+L2_AMO(1,2)) > MA(V,10)*C*0.3;
|
|
91
|
90
|
主动出货 := L2_AMO(0,3) > L2_AMO(0,2)*2
|
|
92
|
91
|
AND L2_VOL(0,3)/V > 0.3
|
|
93
|
92
|
AND V/MA(V,5) > 1.2;
|
|
94
|
93
|
|
|
95
|
|
-{ ===================== 信号分层 =====================}
|
|
96
|
|
-强制卖出 := 止损触发 OR 主动出货;
|
|
|
94
|
+{ ===================== 信号分层 ===================== }
|
|
|
95
|
+强制卖出 := 止损锁定 OR 主动出货;
|
|
97
|
96
|
|
|
98
|
|
-{ 大盘计算 }
|
|
99
|
97
|
HS300C:="399300$C";
|
|
100
|
98
|
HS300ATR:= MA(ABS(REF(HS300C,1)-HS300C),14)/REF(HS300C,1)*100;
|
|
101
|
99
|
大盘弱势:=HS300C < REF(HS300C,1) * (1 - HS300ATR*N5/100);
|
|
|
@@ -108,17 +106,30 @@ HS300ATR:= MA(ABS(REF(HS300C,1)-HS300C),14)/REF(HS300C,1)*100;
|
|
108
|
106
|
|
|
109
|
107
|
组合卖出 := (弱信号1 + 弱信号2*2 + 弱信号3 + 弱信号4 + 弱信号5) >= 3;
|
|
110
|
108
|
|
|
111
|
|
-{ ===================== 最终信号 =====================}
|
|
112
|
|
-成交过滤 := V > MA(V,5)*流动性阈值;
|
|
113
|
|
-持仓天数 :=DATETODAY(DATE)-DATETODAY(MYBUYDATE);
|
|
114
|
|
-
|
|
115
|
|
-综合信号: MYBUYPRICE>0 AND (
|
|
|
109
|
+{ ===================== 成交过滤 ===================== }
|
|
|
110
|
+基础过滤 := V > MA(V,5)*0.7;
|
|
|
111
|
+紧急情况 := (REF(C,1)-C)/REF(C,1)*100 > 5
|
|
|
112
|
+ OR (止损锁定 AND EVERY(V < MA(V,5)*0.8, 3))
|
|
|
113
|
+ OR C <= ROUND(REF(C,1)*0.9*100)/100;
|
|
|
114
|
+创业板紧急情况 := (REF(C,1)-C)/REF(C,1)*100 > 4
|
|
|
115
|
+ OR (止损锁定 AND EVERY(V < MA(V,5)*0.8, 2))
|
|
|
116
|
+ OR C <= ROUND(REF(C,1)*0.86*100)/100;
|
|
|
117
|
+成交过滤 := IF(创业板标识, 基础过滤 OR 创业板紧急情况, 基础过滤 OR 紧急情况);
|
|
|
118
|
+
|
|
|
119
|
+{ ===================== 综合信号 ===================== }
|
|
|
120
|
+综合信号瞬时 := MYBUYPRICE>0 AND (
|
|
116
|
121
|
集合卖出
|
|
117
|
122
|
OR (有效时段 AND (强制卖出 OR 组合卖出))
|
|
118
|
|
- OR (止盈准备 AND (强制卖出 OR 组合卖出))
|
|
|
123
|
+ OR (止盈准备锁定 AND (强制卖出 OR 组合卖出))
|
|
119
|
124
|
)
|
|
120
|
125
|
AND 成交过滤
|
|
121
|
126
|
AND 持仓天数>=1;
|
|
122
|
127
|
|
|
123
|
|
-{ ===================== 可视化 =====================}
|
|
|
128
|
+{ ---- 综合信号锁定(记忆功能) ---- }
|
|
|
129
|
+综合信号锁定 := IF(BARSLAST(综合信号瞬时)=DRAWNULL,0, BARSLAST(综合信号瞬时)< 10000);
|
|
|
130
|
+
|
|
|
131
|
+{ ---- 自动清零逻辑:新建仓时重置 ---- }
|
|
|
132
|
+综合信号 : IF(MYBUYPRICE>0, 综合信号锁定, 0);
|
|
|
133
|
+
|
|
|
134
|
+{ ===================== 可视化 ===================== }
|
|
124
|
135
|
DRAWICON(综合信号, L*0.98, 2);
|