 
等级: 超级版主
- 注册:
- 2021-5-18
- 曾用名:
|
// CCI五波震荡下跌选股公式(创新算法版)
INPUT:
N(14, 5, 30), // CCI计算周期
MinWaveLen(1, 1, 3), // 最小波段长度
MaxWaveLen(5, 3, 10), // 最大波段长度
Sens(0.8, 0.5, 1.0); // 反弹敏感度
// 计算CCI(优化版)
TP := (HIGH + LOW + CLOSE) / 3;
MA_TP := MA(TP, N);
MD1 := SUM(ABS(TP - REF(MA_TP, 1)), N) / N;
CCI := (TP - MA_TP) / (0.015 * MAX(MD1, 0.00001));
// 平滑处理
SmoothCCI := EMA(CCI, 3);
// 1. 转折点识别
Peak1 := REF(SmoothCCI, 1) > REF(SmoothCCI, 2) AND REF(SmoothCCI, 1) > SmoothCCI;
Valley := REF(SmoothCCI, 1) < REF(SmoothCCI, 2) AND REF(SmoothCCI, 1) < SmoothCCI;
// 2. 创建转折点序列
TurnPoints := PEAK1 + VALLEY * 2; // 波峰=1, 波谷=2
// 3. 定义五波模式模板
PatternTemplate := '21212'; // 1=波峰, 2=波谷 (谷-峰-谷-峰-谷)
// 4. 滑动窗口模式匹配
PatternFound:= 0;
FOR i = 20 DOWNTO 5 do
BEGIN
// 提取最近5个转折点
CurrentPattern := '';
FOR j = 0 TO 4 do
BEGIN
IF REF(TurnPoints, i-j) = 1 THEN CurrentPattern := CurrentPattern + '1';
IF REF(TurnPoints, i-j) = 2 THEN CurrentPattern := CurrentPattern + '2';
END;
// 检查模式匹配
IF CurrentPattern = PatternTemplate THEN
BEGIN
// 获取转折点位置
P1 := i-4; // 第一波终点
P2 := i-3; // 第二波高点
P3 := i-2; // 第三波低点
P4 := i-1; // 第四波高点
P5 := i; // 第五波终点
// 计算波段长度
Len1 := P2 - P1;
Len2 := P3 - P2;
Len3 := P4 - P3;
Len4 := P5 - P4;
// 验证波段长度
ValidLength :=
Len1 >= MinWaveLen AND Len1 <= MaxWaveLen AND
Len2 >= MinWaveLen AND Len2 <= MaxWaveLen AND
Len3 >= MinWaveLen AND Len3 <= MaxWaveLen AND
Len4 >= MinWaveLen AND Len4 <= MaxWaveLen;
// 验证幅度关系
Drop1 := SmoothCCI[P1] - SmoothCCI[P2]; // 第一波跌幅
Rise2 := SmoothCCI[P3] - SmoothCCI[P2]; // 第二波涨幅
Drop3 := SmoothCCI[P3] - SmoothCCI[P4]; // 第三波跌幅
Rise4 := SmoothCCI[P5] - SmoothCCI[P4]; // 第四波涨幅
ValidAmplitude :=
Rise2 <= Drop1 * Sens AND
Rise4 <= Drop3 * Sens;
// 整体下降趋势
DownTrend := SmoothCCI[P1] > SmoothCCI[P5];
// 组合条件
IF ValidLength AND ValidAmplitude AND DownTrend THEN
BEGIN
PatternFound := 1;
BREAK;
END;
END;
END;
// 期货主力合约过滤
IsActive := VOL > MA(VOL, 5) * 0.8;
// 输出结果
OUTPUT: PatternFound AND IsActive;
// 图表标记
IF PatternFound THEN
BEGIN
DRAWICON(P1, LOW[P1], 11);
DRAWICON(P2, HIGH[P2], 10);
DRAWICON(P3, LOW[P3], 11);
DRAWICON(P4, HIGH[P4], 10);
DRAWICON(P5, LOW[P5], 11);
DRAWTEXT(1, LOW, 'CCI五波形态', COLORRED);
END; |
|