FAQ > 金融建模 > 数据提取 > 行情数据提取

Q:天软客户端如何下载一段时间的高频行情数据到本地?    

  • A:下载高频行情数据到本地需要先从天软服务器获取行情数据,再使用交互模型导出数据到本地即可。
      获取天软行情数据参考:FAQ:交易明细表tradetable、分时表markettable
      从天软客户端导出数据到本地参考模型:FAQ:ExportFile

    使用范例
    下面提供三个范例:
    范例1:下载明细
    范例2:下载期货1分钟线
    范例3:下载股票1分钟线-并分离出盘前集合竞价

    范例一:下载A股一年交易明细数据存为本地csv文件
      //保存路径
      savedir:="C:\\天软高频行情\\成交明细\\";
      begt:=20220101t; //开始日期
      endt:=20221231t; //截止日期
      setsysparam(pn_cycle(),cy_day());
      datearr:=markettradedayqk(begt,endt);
      rt:=array();
      for i,vendt in datearr do
      begin
        strt:= datetostr(vendt);
        stocks:=GetAbkbyDate("A股",vendt);
        for j,stock in stocks do
        begin
          echo strt$" "$stock;
          data:=select *,datetimetostr(["date"]) as "date"
             from tradetable datekey vendt to vendt+16/24 of stock end;
          ret:=rdo2 ExportFile(ftCSV(),"",savedir$strt$"\\"$stock$".csv",data);
          if ret then zt:="导出成功";
          else zt:="导出失败";
          rt[x,"日期"]:=strt;
          rt[x,"代码"]:=stock;
          rt[x++,"取数"]:=zt;
        end
      end
      return rt;

    部分结果:

    本地文件:



    范例二:下载CU品种期货一年的分钟线数据存为本地xlsx文件
      //保存路径
     savedir:="C:\\天软高频行情\\1分钟线\\";
     begt:=20220101T; //开始日期
     endt:=20221231T; //截止日期
     setsysparam(pn_cycle(),cy_day());
     datearr:=markettradedayqk(begt,endt);
     rt:=array();
     setsysparam(pn_cycle(),cy_1m());
     setsysparam("cyclefilter", 1);//过滤掉节假期间产生的夜盘
     for i,vendt in datearr do
     begin
      strt:= datetostr(vendt);
      //--上个交易日--确定数据开始时间,防止夜盘被漏
      vBegT:=i>0?datearr[i-1]:specall(dateof(ref(sp_time(),1)),array(pn_stock():"SH000001",PN_Cycle:cy_day(),PN_Date():vendt));
      stocks:=GetFuturesID("CU",vEndt);
      for j,stock in stocks do
      begin
       echo strt$" "$stock;
       data:=select ["StockID"],["StockName"],
         datetimetostr(["date"]) as "date",
        ["close"],["high"],["open"],["low"],["vol"],["amount"],["cjbs"] as "量差",
        ["sectional_cjbs"] as "持仓量",
        ["syl1"] as "结算价",["syl2"] as "昨结算"
         from markettable datekey vbegt+18/24 to vendt+18/24 of stock end;

       ret:=rdo2 ExportFile(ftCSV(),"",savedir+strt$"\\"$stock$".csv",data);
       if ret then zt:="导出成功";
       else zt:="导出失败";
       rt[x,"日期"]:=strt;
       rt[x,"代码"]:=stock;
       rt[x++,"取数"]:=zt;
      end
     end
     return rt;

    部分结果:



    范例三:下载指定指数成份股的每日1分钟线行情,存放方式:指定日文件夹/一个股票存放一个文件
      //保存路径
     savedir:="C:\\天软高频行情\\1分钟线\\";
     begt:=20220101t; //开始日期
     endt:=20221231t; //截止日期
    setsysparam(pn_cycle(),cy_day());
     datearr:=markettradedayqk(begt,endt); //日线交易日序列
     rt:=array();
     setsysparam("cyclefilter", 3);//分离出集合竞价--若不需要的可注释
     setsysparam(pn_cycle(),cy_1m());
     for i,vendt in datearr do
     begin
      strt:= datetostr(vendt);
      vBegT:=i>0?datarr[i-1]:specall(dateof(ref(sp_time(),1)),array(pn_stock():"SH000001",PN_Cycle:cy_day(),PN_Date():vendt)); //日线的昨日
      stocks:=getbkbydate("SH000905",vEndt);//中证500的成份股
      for j,stock in stocks do
      begin
       echo strt$" "$stock;
       data:=select *,datetimetostr(["date"]) as "date"
         from markettable datekey vbegt+16/24 to vendt+16/24 of stock end;
       ret:=rdo2 ExportFile(ftXLS(),"",savedir$strt$"\\"$stock$".xlsx",data);
       if ret then zt:="导出成功";
       else zt:="导出失败";
       rt[x,"日期"]:=strt;
       rt[x,"代码"]:=stock;
       rt[x++,"取数"]:=zt;
      end
     end
     return rt;

    导出结构截图: