FAQ > 金融建模 > 建模问题 > 平台使用

Q:如何在自己的程序中实现证券数据专家提取数据的功能    

  • A:用户通过证券数据专家提取数据,在自己的程序中也可以实现同样的功能。在证券数据专家中单击运行按钮右边的第二个按钮(小人头)可以得到代码,可以直接放到程序中,加上相应的系统参数的设置,即可以运行出同样的结果,也可以通过query,for等其他方式实现。

    参考说明:
    数据专家中获取可执行代码:FAQ:Q:天软表格ID与指标ID
    query方法的使用:FAQ:Query
    for循环的说明:FAQ:FOR

    实现范例
    范例1:通过query访问代码列表的行情数据

      //代码列表
      stockarr:=array("SZ000002","SH600000","SH600006","SH600007","SH600008");
      stockstr:=array2str(stockarr);
      setsysparam(pn_date(),inttodate(20110112));  //系统时间
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数

      return Query("",stockstr,True,"",
      "代码",DefaultStockID(),
      "名称",CurrentStockName(),
      "收盘价",close(),
      "成交量",vol(),
      "成交金额",amount());

    返回结果:


    范例2:通过for访问代码列表的行情数据

      //代码列表
      stockarr:=array("SZ000002","SH600000","SH600006","SH600007","SH600008");
      setsysparam(pn_date(),inttodate(20110112));  //系统时间
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数
      r:=array();
      for nI:=0 to length(stockArr)-1 do
      begin
        stockId:=stockArr[nI];
        setsysparam(pn_stock(),stockId);
        r[nI]['代码']:=stockId;
        r[nI]['名称']:=StockName(stockId);
        r[nI]['收盘价']:=close();
        r[nI]['成交量']:=vol();
        r[nI]['成交金额']:=amount();
      end;
      return r;

    返回结果:


    范例3:通过query访问板块行情数据

      //板块名称
      bkName:="上证A股;科创板";
      setsysparam(pn_date(),inttodate(20110112));  //系统时间
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数
      return
      Query(bkName,"",True,"","代码",DefaultStockID(),
      "名称",CurrentStockName(),
      "收盘价",close(),
      "成交量",vol(),
      "成交金额",amount());

    部分结果:


    范例4:通过for访问板块行情数据

      //板块名称
      bkName:="上证A股;科创板";
      setsysparam(pn_date(),inttodate(20110112));  //系统时间
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数
      stockArr:=getbk(bkName);           //取板块下面的股票,可以是系统板块,也可以是用户自定义的板块
      r:=array();
      for nI:=0 to length(stockArr)-1 do
      begin
        stockId:=stockArr[nI];
        setsysparam(pn_stock(),stockId);
        r[nI]['代码']:=stockId;
        r[nI]['名称']:=StockName(stockId);
        r[nI]['收盘价']:=close();
        r[nI]['成交量']:=vol();
        r[nI]['成交金额']:=amount();
      end;
      return r;

    部分结果:


    范例5:通过query访问代码列表的财务数据

      //代码列表
      stockarr:=array("SZ000002","SH600000","SH600006","SH600007","SH600008");
      stockstr:=array2str(stockarr);
      return
      Query("",stockstr,True,"",
      "代码",DefaultStockID(),
      "名称",CurrentStockName(),
      "营业收入(20081231)",report(46002,20081231),
      "营业收入(20091231)",report(46002,20091231),
      "归属于母公司所有者净利润(20081231)",report(46078,20081231));

    返回结果: