FAQ > 金融建模 > 建模问题 > 数据量大的程序该如何处理

Q:如何合理下载大量高频行情数据?    

【简述】说明:有些用户在天软中希望一次性提取或下载全市场行情等类大数据时,会发现电脑卡顿甚至死机。其主要原因不是因为天软限制了下载大小(天软服务器端运行内存不超过16G,返回结果集不超过1G),而是因为下载数据需要通过网络传送以及消耗本机电脑大量缓存,容易造成网络断开或电脑假死状态,若数据量过大,会导致运行失败。这里用户应该合理处理数据,可通过分段提取导出,即取一段存一段的方式,使得同一时间占用网络及本地资源不那么大,程序跑起来更流畅。
  • 第一步:如何拆分数据更为合理呢?
    重点:在天软中,取数其实是很快的,时间主要花费在数据传送到客户端及将数据从客户端处理到客户电脑上。
    若将全部导出放一块,这种不方便导出不说,使用时也不方便调用。所以应该结合使用目的,通过估算数据大小合理存放。(一般建议用户分日期或证券进行文件分开存放)
    下面提供一般情况下的数据大小及运行时间,案例中使用 tradetable/markettable取数并导出所有字段,stm表示导出为天软数据文件,xlsx表示导出为Excel数据文件:
    1、一天一个票的交易明细:
    品种测试证券取数日期数据行数取数花费时间(s)导出花费时间(stm/xlsx)(s)导出后数据大小(stm/xlsx)
    股票SZ00000120190517T48130.07585140.749813/ 1.463296.02M/1.73M
    商品期货(有夜盘)CU190620190517T164180.2727392.77564/ 5.5812220.4M/4.51M
    期权OP1000185420190517T179270.2961573.03748/ 5.7135122.6M/4.95M
    股指期货(无夜盘)IF190620190517T274070.4224914.5664/ 8.499834.2M/7.79M

    2、 一天一个票的1 分钟线:
    品种测试证券取数日期数据行数取数花费时间(s)导出花费时间(stm/xlsx)(s)导出后数据大小(stm/xlsx)
    股票SZ00000120190517T2400.006672870.0765149/ 0.120979308kb/106kb
    商品期货(有夜盘)CU190620190517T4650.01876720.434947/ 0.166271595kb/168kb
    期权OP1000185420190517T2400.01165890.0840786/ 0.123015310kb/83kb
    股指期货(无夜盘)IF190620190517T2400.02589660.0565405/ 0.0988959307kb/88kb

    3、大数据量测试(可以出结果)
    重点:以一次性提取一个股票的交易明细不超过22个交易日的量来估算。
    品种数据规格证券个数交易日数数据行数取数花费时间导出花费时间(stm/xlsx)Cpu性能(运行中最高占用)导出后数据大小(stm/xlsx)
    股票交易明细122963521.1813618.3097/ 32.378765%120M/35M
    股票交易明细2511146081.8808322.5957/ 39.462188%143M/39.7M
    股票1分钟线1400955203.8937624.7214/ 38.173678%119M/40.8M
    股票1分钟线49411185603.6716126.605/ 46.945775%195M/46.3M
    股指期货(无夜盘)交易明细18(连续8个交易日)1457761.6864132.8014/ 54.74181%181M/40.6M
    股指期货(无夜盘)交易明细(分钟线参考股票)11(取相对比较活跃的合约)11583472.3322741.9881/61.2987105%失败/44M
    商品期货(有夜盘)交易明细18(连续8个交易日)1193061.6810821.1816/39.974799%148M/33.2M
    商品期货(有夜盘)1分钟线12501032303.8037119.364/34.1984101%128M/29.2M
    期权交易明细18(连续8个交易日)1162041.4446722.8526/39.1393131%146M/32.1M
    期权1分钟线10100(连续100个市场交易日,)235200(980个日线的分钟线)14.083969.5164/93.6462130%失败/73.7M

    注1:以上测试是测试人员测试结果,与当时的环境状态有关,仅供参考。
    注2:数据导出到本地时天软客户端会出现假死状态,这属于正常现象,此时不要对客户端进行操作,需等待恢复。
    注3:上表中失败的原因为stm文件最大不能超过200M。
    注4:花费的时间还与服务器性能相关,所以可能相同的程序执行花费的时间会有所差异。
    注5:以上测试电脑配置如下:
    Windows版本Windows 10 家庭中文版2018
    处理器Intel(R)Cor(TM)is-8250U CPU @ 1.60GHz  1.80GHz
    RAM8.00GB(7.90GB可用)
    系统类型64位操作系统,基于x64的处理器
    Excel版本Microsoft Office 家庭和学生版2016
    天软服务器版本天软正式版服务器2019-05-21日最新版本
    天软客户端版本64位  2019-05-21最新版本

    第二步,如何提取行情数据?
    数据说明与提取方法案例,请查阅: FAQ:Q:高频、超高频数据说明
    FAQ:天软行情数据及处理机制说明
    交易明细的提取:FAQ:TRADETABLE
    周期线行情的提取:FAQ:MARKETTABLE
    时间序列指标的提取:FAQ:NDay
    第三步,如何实现分批次数据导出?
    这步的实现可以参考链接中的三、分批导出(大数据导出)中的范例1:FAQ:Q:多种导出数据(txt/xls/csv/stm)到本地的方法