可以。你这个逻辑我建议拆成两套:**年线确认公式**负责筛“大级别换挡”,**日线历史新高公式**负责后续跟踪。
**1. 年线版,最贴近你的原始想法**
在通达信里切到年线周期使用:
```pascal
{前2个完整年度最低到最高 >= 5倍,且上一年收盘突破此前历史最高价}
L2:=LLV(REF(L,1),2);
H2:=HHV(REF(H,1),2);
FIVE :=H2/L2>=5;
PREH:=REF(HHV(H,0),2);
BREA KY:=REF(C,1)>PREH;
XG:FIVE AND BREAKY;
```
这里的逻辑是:
`REF(L,1)`、`REF(H,1)`:从上一年开始算。
`LLV(...,2)`、`HHV(...,2)`:统计前两个完整年度。
`REF(C,1)>REF(HHV(H,0),2)`:去年收盘价大于去年之前的历史最高价。
如果你说的“涨了5倍”是指**涨幅500%**,也就是最高价达到最低价的6倍,把这一句改掉:
```pascal
FIVE:=H2/L2>=6;
```
**2. 日线版,按自然年份筛选**
如果你想直接在日线条件选股里跑,用这个:
```pascal
{日线选股:前2个自然年度低到高 >=5倍,去年收盘突破此前历史高点}
CY:=CONST(
YEAR );
L2Y:=LLV(IF(YEAR>=CY-2 AND YEAR=CY-2 AND YEAR=5;
LYC:=REF(C,BARSLAST(YEARPREH AND PREH>0 AND L2Y=5倍,上一季度收盘突破此前历史高点}
L8:=LLV(REF(L,1),8);
H8:=HHV(REF(H,1),8);
FIVE:=H8/L8>=5;
PREH:=REF(HHV(H,0),2);
BREAKQ:=REF(C,1)>PREH;
XG:FIVE AND BREAKQ;
```
我的建议是:**初筛用年线,跟踪用历史新高**。年线确认更硬,季度线会更早但杂音更多。后续跟踪可以单独用这个日线公式:
```pascal
{收盘价创历史新高}
XG:C>REF(HHV(H,0),1);
```
注意统一复权方式,最好用前复权或后复权,不要用不复权混着看,否则“历史最高价”和“5倍涨幅”会被除权影响。