程序化强势股回踩再起动选股公式
发布日期: 2025-08-25 | 阅读量:41
{ 涨停阈值:ST股5%,普通股10% }
涨停幅 := IF(NAMELIKE('S') OR NAMELIKE('*S'), 0.05, 0.1);
{ 条件1:昨日涨停(价格创新高且涨幅接近涨停) }
昨涨停 := C / REF(C,1) - 1 >= 涨停幅 - 0.01/REF(C,1) AND C = H;
{ 条件2:MACD处于健康震荡区(非极端值) }
MACD健康 := MACD.DEA < 0.6 AND MACD.DEA > -0.5 AND MACD.MACD > -2 AND MACD.DIF > -1.5 AND MACD.DIF < 0.8;
{ 条件3:短期涨幅可控 + 筹码集中度高 }
涨幅可控 := (C - REF(C,2))/REF(C,2)*100 < 20.8;
筹码集中 := (COST(95) - COST(5)) / (COST(95) + COST(5)) * 50 < 25;
条件3 := 涨幅可控 AND 筹码集中;
{ 条件4:中期无大跌 + 短期波动小 + 近期未深跌 }
中期未崩 := (C - REF(C,44))/REF(C,44)*100 > -25;
波动可控 := (HHV(H,7) - LLV(L,7)) / REF(O,6) < 0.45;
近期抗跌 := (C - REF(C,6))/REF(C,6)*100 > -10;
条件4 := 中期未崩 AND 波动可控 AND 近期抗跌;
{ 条件5:近5日换手率合理(避免过度炒作) }
换手合理 := SUM(VOL/CAPITAL*100, 5) < 85;
{ 组合信号1:昨涨停 + MACD健康 + 筹码集中 + 波动合理 }
强信号1 := 昨涨停 AND MACD健康 AND 条件3 AND 条件4;
{ 股票池过滤(非ST + 小市值)}
非ST := IF(NAMELIKE('ST'), 0, 1) AND IF(NAMELIKE('*'), 0, 1);
市值过滤 := FINANCE(40) < 12000000000; { 流通市值 < 120亿 }
有效股池 := 非ST AND 市值过滤;
{ 昨日满足强信号且今日在有效池中 }
昨强今存 := REF(强信号1, 1) AND 有效股池;
{ 前高识别:N=20日周期 }
N周期 := 20;
当前价 := C;
前高识别 := REF(当前价, N周期) = HHV(当前价, 2*N周期+1);
前高过滤 := FILTER(前高识别, N周期);
前高标志 := BACKSET(前高过滤, N周期+1);
前高确认 := FILTER(前高标志, N周期);
{ 前低识别 }
前低识别 := REF(当前价, N周期) = LLV(当前价, 2*N周期+1);
前低过滤 := FILTER(前低识别, N周期);
前低标志 := BACKSET(前低过滤, N周期+1);
前低确认 := FILTER(前低标志, N周期);
{ 提取前高、前低价格 }
前期高位 := REF(C, BARSLAST(前高确认));
前期低位 := REF(C, BARSLAST(前低确认));
{ 动态前高 }
UU := BACKSET(BARSTATUS=2, BARSLAST(前高确认)+1);
VV := UU > REF(UU,1);
前高 := REF(C, BARSLAST(VV));
{ 突破信号:开盘或收盘突破前高/前期高位 }
突破前高 := O > 前高 OR O > 前期高位 OR CROSS(C, 前高) OR CROSS(C, 前期高位);
今日上涨 := C > REF(C,1);
{ 最终选股信号 }
选股: 昨强今存 AND 突破前高 AND 今日上涨 AND 换手合理;
涨停幅 := IF(NAMELIKE('S') OR NAMELIKE('*S'), 0.05, 0.1);
{ 条件1:昨日涨停(价格创新高且涨幅接近涨停) }
昨涨停 := C / REF(C,1) - 1 >= 涨停幅 - 0.01/REF(C,1) AND C = H;
{ 条件2:MACD处于健康震荡区(非极端值) }
MACD健康 := MACD.DEA < 0.6 AND MACD.DEA > -0.5 AND MACD.MACD > -2 AND MACD.DIF > -1.5 AND MACD.DIF < 0.8;
{ 条件3:短期涨幅可控 + 筹码集中度高 }
涨幅可控 := (C - REF(C,2))/REF(C,2)*100 < 20.8;
筹码集中 := (COST(95) - COST(5)) / (COST(95) + COST(5)) * 50 < 25;
条件3 := 涨幅可控 AND 筹码集中;
{ 条件4:中期无大跌 + 短期波动小 + 近期未深跌 }
中期未崩 := (C - REF(C,44))/REF(C,44)*100 > -25;
波动可控 := (HHV(H,7) - LLV(L,7)) / REF(O,6) < 0.45;
近期抗跌 := (C - REF(C,6))/REF(C,6)*100 > -10;
条件4 := 中期未崩 AND 波动可控 AND 近期抗跌;
{ 条件5:近5日换手率合理(避免过度炒作) }
换手合理 := SUM(VOL/CAPITAL*100, 5) < 85;
{ 组合信号1:昨涨停 + MACD健康 + 筹码集中 + 波动合理 }
强信号1 := 昨涨停 AND MACD健康 AND 条件3 AND 条件4;
{ 股票池过滤(非ST + 小市值)}
非ST := IF(NAMELIKE('ST'), 0, 1) AND IF(NAMELIKE('*'), 0, 1);
市值过滤 := FINANCE(40) < 12000000000; { 流通市值 < 120亿 }
有效股池 := 非ST AND 市值过滤;
{ 昨日满足强信号且今日在有效池中 }
昨强今存 := REF(强信号1, 1) AND 有效股池;
{ 前高识别:N=20日周期 }
N周期 := 20;
当前价 := C;
前高识别 := REF(当前价, N周期) = HHV(当前价, 2*N周期+1);
前高过滤 := FILTER(前高识别, N周期);
前高标志 := BACKSET(前高过滤, N周期+1);
前高确认 := FILTER(前高标志, N周期);
{ 前低识别 }
前低识别 := REF(当前价, N周期) = LLV(当前价, 2*N周期+1);
前低过滤 := FILTER(前低识别, N周期);
前低标志 := BACKSET(前低过滤, N周期+1);
前低确认 := FILTER(前低标志, N周期);
{ 提取前高、前低价格 }
前期高位 := REF(C, BARSLAST(前高确认));
前期低位 := REF(C, BARSLAST(前低确认));
{ 动态前高 }
UU := BACKSET(BARSTATUS=2, BARSLAST(前高确认)+1);
VV := UU > REF(UU,1);
前高 := REF(C, BARSLAST(VV));
{ 突破信号:开盘或收盘突破前高/前期高位 }
突破前高 := O > 前高 OR O > 前期高位 OR CROSS(C, 前高) OR CROSS(C, 前期高位);
今日上涨 := C > REF(C,1);
{ 最终选股信号 }
选股: 昨强今存 AND 突破前高 AND 今日上涨 AND 换手合理;
