1.1 股票日频率行情数据下载脚本
本节脚本是基于万得量化接口下载股票日频率行情数据的案例。通过修改万得量化接口中的WSD函数的参数,这个案例就可以改成其他数据下载脚本。
程序的整体流程是:查询数据库的最后更新日期,然后从最后更新日期开始更新到最新日期。如果下载中万得量化接口失去响应,则启动循环尝试的程序,否则自动更新直至完成,最后启动下一个数据更新脚本。
如果进入循环尝试的脚本中,则尝试5次,若依然下载不成功,则关闭本程序,重新启动Matlab程序并再次运行这个脚本;若尝试在5次以内成功,则跳出这个脚本继续运行直至完成,最后启动下一个数据更新脚本。
脚本代码如下。脚本的抬头部分是程序的基本信息和脚本功能说明。
下面部分是一些下载数据的前期工作,包括清理前一个程序的遗留变量、启动量化接口、连接数据库。
在做好数据更新的准备工作之后,接下来要进行数据的更新,首先获取更新日期及股票代码,然后进行具体的数据更新。
下面以新增挂牌股票的更新为例进行演示。
上面代码中,当判断响应无效后调用repeat_and_quit,这个函数的功能是重新调用5次WSD函数来获取股票数据。如果连续5次依然响应无效,则关闭Matlab程序重新启动一次。输入参数包括量化接口对象w、存储数据的变量temp_data、目标股票new_stock{i}、最新股票列表code_new、起始时间2000-01-04、终止时间end_date、目标数据库stock_daily_market_data、重启程序的批文件stock_market_data_to_sql.bat,最后是目标股票的数据字段。
接下来下载对应的数据。
这一部分用于更新已经挂牌的股票的数据,包括取出股票列表的数字部分、循环MySQL数据库中的历史股票列表、提示历史挂牌股票的更新进度、找到目标股票的最后更新日期、下载目标股票从最后更新日期至end_date的数据。
在下载的时候,有些情况需要进行相应的处理,比如数据已经更新到最新,或者没有数据、指标无效、股票已经摘牌,或者接口异常等,具体见下面的代码。
上面代码中的repeat_and_quit函数,用于在万得响应无效的时候启动尝试下载的模式。后面在本数据更新程序的最后,会详细对这一程序进行介绍。下面接着介绍本程序中进行数据上传之前的准备代码,具体如下。
同前面程序注释中说明的,有些万得版本中的第17列数据无法直接在下面调用的datainsert中上传,所以通过tt{:}取出日期再存回,去掉一层元胞。如果使用者的万得接口没有这个问题,可以注释掉下面这几行代码。
接下来向MySQL数据库上传数据,数据更新结束之后,发送邮件提示程序更新结束,并且关闭万得量化接口和数据库。
前面代码中有一个repeat_and_quit函数,用于在万得响应无效的时候启动尝试下载的模式。代码如下。
如果连续尝试5次依然显示万得响应无效,repeat_and_quit函数会启动批文件脚本并关闭本脚本。bat文件的代码如下: