东方财富下载下来的数据到底藏哪儿了,我来告诉你
下载与安装步骤
点本页下载按钮,这事儿看着简单,但很多人一上来就手滑。我最早用东方财富的时候,也是直接猛点那个绿色大按钮,结果装完发现桌面上多了个什么“东方财富终端极速版”的图标,进去一看界面完全不同。后来才搞清楚,下载页面上那个默认推荐的是极速版,它数据接口跟标准版不太一样,某些历史数据拉取会慢半拍。如果你跟我一样,主要做中长线分析、需要大量下载分时和历史K线,建议往下翻一翻,找到“PC版下载”那个小字链接,点它。安装包大概六七十兆,不像一些炒股软件动辄两三百兆那么夸张,但装完会在线更新一些组件,第一次打开要等个两三分钟,别急着关进程。
安装过程中有两点容易踩坑。一是安装路径,默认往C盘塞,我一开始就吃了这个亏,用了半年C盘爆红,后来才发现软件会在本地默默缓存大量日线数据。建议装的时候手动改到D盘或者其他分区,比如D:\eastmoney\,这样以后清理数据也方便。二是那个“开机自启动”选项,我劝你取消勾选,不然每次电脑开机都弹个行情窗口,挺烦人的,而且它后台进程会占内存,开久了风扇呼呼转。装好后第一次启动,会让你选行情站点,我推荐选“上海主站”,数据延迟相对低一些,我试过深圳节点偶尔会多跳好几个tick的误差。
有个细节很多人不知道,东方财富的安装包下载后其实是压缩文件,不是直接exe双击就完事。你点完下载按钮,得到的是一个类似“eastmoney_2023.exe”的文件,但这个文件实际是自解压包,双击后它会先解压到临时目录再启动安装程序。如果你网络不稳定,解压过程中弹个“文件损坏”的提示,别慌,删掉重新下载一回,把下载工具里那个“多线程加速”关掉,有时候线程太多反倒容易丢包。
数据文件默认藏哪里
数据下载完了,你以为在软件里点“导出”就能直接拿到CSV?太天真了。我第一次找数据的时候,翻遍了C盘用户文件夹,最后在一个犄角旮旯里发现。先说说默认路径,如果你一开始没改安装位置,数据文件通常在C:\Users\你的用户名\AppData\Roaming\EastMoney\这个目录下面。注意AppData是隐藏文件夹,我当年为了找它,还得手动在资源管理器地址栏敲路径。进入这个目录后,你会看到一堆以“finance_”开头的文件夹,比如“finance_stock_1A0001”之类的,里面藏着小到几KB、大到几百MB的数据文件。
最核心的数据是那个“DataCache”文件夹,日常下载的历史K线、分时数据就囤在那儿。打开一看,里面是.sqlite后缀的数据库文件,比如“SH000001.sqlite”,代表上证指数的日线数据。你直接双击是打不开的,得用SQLite工具查看。我试过用DB Browser for SQLite打开,里面表格结构很乱,有“tbl_KDATA_DAY”之类的表名,字段是英文缩写,比如“fDate”是日期,“fOpen”是开盘价,“fClose”是收盘价,以整数形式存储,需要自己除以1000才能得到真实价格。这个细节坑了我半天,后来才发现原来软件内部价格单位是千分之一元。
还有一个容易被忽略的地方,就是“UserData”文件夹。这里面存的是你的自选股列表、画线工具保存的图形、甚至是条件预警的触发记录。如果你重装系统,忘记备份这个文件夹,自选股会丢得干干净净。我有次换电脑,傻乎乎只拷贝了DataCache,结果重新打开软件,自选股列表只剩下几个默认股票,得一个个重新添加,那感觉比加班还难受。
行情数据下载的具体操作
在软件里下载数据,步骤不算复杂,但选项多到让人眼花。打开东方财富,点击菜单栏的“工具”->“数据导出”,弹出一个窗口,默认页签是“个股数据”。你需要先输入股票代码,比如600519,然后勾选想要的数据类型,比如“日K线”或者“5分钟K线”。注意时间范围那里,软件最多能拉5年的日线数据,但要是选“1分钟K线”,你只能拉最近一年,再老的服务器就不给了,得用其他途径补。
有个参数特别容易搞错,就是“复权类型”。默认是“前复权”,如果你是要做技术分析比如画趋势线,前复权是对的,因为价格连续性好。但假如你纯粹想算原始价格,比如看除权前的最低点,那就得选“不复权”。我试过一次用前复权数据算出金叉点,结果跟不复权算出的信号差了整整两天,差点做错单。所以下载前一定想清楚自己要什么,别偷懒选默认。
下载完的数据,软件默认导出成.xls文件,存放在你指定的文件夹里。如果你想要CSV格式,得在导出窗口的“文件类型”下拉框里手动选“CSV文件”,这个选项不容易被发现,在角落里小小的。导出后的CSV文件,如果用Excel打开,中文字段名可能会乱码,这是因为国内CSV默认是ANSI编码,而Excel的UTF-8支持不好。解决办法是先用记事本打开CSV文件,另存为时选UTF-8 with BOM,就不会乱码了。
历史数据下载与补全技巧
做量化回测的老哥们最怕的就是数据缺口。东方财富虽然免费,但历史数据并非全量提供。比如你想拉兴业银行2010年的日线,软件界面最多只能显示到2015年往回。我找到的解决方法是,换个行情源。在软件界面的左上角搜索框里输入股票代码,按回车进入个股页面,然后点击“更多”->“历史行情”,这里能拉更早的数据,但最多到2000年,再早的就没有了。如果你需要1990年代的数据,只能去花钱买专业数据源,别指望免费软件全给你。
还有一个土办法,利用软件的分时下载功能。在“数据导出”窗口里,数据类型选“分时数据”,下载最近一年的分时明细,每3秒一笔。这个数据量巨大,一只股票一年的分时数据能超过100MB,下载很慢,我夜里挂着,第二天早上醒来才下完。有了分时数据,你可以通过自己写脚本(比如Python的pandas库),把它聚合成年、月、日K线,精度甚至比官网给的日线还高。不过要注意,分时数据没有复权处理,你聚合后得自己算复权,否则遇到分红除权,价格会扭曲。
如果你遇到数据下载到一半卡住,进度条不动,八成是网络问题或者服务器限流。东方财富的免费用户有每小时请求次数限制,具体数字不公布,但体感是连续下载上百个股票时,会突然被踢下线,提示“操作过于频繁”。这时候退出软件等十来分钟再开,别一直重试,越试封得越久。我后来学乖了,每次只选最多20只股票,分批次下载,晚上挂通宵。
数据导出后的文件处理
下载下来的文件,千万别直接扔桌面等着用。默认导出的文件名是“数据导出_YYYYMMDD_HHMMSS.xls”,没有股票名称,只有时间戳,多个文件混在一起根本分不清哪个对应哪只股票。我第一回导出10只股票的数据,看着一堆乱码文件名,只好逐个打开Excel看第一列股票代码,折腾了半小时。后来我养成习惯,在导出窗口的“文件名”那里手动改成“股票代码_起始日期_结束日期”,比如“600519_2020_2023”,这样一眼就知道是什么。
文件格式上还有个坑:导出的CSV文件分隔符,有的是逗号,有的是Tab,取决于Excel的地区设置。如果你的系统区域是中文中国,Excel默认CSV分隔符是逗号,但有些版本的东方财富会输出分号,导致你用Python的pd.read_csv读进去时,所有数据变成一列。解决办法很简单,用记事本打开CSV文件,看第一行分隔符是啥,然后在代码里指定sep=';'或者sep=','。我吃过这个亏后,干脆每次都用Excel直接打开.xls文件,再另存为CSV,顺便检查一下股价数据有没有缺失值。
还有一点,导出的数据里,成交额那一列经常是“--”符号,代表缺失值,直接当成0去计算会出大事。比如你算平均价,把成交额为零的成交除以零,结果全乱。我一朋友就因为这个原因,用导出的数据做回测,结果策略夏普比率奇高,后来发现是把成交额缺失当成了零,白白丢了很多交易信号。建议用Excel的查找替换功能,把“--”替换成空单元格,或者写个脚本跳过缺失行。
常见问题与解决办法
数据下载失败是家常便饭。最典型的情况是下载时提示“网络连接失败”,但你能正常刷微博,说明不是你家网络问题,是东方财富的服务器抽风。我遇到好几次,都是发生在交易时段,可能是访问量太大。解决办法是避开交易时间,比如晚上10点以后下载,成功率很高。另一个办法是切服务器节点,在软件“系统设置”->“网络”里换个备用地址,比如从上海节点换到深圳节点,有时候就能连上。
有人会遇到下载的数据不全,比如缺了某一天的K线。我查了官网FAQ,原因可能是当天该股票停牌,没有交易数据。但有时候数据真的丢包了,比如2022年某次服务器宕机,很多用户都反馈缺少2022年9月15日的数据。这时候可以试试在软件里手动刷新,右键点击个股界面的“日K线”标签,选“数据修复”,软件会重新从服务器拉取缺失的那天数据。我试过几次修复,成功率大概70%,剩下的就只能等官方补发。
如果修复也没用,还有一招:用手机端东方财富APP下载同样数据,然后通过USB传到电脑。在手机APP里搜索股票,进入日K页面,点击右上角的“数据导出”,它会生成本地文件,再数据线连接电脑拷贝出来。这个方法比较笨,但应急时顶用。我出差时笔记本没带,就是用手机下载完再转存的。
个人经验与小技巧
数据管理这事儿,真得自己多存几个心眼。我建议每次下载完,把文件打包成ZIP,存一份到移动硬盘或者网盘上。比如每季度整理一次,按年份命名“2023Q1_stock_data.zip”,这样万一电脑坏了或者软件重装,不至于从头再来。另一个小技巧是,下载时不要只下载日线,顺手把月线和周线也勾上,虽然文件大一点,但未来你可能需要做长周期比较,省得再翻一次老数据。
数据安全方面,东方财富的数据文件里不包含账户信息,但包含你的自选股列表,如果自选股里有敏感持仓,比如你买了很多某只庄股,建议定期用加密工具把那个“UserData”文件夹压缩加密。我以前没在意,有一次借电脑给朋友,忘了删文件夹,他好奇点开了我的自选股,发现我买了一大堆ST股票,那场面尴尬得不行。
最后提醒一句,免费软件的数据终究有延迟。东方财富的数据来源是交易所授权的,但它的服务器更新不是实时的,存在几秒到几十秒的延迟,做短线交易时不够用。我测试过,它跟付费的L2数据相比,10点整的即时报价差了大概15秒。所以如果你要高频交易,建议别依赖它下载下来的分时数据,要么买官方L2服务,要么用其他专业数据商。对于趋势投资或者复盘分析,这些免费数据完全够用,不用太纠结那几秒的差别。