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

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

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

    参考说明:
    代码实现数据专家说明:FAQ:Q:如何用代码实现证券时间序列专家的功能
    数据专家中获取可执行代码:FAQ:Q:天软表格ID与指标ID
    QueryWithPeriod方法的使用:FAQ:QueryWithPeriod
    for循环的说明:FAQ:FOR

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

      //代码列表
      stockarr:=array("SZ000002","SH600000","SH600006","SH600007","SH600008");
      stockstr:=array2str(stockarr);
      setsysparam(pn_begt(),inttodate(20120801));  //系统开始日期
      setsysparam(pn_endt(),inttodate(20121001));  //系统截止日期
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数
      setsysparam("TimeIndex",1);          //时间主导排序
      return
      QueryWithPeriod("",stockstr,@True,"",
      "收盘价",@close(),
      "成交量",@vol(),
      "成交金额",@amount());

    部分结果:


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

      //代码列表
      stockarr:=array("SZ000002","SH600000","SH600006","SH600007","SH600008");
      begt:= inttodate(20120801);   //开始日期
      endt:= inttodate(20121001);   //截止日期
      setsysparam(pn_cycle(),cy_day());  //系统周期
      tarr:= MarketTradeDayQk(begt,endt); //交易序列
      setsysparam(pn_rate(),1);      //系统复权方式
      setsysparam(pn_rateday(),0);    //系统复权基准日
      setsysparam(pn_Precision(),2);   //系统小数
      r:=array();
      x:=0;
      for i,t in tarr do
      begin
        SetSysParam(pn_date(),t);
        for j,stock in stockarr do
        begin
          SetSysParam(pn_stock(),stock);
          name:=StockName(stock);
          r[x,"时间"]:=datetostr(t);
          r[x,name$"@收盘价"]:=close();
          r[x,name$"@成交量"]:=vol();
          r[x,name$"@成交金额"]:=amount();
        end
        x++;
      end
      SortTableByField(r,"时间",1); //日期排序
      return r;

    部分结果:


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

      //板块名称
      bkname:="上证A股";
      setsysparam(pn_begt(),inttodate(20120801));  //系统开始日期
      setsysparam(pn_endt(),inttodate(20120806));  //系统截止日期
      setsysparam(pn_cycle(),cy_day());       //系统周期
      setsysparam(pn_rate(),1);           //系统复权方式
      setsysparam(pn_rateday(),0);         //系统复权基准日
      setsysparam(pn_Precision(),2);        //系统小数
      setsysparam("TimeIndex",1);          //时间主导排序
      return
      QueryWithPeriod(bkName,"",@True,"",
      "收盘价",@close(),
      "成交量",@vol(),
      "成交金额",@amount());

    部分结果:


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

      //板块名称
      bkname:="上证A股";
      //代码列表
      stockarr:=getbk(bkname);
      begt:= inttodate(20120801);   //开始日期
      endt:= inttodate(20120806);   //截止日期
      setsysparam(pn_cycle(),cy_day());  //系统周期
      tarr:= MarketTradeDayQk(begt,endt); //交易序列
      setsysparam(pn_rate(),1);      //系统复权方式
      setsysparam(pn_rateday(),0);    //系统复权基准日
      setsysparam(pn_Precision(),2);   //系统小数
      r:=array();
      x:=0;
      for i,t in tarr do
      begin
        SetSysParam(pn_date(),t);
        for j,stock in stockarr do
        begin
          SetSysParam(pn_stock(),stock);
          name:=StockName(stock);
          r[x,"时间"]:=datetostr(t);
          r[x,name$"@收盘价"]:=close();
          r[x,name$"@成交量"]:=vol();
          r[x,name$"@成交金额"]:=amount();
        end
        x++;
      end
      SortTableByField(r,"时间",1); //日期排序
      return r;

    部分结果: