matpeak 2026-03-01 21:53 采纳率: 40%
浏览 4

涨停后的3至10日内收盘价在此涨停价的正负20%内波动,并且在此3至10日波动范围内有2此KD的金叉

通达信选股:
涨停后的3至10日内收盘价在此涨停价的正负20%内波动,并且在此3至10日波动范围内有2此KD的金叉

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-03-01 21:54
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    在通达信中,实现“涨停后的3至10日内收盘价在此涨停价的正负20%内波动,并且在此3至10日波动范围内有2次KD的金叉”这一选股条件,需要结合多个技术指标和逻辑判断。下面我将详细解释这个条件,并提供相应的通达信公式代码。


    条件解析

    1. 涨停后

    • 涨停是指当天的收盘价等于涨停价(即:CLOSE = HIGH)。
    • 需要确认某一天是涨停日。

    2. 3至10日内

    • 在涨停日后第3天到第10天之间(包括第3天和第10天)。

    3. 收盘价在此涨停价的正负20%内波动

    • 即:CLOSE >= 涨停价 * 0.8CLOSE <= 涨停价 * 1.2

    4. 在3至10日波动范围内有2次KD的金叉

    • KD金叉通常指的是K线从下往上穿过D线(K > D),并且K在D下方。

    解决方案步骤

    1. 定义涨停日

    • 使用 CLOSE = HIGH 来判断是否为涨停日。

    2. 记录涨停日

    • 使用变量保存涨停日的位置。

    3. 筛选3至10日内的日期范围

    • 在涨停日后第3天到第10天之间进行遍历。

    4. 检查收盘价是否在涨停价的±20%内

    • 判断每个交易日的收盘价是否符合该范围。

    5. 检测KD金叉

    • 在上述范围内,统计出现两次KD金叉的情况。

    通达信公式代码实现

    { 涨停后3~10日内收盘价在涨停价±20%内波动,且期间出现2次KD金叉 }
    
    { 定义涨停 }
    ZT := CLOSE = HIGH;
    
    { 记录涨停日 }
    ZT_DATE := IF(ZT, BARPOS, 0);
    
    { 找出涨停日之后的第3~10天 }
    ZT_DAYS := IF(BARPOS > ZT_DATE AND BARPOS <= ZT_DATE + 10, 1, 0);
    
    { 涨停价 }
    ZT_PRICE := IF(ZT, HIGH, 0);
    
    { 收盘价在涨停价±20%范围内 }
    IN_RANGE := (CLOSE >= ZT_PRICE * 0.8) AND (CLOSE <= ZT_PRICE * 1.2);
    
    { KD金叉条件:K > D 且 K在D下方 }
    K := MA(CLOSE, 9);
    D := MA(K, 3);
    J := 3*K - 2*D;
    K_D_CROSS := CROSS(K, D);
    
    { 统计在3~10天内出现的KD金叉次数 }
    COUNT_KD := SUM(IF(ZT_DAYS, K_D_CROSS, 0), 10);
    
    { 最终条件:满足3~10天内收盘价在±20%范围内,且有2次KD金叉 }
    CONDITION := ZT AND IN_RANGE AND COUNT_KD >= 2;
    
    CONDITION;
    

    说明与注意事项

    • ZT_DATE 用于记录涨停日的索引位置。
    • ZT_DAYS 用于筛选出涨停后的第3~10天。
    • IN_RANGE 用于判断收盘价是否在涨停价的±20%范围内。
    • COUNT_KD 用于统计在指定区间内出现的KD金叉次数。
    • 最终选股条件为 CONDITION,表示满足所有条件的股票。

    修改建议(如有需要)

    如果你希望在实际使用中更灵活地调整参数(如波动范围、时间窗口、金叉次数等),可以将这些值改为可调参数:

    { 可调参数 }
    RANGE_PERCENT := 20; { 波动百分比 }
    TIME_WINDOW := 10;   { 时间窗口 }
    MIN_KD_CROSS := 2;    { 至少金叉次数 }
    
    { 修改后的条件 }
    IN_RANGE := (CLOSE >= ZT_PRICE * (1 - RANGE_PERCENT / 100)) AND (CLOSE <= ZT_PRICE * (1 + RANGE_PERCENT / 100));
    COUNT_KD := SUM(IF(ZT_DAYS, K_D_CROSS, 0), TIME_WINDOW);
    CONDITION := ZT AND IN_RANGE AND COUNT_KD >= MIN_KD_CROSS;
    

    总结

    重点部分加粗展示:

    • 涨停后CLOSE = HIGH
    • 3至10日内:通过 BARPOSZT_DATE 控制
    • 收盘价在±20%内CLOSE >= ZT_PRICE * 0.8 AND CLOSE <= ZT_PRICE * 1.2
    • 2次KD金叉:使用 SUM 函数统计金叉次数

    如需进一步优化或添加其他条件(如成交量、MACD等),也可以继续扩展此公式。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月1日