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

Q:如何获取股票的交易提示?    

  • A:天软提供了国内股票市场比较全面的数据,本文提供如批量获取常见的交易提示数据。

    常见交易提示指标接口
    交易提示指标说明
    分红送股FAQ:StockPFInfo
    增发上市FAQ:增发
    停牌FAQ:Q:请问如何判断个股是否停牌?
    STFAQ:IsST_3
    涨跌停FAQ:Q:天软是否有每天的涨停或跌停股票的涨停价或跌停价?
    退市整理期FAQ:IsStockGoDelistingPeriod
    限售解禁FAQ:限售解禁
    大宗交易FAQ:股票大宗交易
    龙虎榜FAQ:stocktbgetinfo
    上/退市日FAQ:Q:证券的上市日与退市日函数汇总
    提示公告FAQ:股票公告

    获取个股指定日交易提示
    实现模型:GetStockTradePromptEndt
    Function GetStockTradePromptEndt(stockid,endt);
    Begin
    {
      说明:获取个股指定日交易提示信息
        交易提示:"新股上市","分红送股","增发上市","停牌","ST","涨停","跌停",
             "退市整理期","解禁","大宗交易","龙虎榜","未上市","已退市",
             "最近30天发布了诉讼仲裁公告","最近30天发布了终止上市提示公告",
             "最近30天发布了风险提示公告","最近30天发布了交易异常波动公告"
      参数:
        stockid:string 股票代码
        endt:datetime 指定日期
      返回:一维数组,交易提示信息
    }
      ov:=BackupSystemParameters2();
      setsysparam(pn_stock(),stockid);
      tip:="";
      intt:=datetoint(endt);

      for i,info in StockTradePrompt() do
      begin
        con:=eval(&info['条件']);
        if con then
          if ifstring(con) then tip+=con$";";
          else tip+=info['提示']$";";
      end

      if tip then tip:=tip[:length(tip)-1];
      if ansipos("已退市",tip) then tip:="已退市";
      return array("stockid":stockid,"date":datetostr(endt),"交易提示":tip);
    end

    function StockTradePrompt();
    begin
      col0:='提示';
      col1:='条件';
      return
      array((col0:"新股上市",col1:"intt=base(12017)"),
         (col0:"分红送股",col1:"istable(StockPFInfo(endt,endt))"),
         (col0:"增发上市",col1:"vselect ['上市日'] from infotable 22 of stockid where ['上市日']=intt end"),
         (col0:"停牌",col1:"StockSNIsSuspend(endt)"),
         (col0:"ST",col1:"IsST_3(EndT)"),
         (col0:"涨停",col1:"StockIsZt(EndT)"),
         (col0:"跌停",col1:"StockIsDt(EndT)"),
         (col0:"退市整理期",col1:"IsStockGoDelistingPeriod(endt)"),
         (col0:"解禁",col1:"istable(stock_GetRestrictedBanData(stockid,EndT))"),
         (col0:"大宗交易",col1:"vselect ['截止日'] from infotable 124 of stockid where ['截止日']=intt end"),
         (col0:"龙虎榜",col1:"istable(StockTBGetInfo(array(stockid),endt,endt,0,2))"),
         (col0:"未上市",col1:"base(12017)>intt"),
         (col0:"已退市",col1:"StockDelistingDate() and StockDelistingDate()<=endt"),
         (col0:"终止上市公告",col1:"GetStockTerminationEndt(endt,30)"),
         (col0:"诉讼仲裁公告",col1:"GetStockLawsuitAndArbitrationEndt(endt,30)"),
         (col0:"交易异常波动公告",col1:"GetStockAbnormalFluctuationEndt(endt,30)"),
         (col0:"风险提示公告",col1:"GetStockRiskWarningEndt(endt,30)"),
        );
    end

    Function GetStockLawsuitAndArbitrationEndt(endt,N);
    Begin
    {
      说明:获取个股指定日近期是否发布诉讼及仲裁公告
        判断指定日是否发布公告,如没有向前N个日期寻找是否发布诉讼仲裁公告
      参数:
        endt:datetime 指定日期
        N: Int 向前推移的天数,默认为0不推移
      返回:string,诉讼及仲裁提示
    }
      stockid:=DefaultStockID();
      data:=select * from infotable 122 of stockid
         where ["公布日"]>=datetoint(IncDay(endt,-N)) and
            ["公布日"]<=datetoint(endt) and
            ContainsText(['公告类型(二级)'],'诉讼、仲裁') and
            not ContainsText(['公告标题'],'进展')
         order by ["公布日"] desc end;

      if not istable(data) then return 0;
      v:=data[0,"公布日"]$'发布了诉讼、仲裁公告';
      return v;
    End;

    function GetStockTerminationEndt(endt,N);
    Begin
    {
      说明:获取个股指定日近期是否发布终止上市提示公告
        判断指定日是否发布公告,如没有向前N个日期寻找是否发布终止上市提示公告
      参数:
        endt:datetime 指定日期
        N: Int 向前推移的天数,默认为0不推移
      返回:string,终止上市提示

    }
      stockid:=DefaultStockID();
      data:=select * from infotable 122 of stockid
         where ["公布日"]>=datetoint(IncDay(endt,-N)) and
            ["公布日"]<=datetoint(endt) and
            ContainsText(['公告类型(二级)'],'暂停、终止上市') and
            ContainsText(['公告标题'],'终止上市')
         order by ["公布日"] desc end;

      if not istable(data) then return 0;
      v:=data[0,"公布日"]$'发布了终止上市提示公告';
      return v;
    End;

    Function GetStockRiskWarningEndt(endt,N);
    Begin
    {
      说明:获取个股指定日近期是否发布风险提示公告
        判断指定日是否发布公告,如没有向前N个日期寻找是否发布风险提示公告
      参数:
        endt:datetime 指定日期
        N: Int 向前推移的天数,默认为0不推移
      返回:string,风险公告提示
    }
      stockid:=DefaultStockID();
      data:=select * from infotable 122 of stockid
         where ["公布日"]>=datetoint(IncDay(endt,-N)) and
            ["公布日"]<=datetoint(endt) and
            ContainsText(['公告类型(二级)'],'风险提示公告')
         order by ["公布日"] desc end;

      if not istable(data) then return 0;
      v:=data[0,"公布日"]$'发布了风险提示公告';
      return v;
    End;

    Function GetStockAbnormalFluctuationEndt(endt,N);
    Begin
    {
      说明:获取个股指定日近期是否发布交易异常波动公告
        判断指定日是否发布公告,如没有向前N个日期寻找是否发布交易异常波动公告
      参数:
        endt:datetime 指定日期
        N: Int 向前推移的天数,默认为0不推移
      返回:string,交易异常波动提示
    }
      stockid:=DefaultStockID();
      data:=select * from infotable 122 of stockid
         where ["公布日"]>=datetoint(IncDay(endt,-N)) and
            ["公布日"]<=datetoint(endt) and
            ContainsText(['公告类型(二级)'],'交易异常波动')
         order by ["公布日"] desc end;

      if not istable(data) then return 0;
      v:=data[0,"公布日"]$'发布了交易异常波动公告';
      return v;
    End;

    执行范例
      //获取SZ002373在20140410日的交易提示信息
      return GetStockTradePromptEndt('SZ002373',20140410T);
      //返回:


    获取个股区间交易提示信息
    实现模型:GetStockRangeTradePrompt
    Function GetStockRangeTradePrompt(stockid,begt,endt);
    Begin
    {
      说明:获取个股区间交易提示信息
      参数:
        stockid:string 股票代码
        begt:datetime 开始日期
        endt:datetime 截止日期
      返回:二维数组,交易提示信息
    }
      ov:=BackupSystemParameters2();
      SetSysParam(pn_stock(),stockid);
      SetSysParam(PN_Cycle(),cy_day());
      tarr:=marketTradeDayQk(begt,endt);
      rt:=array();
      for i,t in tarr do
        rt&=``GetStockTradePromptEndt(stockid,t);
      return rt;
    End;

    执行范例
       //获取SZ002373在20140410-20140430日的交易提示信息
       return GetStockRangeTradePrompt('SZ002373',20140410T,20140430T);
    执行结果:


    获取板块成分股最近N日交易提示信息
    实现模型:GetBKRangeTradePrompt
    Function GetBKRangeTradePrompt(bkName,N);
    Begin
    {
      说明:获取板块成分股最近N日交易提示信息
      参数:
        bkName:string 板块名称
        N:Int 最近N日
      返回:二维数组,交易提示信息
    }
      ov:=BackupSystemParameters2();
      setsysparam(PN_Stock(),"SH000001");
      setsysparam(PN_Cycle(),cy_day());
      stocks:=GetBK(bkName);
      EndT:=sp_time();
      BegT:=ref(sp_time(),N)+1;
      rt:=array();
      for i,stockid in stocks do
        rt&=GetStockRangeTradePrompt(stockid,begt,endt);
      return rt;
    End;

    执行范例
      //获取科创板成分股在20140124日有交易提示的信息数据
      setsysparam(pn_date(),20240124t);
      t:=GetBKRangeTradePrompt("科创板",1);
      return select * from t where ["交易提示"] end;
    部分结果:


    函数包文件
    附件:TradePrompt.tslfunc