企业微信

为什么你需要把自选股数据下载下来

做股票和期货量化交易,第一步永远是把数据搞到手。通达信自带的自选股功能很方便,但那个数据是锁在软件内部的,你没法直接拿Excel打开,也没法喂给Python策略。把自选股数据下载到本地,意味着你能用pandas做清洗、用backtrader做回测、用机器学习找因子。

很多人卡在这一步,是因为通达信没有一个大按钮写着“导出自选股全部历史数据”。它的数据是分散存放的,需要你主动去触发下载动作。

通达信数据存放的底层逻辑

打开通达信安装目录,你会看到vipdoc文件夹。里面按市场分了sh、sz、bj等子文件夹。每个市场下面又有lday、minline等目录。lday里放的是日线数据,文件后缀是.day。这些文件是二进制格式,不是文本,直接双击打不开。

自选股数据怎么下载到电脑上做量化分析

自选股本身不存储历史K线,它只是一个列表,记录了你选了哪些代码。真正的历史数据需要从服务器下载到本地,然后通达信才会用这些数据画图。你要做的,是确保自选股里的每一只股票、每一个期货合约,本地都有完整的日线和分钟线数据。

方法一 盘后数据下载(最稳妥)

通达信菜单栏找到“系统”->“盘后数据下载”。弹窗里勾选“日线和实时行情数据”,时间范围选“全部”。下面还有“分钟线数据”和“专业财务数据”,做基本面量化就把财务数据也勾上。

重点来了:下载范围默认是“全部A股”,但你只想要自选股。在下载界面有个“下载范围”选项,点开选“自选股板块”。这样通达信只会下载你自选列表里的品种,速度快很多。期货自选股也一样,选“自选期货”即可。

点开始下载,等进度条走完。数据会写入vipdoc对应目录。日线数据文件通常几十KB一只股票,几千只自选股也就几百MB。

方法二 自定义板块导出(适合批量处理)

如果你想把自选股列表本身导出成文本,方便程序读取,可以这样做:

  1. 在通达信里按Ctrl+Z打开自选股界面。

  2. 右键点击表头,选择“导出数据”。

  3. 选择导出格式为Excel或TXT,勾选“当前自选股”。

  4. 保存到桌面,你会得到一个包含股票代码、名称的列表文件。

这个列表本身不含K线,但程序可以拿着这个列表去读vipdoc里的二进制文件。用Python的struct模块解析.day文件,每条记录32字节,包含日期、开高低收、成交额、成交量。

方法三 用pytdx直接拉取(绕过通达信客户端)

如果你不想依赖通达信软件本身,可以用pytdx这个库直接连行情服务器。它支持拉取自选股列表和历史K线。代码示例如下:


from pytdx.hq import TdxHq_API

api = TdxHq_API()

with api.connect('119.147.212.81', 7709):

    # 获取自选股列表(需要先登录,这里简化)

    # 直接拉取某只股票日线

    data = api.get_security_bars(9, 0, '000001', 0, 100)

    print(data)

get_security_bars第一个参数9代表日线,0代表深圳市场。这个方式适合自动化脚本,但需要自己维护自选股代码列表。

数据下载后怎么用

日线.day文件用Python解析后,得到的是numpy数组。列顺序是日期、开盘、最高、最低、收盘、成交额、成交量。日期是整数,比如20240510。成交额单位是元,成交量单位是股。

期货数据要注意,通达信里期货合约代码是市场+代码,比如SHFE.rb2410。下载时确保选的是“自选期货”范围,否则可能拉不到。期货主力连续合约的代码通常带L后缀,比如rbL,下载时要确认本地有对应文件。

把数据转成DataFrame后,就可以算均线、MACD、ATR。做回测时,用shift(1)避免未来函数。自选股池可以定期更新,比如每周重新下载一次盘后数据,保持数据新鲜。

常见坑点

盘后数据下载时,如果通达信正在接收实时行情,可能会冲突。建议收盘后15:30再操作。

分钟线数据下载很慢,如果只做日线策略,不要勾选分钟线。

自选股里如果有退市或停牌股票,下载会卡住。提前清理掉这些代码。

vipdoc文件夹如果放在C盘,权限可能不够。把通达信装到D盘,或者以管理员身份运行。

期货夜盘数据在第二天白天才会合并到日线文件里,当天晚上下载的日线可能不完整。

把数据变成策略

自选股数据下载只是原材料。真正赚钱的是你对数据的加工。用pandas算滚动波动率,用numpy做向量化回测,用matplotlib画资金曲线。股票和期货的差别在于期货有杠杆和到期日,回测时要考虑移仓换月成本。

一个实用的做法是:每天收盘后自动运行脚本,下载自选股日线,更新本地数据库,然后跑一遍预警信号。通达信本身有预警功能,但自定义程度低。用Python加本地数据,你可以实现任意复杂的条件,比如“自选股中同时满足20日均线上穿60日均线且RSI小于70的品种”。

数据是量化交易的燃料。把自选股数据下载这件事做扎实,后面写策略才不会有后顾之忧。