DataWizardess 2025-07-07 07:50 采纳率: 99.1%
浏览 1
已采纳

如何在通达信中编写剔除ST股的每日涨停数量指标?

如何在通达信中编写剔除ST股的每日涨停数量指标?常见问题包括:如何识别并过滤ST股票、如何统计当日涨停个股数量、如何将逻辑封装为可复用指标公式。用户常遇到的问题是无法正确筛选非ST股或在数据源中未排除ST标识,导致统计结果偏差。此外,部分用户对通达信函数如`STKNAME`、`DYNAINFO`等使用不熟悉,影响编写效率。解决方法是通过条件判断语句结合股票名称或代码特征进行过滤,并利用集合函数统计符合条件的个股数量。
  • 写回答

1条回答 默认 最新

  • 猴子哈哈 2025-10-21 23:33
    关注

    一、通达信中剔除ST股的每日涨停数量指标编写详解

    在股票量化分析过程中,统计每日涨停个股数量是一项常见需求。但在实际操作中,由于未正确过滤ST(特别处理)类股票,常导致数据偏差。本文将从基础逻辑到高级封装逐步讲解如何在通达信中实现该功能。

    1. 识别并过滤ST股票

    ST股票通常以“ST”或“*ST”开头,可以通过函数`STKNAME`获取股票简称进行判断:

    ST_FILTER := IF(LEFT(STKNAME, 2) = 'ST' OR LEFT(STKNAME, 3) = '*ST', 0, 1);

    上述公式表示:若股票名称前两个字符是“ST”或前三个为“*ST”,则返回0(即不参与统计),否则返回1(保留)。

    2. 判断涨停条件

    涨停通常定义为收盘价等于当日涨停价,可通过以下方式计算:

    ZT_PRICE := REF(CLOSE, 1) * 1.1;  { 前一日收盘价乘以1.1 }
    ZT_FLAG := CLOSE >= ZT_PRICE;  { 收盘价是否大于等于涨停价 }

    需要注意的是,在某些情况下需使用`DYNAINFO(4)`来获取最新卖一价,避免因收盘价滞后产生误判。

    3. 统计符合条件的个股数量

    使用集合函数`COUNT`对满足非ST且涨停的条件进行统计:

    ZT_COUNT := COUNT(ZT_FLAG AND ST_FILTER, DATE);

    此语句表示统计当天满足涨停且非ST的股票数量。

    4. 将逻辑封装为可复用指标公式

    完整公式如下:

    ZT_COUNT_INDICATOR := 
    (
        ST_FILTER := IF(LEFT(STKNAME, 2) = 'ST' OR LEFT(STKNAME, 3) = '*ST', 0, 1),
        ZT_PRICE := REF(CLOSE, 1) * 1.1,
        ZT_FLAG := CLOSE >= ZT_PRICE,
        COUNT(ZT_FLAG AND ST_FILTER, DATE)
    );
    

    将该公式保存为自定义指标后,可在不同图表中重复调用,提升开发效率。

    5. 常见问题与解决方案

    • 问题1:无法准确识别ST股票?
      解决方案:确保使用`STKNAME`函数,并结合字符串匹配逻辑。
    • 问题2:涨停价格计算错误?
      解决方案:考虑停牌、涨跌幅限制变化等情况,使用`DYNAINFO(4)`辅助判断。
    • 问题3:统计结果出现重复或遗漏?
      解决方案:检查日期字段是否一致,确保使用`DATE`作为分组依据。

    6. 总结与扩展思路

    通过上述步骤,我们完成了从ST识别、涨停判断到最终统计的全过程封装。对于进阶用户,可进一步引入板块分类、市场行情状态等维度,构建更复杂的涨停监控系统。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月7日