ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

大智慧扩展数据与自定义数据实战:从导入到公式调用全解析

大智慧扩展数据与自定义数据实战:从导入到公式调用全解析 简介大智慧新一代数据管理是股票数据分析中的常见需求这份doc资料系统讲解附加数据、扩展数据和自定义数据三种扩展方式面向需要借助大智慧公式系统进行个性化行情分析的投资者和量化研究者。资源为1个doc文档大小约34KB内容结构紧凑可直接查阅。目前已有843人学习下载。文档从三种数据类型的定义、引用方式入手详细说明附加数据中EXTRADATA、extrastring的使用场景扩展数据中EXTDATA(N)与每日11组交易细节的存储逻辑以及自定义数据中selfdata、selfstring的调用方法并对比了扩展数据与自定义数据在数据来源、股票相关性、数据类型上的差异。针对扩展数据管理器还介绍了指标公式设置、横向排名数据生成、0-N自然排序与1-1000归一化排序的区别、除权处理以及同步更新动态数据等操作细节同时指出中途更改设置会清除历史数据等注意事项帮助读者少走弯路快速上手大智慧数据扩展功能。 大智慧里的扩展数据、自定义数据这俩词搁新手眼里总带着一股神秘感。老股民可能听过一耳朵但真拿到手里能玩明白、能让自己的选股逻辑跑起来的确实不多。今天我就不绕弯子把这套东西从头拆开讲清楚它到底是什么、能帮你做什么、怎么一步步把外部数据弄进大智慧里让它变成你自己的指标和条件。这篇文章适合谁自己平时有固定数据源比如东财、同花顺导出的龙虎榜、资金流、北向持仓想把这些数据搬进大智慧看盘界面里的人也适合写公式写到一半发现“嗯这个数据软件里根本没有我得自定义”的人。只要跟着操作一遍你会回来感谢这个功能的。1. 大智慧扩展数据与自定义数据先搞清楚它们到底能干什么1.1 扩展数据、自定义数据、内置数据的区别先说个直观类比。大智慧本身自带的数据相当于超市里已经洗好切好的净菜拿回家直接下锅就行扩展数据则相当于你自己去菜市场买回来的菜洗好切好按你自己口味放冰箱里需要的时候再取出来用。两者的核心区别就在于“来源”和“更新方式”。我见过不少人对这两个概念一直混淆这里用一张表把它彻底掰扯清楚数据类别数据来源更新方式用途定位内置数据软件官方自动更新行情、财务、板块等基础数据开箱即用扩展数据用户自定义外部数据手动导入或程序批量更新存放“软件里没有”的数据供公式调用自定义数据主要是用户自己录入/导入手动或半自动和扩展数据类似但更多是辅助性、临时性数据说直白点扩展数据是“给公式吃的外挂数据”自定义数据则更像是“为公式编制的说明书”。很多网上的公式包里会有“外延数据”“扩展数据”这样命名的文件实际上指的就是这类东西。把它们放在大智慧安装目录下的特定文件夹里软件启动时就会加载到公式里才能调用得到。1.2 典型应用场景从导入沪深港通资金到自建评分指标我最初接触这个功能是当时需要把每日的北向资金个股持仓变化展示在个股K线图下方作为一个附图指标。大智慧里没有现成的北向数据网上有第三方提供的文本数据可怎么接进去琢磨了半天最后是靠自定义数据这个口子解决的。这种场景其实特别多我总结了几个最常见、最有实战价值的外部资金数据沪深港通持股、融资融券余额、龙虎榜机构席位这些数据大智慧内置的不全或者更新不够及时自己做数据导入后就能画出独立的附图指标随时观察资金异动。行业与板块自定义标签比如你自己定义了一个“新能源产业链”板块里面的个股是你自己手动整理的。你可以创建一个自定义数据把“是否为新能源产业链”标记成1或0然后直接写条件选股公式筛选出来。自建评分模型把公司基本面数据净利润增速、毛利率、ROE结合技术面数据算出一个综合评分。因为大智慧内置的财务数据频率低、字段固定你自己加工后的分值更适合作为扩展数据存储。事件驱动数据例如解禁时间表、股东大会日期。这类数据时间跨度大一次性事件用内置数据根本不可能覆盖手动做成扩展数据反而最直接。那么扩展数据到底怎么添加、怎么调用接着往下看。2. 数据准备与文件规范这一步错后面全白干2.1 常见数据来源与格式转换做扩展数据的第一个大坑就是数据源格式五花八门。有的下载下来是Excel表格有的是CSV有的直接在网页表格里。大智慧的扩展数据文本文件有自己的固定格式不是说你拿个CSV改个后缀名就能用的。我常用的做法是先用Excel或Python把数据处理成标准的“日期 代码 数值”三列结构。简单举几个例子20240105,600519,1234.56 20240108,600519,1280.00这里第一列是日期必须纯数字格式不能带斜杠或横线第二列是证券代码通常是去掉交易所前缀的纯6位数字第三列及之后才是你真正要用的数据字段。这里有几个非常关键的细节日期格式大智慧里面默认使用不带横杠的日期比如 20240105 而不是 2024-01-05不然导入后识别会出问题。代码必须补足6位像平安银行是000001就写 000001不要写成 1 或者 01。分隔符优先使用英文逗号不要用中文逗号也不要依赖Tab分隔因为有些版本的导入功能对Tab支持并不好。小数位数尽量保留2到4位有效小数。比如 1234.56 是合理的不要写成 1,234.56带了千分位逗号程序会把这个文件认错。2.2 ExternalData文本文件的列结构与编码细节有了标准的数据源之后你把数据整理成文本文件然后要放到大智慧安装目录下的\userdata\SelfData\ExternalData\文件夹里。放进去之后文件名得注意一下这个文件名其实对应的是你在软件里看到的“扩展数据名称”。举个例子你想新增一个“北向资金持股”的扩展数据那么文件名可以叫NorthBound.dat或者其他英文名。但这里有个很多人不知道的要点大智慧支持用 ini 配置文件来定义扩展数据的属性。在ExternalData文件夹下面需要建立一个ExternalData.ini配置文件如果不存在就手动新建内容类似[NorthBound] Name北向持股 Type0 TxtFileNameNorthBound.dat SecType1 TimeType2 DataCount1 ChangeAbility0各个参数的意思我给新朋友们解释一下Name这是显示在软件里的中文名称比如“北向持股”后面写公式时要用这个中文名调用。TxtFileName指的是实际的数据文本文件名比如NorthBound.dat注意文本文件名不要用中文有些版本对中文文件名支持不好。Type0表示按股票代码存储1表示按指数代码存储。绝大多数个股数据用0。SecType1表示股票2表示指数3表示基金等。默认填1就行。TimeType0表示按交易日存储配日期1表示按自然日存储2表示按周期存储。股票日线数据用0即可。DataCount这个尤其重要它表示每个交易日你要存几个扩展数据值。比如你只存“北向持股数量”就填1如果你同时还存“北向持股占比”就填2。ChangeAbility0表示禁止后续程序修改1表示允许修改。建议填1方便你日后导入新数据时覆盖更新。配置文件放好后大智慧下次启动时就会自动把NorthBound.dat读取进来你可以在软件的扩展数据管理里看到它。2.3 新增数据的两种路径手工维护与程序批量生成数据文件一多纯靠Excel手动整理肯定累死人。我的习惯是这样的如果是每周更新一次的数据我用Excel手动追加几行顺手另存为txt覆盖回去半天时间也够了如果是每天都要更新的数据比如每日北向资金、每日两融余额那就必须用程序自动生成。这里我分享一个最常用的Python脚本模板你可以根据自己的数据格式改一下import csv from datetime import datetime # 示例把每日资金流数据写成大智慧扩展数据格式 data_rows [] with open(raw_daily_data.csv, r, encodingutf-8) as f: reader csv.reader(f) header next(reader) # 跳过表头 # 假设原始csv结构为日期,股票代码,资金净流入,资金净流出 for row in reader: date_str row[0].replace(-, ) # 2024-01-05 - 20240105 code row[1].zfill(6) # 补足6位代码 net_inflow round(float(row[2]), 2) net_outflow round(float(row[3]), 2) data_rows.append(f{date_str},{code},{net_inflow},{net_outflow}) with open(NorthBound.dat, w, encodingutf-8) as f: for line in data_rows: f.write(line \n)脚本跑完直接生成一个符合大智慧格式要求的文本文件把它放进ExternalData文件夹然后在配置里把DataCount改成2因为这里存了两个值净流入、净流出就万事俱备了。如果你熟悉Python还可以顺便封装成每天定时执行的脚本彻底解放双手。3. 在软件中导入与设置完成数据落地的关键操作3.1 自定义数据的完整导入步骤扩展数据的导入依赖于配置文件但自定义数据的导入则是走软件内的操作界面。很多人把这两个搞混其实可以这么理解扩展数据更偏向于“外部文件绑定”而自定义数据则偏向于“在软件里手工/半自动录入”。具体操作流程如下打开大智慧菜单栏找到“功能” - “公式系统” - “自定义数据管理”不同版本位置略有差异有些在“工具”里。在弹出的管理窗口里选择“新建”输入数据名称比如“自选板块标记”和数据格式一般是“股票代码 数值”。之后你会看到一个数据列表可以直接点“添加”逐条录入也可以选择“导入”从文本文件批量导入。关键是调用环节新建一个技术指标公式或者条件选股公式在公式编辑界面里用自定义数据函数直接引用。这里我强烈建议不要直接在数据管理界面里手动逐条录入大量数据除非数据量真的很小比如40只成分股的标记。因为录入界面一次只能输入一条没有批量粘贴功能50条以上会录到你怀疑人生。批量数据一律走文本导入这是我这几年最深刻的教训之一。3.2 公式中的调用方法与参数含义数据导入成功后最重要的问题就是我怎么在公式里用它大智慧里读取扩展数据的核心公式叫EXTDATA但不同版本、不同函数名的用法略有差异。我目前主要用的版本里调用方式是EXTDATA(北向持股, 0, 0)这个函数的参数逻辑是这样的第一个参数配置里定义的扩展数据中文名称必须和ExternalData.ini里的Name完全一致。第二个参数数据类型0表示按日读取1表示周线读取2表示月线读取。第三个参数取第几个数据值从0开始计数。比如前面配置了DataCount2那么第0个值是净流入第1个值是净流出。举个例子你要在副图里画一条北向持股净流入的曲线公式可以这么写净流入:EXTDATA(北向持股,0,0); 净流出:EXTDATA(北向持股,0,1); STICKLINE(净流入0,0,净流入,2,0),COLORRED; STICKLINE(净流出0,0,净流出,2,0),COLORGREEN;如果你用的是自定义数据管理模块里新建的数据调用方式通常是SELFDATA或者DATACODE具体函数名看你的软件版本帮助文件但核心思路一模一样先绑定数据名再取第几个值。3.3 日期对齐、除权对齐与数据漂移处理使用扩展数据过程中最让人头疼的一个问题就是“数据漂移”。我给你描述一下这个典型症状周五的K线上副图指标显示的数据值却对应到了周一的位置整个副图的数据序列明显往右偏了一两根K线。这个问题的根源通常是你导入的数据文件里日期缺失或者日期不连续。例如你在文件里只有 20240110 的“北向持股”数据而这一天正好是大智慧里某个停牌股票的缺失交易日那么大智慧在匹配数据时就会自动把值归到临近的可用交易日上。如果数据文件里某些股票有重复日期行也会导致匹配错位。解决办法有两个方向一是数据源处理时严格检查日期对齐。用Python读入原始数据后先看每一只股票的日期序列是否和大智慧K线日期完全一致不一致的补空值或者剔除。我的做法是生成数据时只保留最近一次更新的日期其他旧日期一并覆盖避免混入过期行。二是在公式层面做偏移修正。比如你知道数据要滞后一天才对齐那么你可以用REF(EXTDATA(...), 1)把它整体平移回来。这个办法治标不治本但应急时非常管用。还有一个需要特别注意的点除权日。如果你导入的是“每股XX”这类价格类数值比如每股分红、每股净资产要考虑除权后大智慧自动复权导致的价格变化是否会对数据产生影响。我自己处理这种情况时习惯在导入前把数据先做一次前复权计算保证数值连续。4. 常见问题与排查实录数据不显示、数值错乱怎么办4.1 常见问题速查表这几年来我在各个论坛、群里看到无数人问相似的问题自己踩过的坑也不少。这里整理成一张速查表对号入座就能找到大概方向现象最可能原因处理办法导入后数据显示为0或者NULL文本文件里日期格式带横杠或斜杠统一改成纯数字日期例如 20240105扩展数据管理里看不到刚加的数据配置文件ExternalData.ini没写对检查文件名、中文名称是否和[配置节]一致公式编译报错函数名不识别当前版本不支持EXTDATA函数打开帮助文档查找当前版本的扩展数据读取函数名引用的数值整体比K线晚一根/早一根数据文件日期与大智慧交易日不完全匹配用REF函数手动偏移修正或检查数据文件日期部分股票有数据部分没有SecType配置不对比如指数代码配成了股票检查配置文件确认数据对应的代码类型文件导入提示“格式错误”文本文件编码不对用了带BOM的UTF-8或GBK异常用记事本另存为 ANSI 编码或 UTF-8 无 BOM数据值全部乱码分隔符用了Tab或中文逗号全部替换为英文逗号4.2 数据漂移问题的定位思路数据漂移是我见过最隐蔽的问题因为它不会报错图形上看起来也差不多但仔细对照数值就发现对不上。我的定位思路是先小范围测试用一只股票、三个交易日的数据做验证。具体操作方法是这样的挑一只成交活跃的股票避免停牌导致日期缺失在扩展数据文本里只写入最近三个交易日的三行数据然后刷新大智慧看副图里这三个值是否正好落在最近三根K线上。如果发现错位就把日期逐个往后/往前推一天观察哪个方向能对上从而判断是大智慧本身的日期匹配逻辑问题还是我数据文件的问题。这个“小样本验证法”我强烈推荐给所有人不管是新手还是老手都能快速定位问题而不用在几千行数据里大海捞针。4.3 数据更新与自动化的进阶思路数据更新这件事最怕的就是“三天打鱼两天晒网”。如果你手动导入数据建议固定一个更新时间点比如每个交易日下午5点之后花两分钟跑一下脚本、导一次文本文件。千万别在交易时间里去更新因为软件正在跑数据你导入一半文件软件容易错乱。用Python脚本自动化的话要注意几个细节脚本里每次生成数据前先备份一次上一次的data.dat文件防止意外覆盖导致数据丢失。日期字段建议从行情接口获取实际交易日历不要用自然日这样能避免周六周日数据空白的问题。生成完文件后做个简单的文件大小校验如果文件大小比前一天小了一大截大概率是数据源有问题别急着覆盖。我的一个习惯是把脚本挂到运行目录下每周五收盘后跑一次全量更新周一至周四跑增量更新。这个频率既能保证数据时效性又不至于把自己搞得太累。自动化这套流程大约花一个下午就能搭建好但之后一年里能帮你省下几十个小时。最后分享一点我的实际体会扩展数据和自定义数据这套东西本质上就是大智慧留给你的一条数据“外接管道”。很多人在网上找各种公式、各种指标但真正的核心数据往往握在自己手里。与其等着软件内置的数据拼拼凑凑不如自己动手建一套完全属于自己的数据体系。我自己的固定套路是先确定一个核心策略比如北向持股两融组合然后只维护两个扩展数据文件一个存资金流一个存基本面打分其余的一律不建。这样数据不杂、维护量小、逻辑也清晰。如果你刚开始折腾也建议别一口气建十个八个扩展数据先把最需要的两三个跑通理解整个流程之后再做更大的数据框架。希望这篇东西能帮你在“手动数据通往公式世界”这条路上少走几步弯路。数据导入这种事第一次折腾会有点烦躁但跑通之后你会发现以前那些没法落地的选股思路突然都有了抓手。本文还有配套的精品资源点击获取
返回列表