FAQ > 金融建模 > 建模问题 > 股票相关

Q:请问如何判断个股是否停牌?    

  • A:判断个股在指定日是否停牌一般使用模型istradeday判断,详情可参考:FAQ:Q:函数istradeday判断是否交易日的规则
    另外,天软提供个股停牌信息表“股票.特别提示-停牌” infoarray(127),包括临时停牌、召开股东大会停牌、重大事项停牌等,用户可根据该表进行判断指定日是否停牌。
    天软根据该表衍生以下公用模型获取停牌信息:
    模型说明参数返回
    StockSNIsSuspend指定日是否发生过停牌EndT:Datetime 指定日bool
    StockSNBegTime指定日停牌开始时间EndT:Datetime 指定日string
    StockSNEndTime指定日停牌截止时间EndT:Datetime 指定日string
    StockSNSuspendHours指定日停牌时长(小时)EndT:Datetime 指定日int
    StockSNSuspendTimes指定日停牌次数EndT:Datetime 指定日Int
    StockSNSuspendReason指定日停牌原因EndT:Datetime 指定日string
    StockSNSuspendPeriod指定日停牌期限EndT:Datetime 指定日string
    StockSNLastDate最近一次停牌日期EndT:Datetime 指定日整型日期
    StockSNSuspendTimesPeriod区间停牌次数BegT:Datetime 开始日
    EndT:Datetime 截止日
    int
    StockSNSuspendHoursPeriod区间停牌时长(小时)BegT:Datetime 开始日
    EndT:Datetime 指定日
    int

    使用范例:
    范例01:获取指定日停牌信息:
      //查询万科A在2017-07-14日的停牌信息
      setsysparam(pn_stock(),"SZ000002");
      endt:=20170714t;
      return array("是否发生过停牌":StockSNIsSuspend(endt),
            "停牌开始时间":StockSNBegTime(endt),
            "停牌截止时间":StockSNEndTime(endt),
            "停牌时长(小时)":StockSNSuspendHours(endt),
            "停牌次数":StockSNSuspendTimes(endt),
            "停牌原因":StockSNSuspendReason(endt),
            "停牌期限":StockSNSuspendPeriod(endt),
            "最近一次停牌日期":StockSNLastDate(endt));
    返回结果:


    范例02:获取区间停牌信息
      //查询万科A在2017-07-14至2017-07-19的停牌信息
      setsysparam(pn_stock(),"SZ000002");
      begt:=20170714t;
      endt:=20170719t;
      return array("区间停牌次数":StockSNSuspendTimesPeriod(begt,endt),
            "停牌时长(小时)":StockSNSuspendHoursPeriod(begt,endt));
    返回结果:


    范例03:获取指定日停牌的股票
    endt:=20240708T;
      stocks:= select thisrow as 'id',spec(StockSNIsSuspend(endt),thisrow) as '是否停牌'
      from getAbkbydate("A股",Endt) end;
      return select * from stocks where ['是否停牌']=1 end;

    返回:



    访问停牌信息的历史用户函数接口说明方式:
    IfStockSuspended.fun
    附件:IfStockSuspended.fun
    该模型查询指定日EndT是否发生停牌。
    函数说明:
    IfStockSuspended(EndT,ReturnType);
    定义:IfStockSuspended(EndT:TDatetime,ReturnType:int):real
    说明:判断endt是否停牌。
    参数:
    EndT:日期,截止日期
    ReturnType:整型,返回类型。
    返回:
    ReturnType值返回结果

    1
    返回当天是否停牌。
    1 停牌,0 没有停牌

    其它值
    返回本次停牌时长。
    0 当天没有停牌,其它值 停牌时间长度(单位:小时)

    范例:
    范例一:判断个股在指定日是否发生停牌
    //返回SZ000002万科A,在20090410的停牌情况。
    SetSysParam(pn_stock(),"SZ000002");
    Endt:=20090410T;
    return IfStockSuspended(Endt,1);
    //返回:1 表示停牌。

    范例二:返回指定股票在指定日的停牌时长
    //返回SZ000002万科A,在20090410的停牌时长。
    SetSysParam(pn_stock(),"SZ000002");
    Endt:=20090410T;
    return IfStockSuspended(Endt,0);
    //返回:4 表示停牌4个小时。

    范例三:返回指定日所有股票的停牌状态,可用于盘前判断(稍早于行情的判断)
    t:=select thisrow as 'stockid',spec(StockSNIsSuspend(20231102T),thisrow) as '是否停牌'
       from getbk("A股") end;
    return t;

    返回:按是否停牌倒序排列