Appearance
Smart 用户说明书:概述
1. Smart 是什么
Smart 是服务端程序与客户端公式 DLL 共同工作的行情增强工具。
Smart.exe/ Smart 主程序负责登录、下载、订阅、缓存、解析和保存数据。smart.dll是大智慧客户端公式 DLL,公式中通过smart@函数名(参数...)调用。- 客户端 DLL 不直接解析行情文件,而是通过本机 RPC 调用 Smart 服务端,再把返回的时间序列写回大智慧公式结果。
- RPC 默认端口为
1088,配置项为RpcPort。正常使用时无需手工配置。
Smart 的典型用法是:用户在大智慧公式中调用 smart.dll 函数访问 Smart 的 SPR、L2A、L2D、L2W 数据,再把这些公式用于指标、动态显示牌、股票池和预警,实现盘中自动筛选、监控和盘后复盘。
典型调用链:
text
大智慧公式 smart@BuyAmount(...)
-> smart.dll
-> 本机 RPC
-> Smart 服务端
-> 下载/缓存/计算数据
-> 返回当前股票当前周期的结果序列
-> 指标/动态显示牌/股票池/预警使用结果1.1 数据背景说明
公开资料里通常把 Level-2 理解为比普通五档行情更细的行情层。上证所 Level-2 产品资料提到,Level-2 在基础行情上增加盘口订单、逐笔成交、成交与订单关联等信息,用来揭示交易细节;深交所 STEP 行情接口规范把逐笔行情分为逐笔委托和逐笔成交,并按发生顺序发送;上交所 LDDS 竞价 Level-2 接口资料也把快照、逐笔成交、逐笔委托、逐笔合并等作为不同数据类型。
按这个理解,Smart 不是简单多几个公式函数,而是把这些更细的行情层拆成不同用途:
| 数据层 | 网上资料里的常见理解 | Smart 中对应模块 |
|---|---|---|
| 事件层 | 已经被行情软件识别出的盘中异动、买卖大单、封板、撤单等事件。 | SPR 短线精灵 |
| 分时统计层 | 把 L2 信息按分钟或当前周期汇总后的平均价、委托量、成交量、撤单量等指标。 | L2D |
| 逐笔成交/委托分析层 | 从更细的成交和委托记录里按金额、时间、价格、主动性过滤。 | L2A/L2B |
| 逐笔委托层 | 新增委托、撤销委托、买卖方向、竞价和拆单等原始委托行为。 | L2W |
因此,看 Smart 数据时要先判断自己想研究哪一层:看盘中异动用 SPR,看分钟级 L2 统计用 L2D,看大单成交和主动买卖用 L2A/L2B,看挂单、撤单、竞价和拆单用 L2W。不同层的数据不能简单相加,因为它们来源层级和统计口径不同。
参考公开资料:
- 上证所信息网络有限公司《上证所 Level-2 行情》:https://www.sseinfo.com/services/assortment/level2/
- 深圳证券交易所《STEP 行情数据接口规范》:https://investor.szse.cn/marketServices/technicalservice/interface/P020240531618144293021.pdf
- 上交所信息网络有限公司《LDDS 系统竞价 Level-2 行情接口说明书》:https://bsp.sseinfo.com/admin/static/public/2024-06-07/13f94744fb6244d5a21ee42bddcec9f6/上海证券交易所LDDS系统竞价Level-2行情接口说明书.pdf
- DolphinDB《处理 Level-2 行情数据实例》:https://docs.dolphindb.com/zh/tutorials/l2_stk_data_proc.html
2. 运行前提
使用公式函数前应确认:
- Smart 主程序已经运行,并且相关模块已授权。
- 对应数据已下载、订阅或允许函数调用时自动触发下载。
- 大智慧已加载正确版本的
smart.dll。 - 当前公式处在股票上下文中;大部分 DLL 函数从当前股票自动取得证券代码,不需要在参数里传代码。
模块权限通常按服务划分:
| 模块 | 常见权限/服务 | 说明 |
|---|---|---|
| SPR | KS_SMART / KS_SMARTT | 短线精灵事件 |
| L2A/L2B | KS_L2A / KS_L2B 及 TDX 对应项 | 逐笔成交、大单、主动成交统计 |
| L2D | KS_L2D 及 TDX 对应项 | L2 分钟聚合统计 |
| L2W/ORD | KS_ORD 及 TDX 对应项 | 逐笔委托、下单撤单统计 |
这些模块的数据不是同一类数据,也不是一个授权包里的同一项功能。SPR、L2A/L2B、L2D、L2W 的数据源、下载方式、订阅方式、存储格式和计费授权都相互独立;实际可用哪些菜单和函数,以当前账号购买并授权的服务为准。
3. 基本配置
基本配置 菜单负责 Smart 的基础运行环境,不属于某一个子功能模块。它解决的是“账号能不能登录、权限能不能识别、大智慧路径对不对、DLL 能不能连接、程序窗口和服务器连接是否正常”这些前置问题。只有这些基础项正确,后面的 SPR、L2A、L2D、L2W 函数才有稳定运行的条件。
3.1 基本配置菜单项
| 菜单项 | 用途 | 方法 |
|---|---|---|
kingwa账户设置 | 设置 Smart 授权账号。Smart 根据该账号获取可用业务,例如 SPR、L2A、L2D、L2W。 | 点击后输入 Kingwa 账号信息;修改后重新连接或重启程序,让授权信息重新加载。 |
大智慧账户设置 | 设置大智慧账号和密码。Smart 需要它连接行情/数据服务,进行下载、订阅和历史数据访问。 | 点击后输入大智慧账号和密码;首次启动缺少账号时程序也会提示填写。 |
设置大智慧主程序 | 指定大智慧安装位置。Smart 需要知道大智慧主程序路径,才能安装 smart.dll、定位大智慧用户目录和板块目录。 | 点击后选择大智慧主程序 .exe;菜单会显示当前路径。路径错误时重新选择。 |
编辑配置文件 | 打开 Smart 主配置文件,处理菜单没有覆盖的高级配置。 | 点击后用系统默认编辑器打开配置文件;改完保存,必要时重启 Smart。配置格式错误时,程序会提示行号和列号。 |
保存窗口布局 | 保存当前窗口、停靠面板、日志区域等界面布局。 | 调整好窗口后点击;下次启动按保存的布局恢复。 |
窗口置顶 | 让 Smart 窗口保持在其他窗口上方,便于盘中观察日志和状态。 | 勾选开启,再点一次取消。 |
我的功能 | 查看当前账号已授权的业务列表。 | 点击后弹出当前可用业务;若某模块菜单没有出现,先用这里确认是否有权限。 |
DLL通讯端口 | 设置 smart.dll 连接 Smart 服务端的 RPC 端口。默认是 1088。 | 点击后输入 1000-60000 范围内端口;程序会重启 DLL RPC 服务并刷新状态。只有端口冲突或多套 Smart 并行时才需要改。 |
安装smart.DLL 当前版本... | 安装或更新大智慧目录下的 smart.dll。当 Smart 检测到 DLL 版本落后时,基本配置 菜单标题可能显示 基本配置(DLL更新)。 | 关闭正在使用该 DLL 的大智慧客户端后点击安装;安装失败通常是大智慧仍占用 DLL 文件。 |
随系统启动 | 让 Smart 随 Windows 登录自动启动,减少忘记启动导致公式无数据的问题。 | 需要管理员权限;勾选开启,再点一次取消。 |
3.2 行情子菜单
基本配置 -> 行情 处理的是 Smart 与行情服务器的连接策略。
| 菜单项 | 用途 | 方法 |
|---|---|---|
重连服务器 | 当前行情连接异常、数据停止更新时,手动重新连接服务器。 | 点击后 Smart 重新发起连接;适合临时断线、网络恢复后使用。 |
采用内置服务器列表 | 使用程序内置的行情服务器列表,而不是外部或历史配置里的服务器列表。 | 勾选后保存配置;程序提示需要重启,重启后才按新服务器列表连接。 |
断开后自动重启 | 行情连接断开后自动重启程序,减少长时间无人值守时的数据中断。 | 勾选开启;适合需要全天候接收行情和下载任务的环境。 |
3.3 启动时检查的基础配置
除菜单项外,Smart 启动时还会检查一些基础配置。普通用户通常不需要每天修改,但需要知道它们的用途。
| 配置项 | 用途 | 方法 |
|---|---|---|
自定义数据目录 | 保存公式函数历史结果、自定义数据和 Slfdata 可读取的数据。它不是 SPR/L2A/L2D/L2W 原始数据目录。 | 首次启动缺少该目录时会提示选择;以后可通过编辑配置文件调整。 |
窗口置顶 | 保存 窗口置顶 菜单状态。 | 菜单勾选会自动写入配置。 |
自动重启时间 | 设置程序在指定时间执行自动启动/复位任务。默认包含早盘前后的时间点。 | 通过编辑配置文件调整;不熟悉时保持默认。 |
关注股票代码前缀 | 决定 Smart 默认关注哪些市场/代码段,例如深市、创业板、沪市、科创板。 | 通过编辑配置文件调整;股票池异常时检查该项。 |
下载立即保存文件 | 控制下载过程中是否更及时地保存文件。 | 通过编辑配置文件调整;一般保持默认。 |
是否共享L1行情 | 控制是否把 L1 行情写入共享内存,供其他组件读取。 | 通过编辑配置文件调整;不需要共享行情时可关闭。 |
程序重启加载当日订阅 | 控制程序重启后是否恢复当天订阅。 | 通过编辑配置文件调整;需要盘中自动恢复订阅时开启。 |
LogLevel | 控制日志级别。级别越详细,日志越多。 | 通过编辑配置文件调整;排错时提高日志级别,正常使用保持默认。 |
DataServerMode | 数据服务器模式。开启后很多本地客户端功能会受限。 | 一般用户不要开启;只有专门做数据服务器时才配置。 |
3.4 配置顺序建议
首次安装或换机器时建议按这个顺序配置:
- 设置
kingwa账户设置,确认 Smart 授权账号正确。 - 设置
大智慧账户设置,保证行情和数据服务能登录。 - 设置
大智慧主程序,让 Smart 能安装smart.dll并定位大智慧目录。 - 安装或更新
smart.dll。 - 确认
DLL通讯端口,默认1088不冲突就不要改。 - 设置各模块的数据目录,例如 SPR、L2A/L2D/L2W 的
选择数据目录。 - 用
我的功能确认已授权模块。 - 再配置子功能的自动下载、订阅和公式函数。
4. 子功能菜单共性
SPR、L2A/L2B、L2D、L2W 是独立功能,通常独立销售、独立授权、独立下载、独立订阅。理解这些共性后,切换模块时主要关注数据口径和函数名。
4.1 模块独立授权
SPR、L2A/L2B、L2D、L2W 是不同数据产品,买了其中一个模块不代表能使用其它模块。实际能看到哪些菜单、能调用哪些函数,以账号购买和服务端授权为准。
| 菜单类别 | 用途 | 什么时候用 |
|---|---|---|
| 模块独立菜单 | 每类数据是独立功能,购买和授权也独立。 | 查看自己购买了哪些模块、进入对应模块操作时。 |
| 手册/函数手册 | 不同模块的数据口径和参数编码不同,必须给用户一个入口核对函数含义。 | 不确定函数参数、返回值或模块口径时。 |
| 历史数据网盘 | 部分 L2 历史数据体积大,不能只靠盘中订阅即时补齐。 | 新装环境、换机器、缺历史数据、需要补较长历史区间时。 |
| 下载全部 | 初次建库或批量补数据,避免逐只股票手工下载。 | 新装、换目录、盘后批量维护、发现大面积缺数据时。 |
| 下载板块 | 只维护自己的股票池,减少下载量和磁盘占用。 | 只关心某个策略板块、自选板块、行业板块时。 |
| 下载单个 | 修复单只股票缺数据,避免为了一个股票重跑全量任务。 | 某只股票公式为空、查看数据发现缺文件时。 |
| 自动下载参数 | 把重复的盘后下载自动化,避免每天手工点菜单。 | 每天固定时间补 SPR/L2A/L2D/L2W 数据时。 |
| 选择数据目录 | 数据量大,需要指定磁盘位置;各模块文件格式不同,需要分目录管理。 | 初次配置、迁移磁盘、整理数据文件时。 |
| 打开数据目录 | 快速检查文件是否存在、日期是否完整、路径是否设置错。 | 公式无结果、下载后想确认文件、排查路径问题时。 |
| 查看/显示数据 | 在写公式前确认 Smart 已经读到数据,区分“没数据”和“公式写错”。 | 公式返回空值、结果异常、验证某天某股数据时。 |
| 跟踪函数调用 | 公式调用发生在客户端,问题不一定能从界面看出来,需要日志记录参数和返回情况。 | 公式慢、空值、结果不符合预期时临时开启。 |
| 保存函数历史结果 | 有些历史公式计算很重,重复扫描逐笔数据成本高,需要缓存“计算结果”。 | 大范围日线回看、同一函数同一参数反复使用时。 |
| 订阅/取消订阅 | 让行情服务器先补当前交易日已发生的数据,再主动推送后续数据到 Smart。 | 需要当天数据立即可用、并持续接收后续 L2A/L2W 数据时。 |
| 模块特有设置 | 不同模块有不同数据结构、性能成本和统计口径,不能用一个全局设置代替。 | 调整大单分级、下载并发、缓存范围、内存释放策略时。 |
4.2 手册和历史数据入口
每个子功能菜单通常都有两个帮助入口:
| 菜单项 | 作用 |
|---|---|
手册 / 函数手册 | 打开对应模块的在线说明。 |
历史数据网盘 | 打开历史数据下载或共享位置。 |
不同模块的菜单文字略有差异,例如 SPR 是 精灵函数手册,L2D 是 L2D手册,L2A/L2B 是 L2B手册,L2W 是 L2W手册。
为什么要有这两个入口:
手册/函数手册解决“怎么写公式、参数是什么、返回值是什么意思”的问题。历史数据网盘解决“本地没有历史数据”的问题。- 手册不提供数据,网盘不解释函数;两者作用不同,所以分开。
4.3 数据下载
各模块都把下载分为“批量下载”和“单股下载”。L2A/L2B、L2W 还支持按板块下载。
| 功能 | SPR | L2A/L2B | L2D | L2W | 说明 |
|---|---|---|---|---|---|
| 下载全部 | 支持 | 支持 | 支持 | 支持 | 下载全部关心股票或模块定义范围内的数据。 |
| 下载单个 | 支持 | 支持 | 支持 | 支持 | 通常下载当前股票或输入/选择的单只股票。 |
| 下载板块 | - | 支持 | - | 支持 | 选择 .blk 板块文件后批量下载。 |
下载数据前应先确认模块权限、数据目录和关心股票范围。每类数据需要对应授权;没有购买或没有开通该模块时,菜单可能不出现,下载也不会执行。若下载时没有反应,先检查 我的功能、Smart 日志和模块菜单中的数据目录是否正确。
这里的“下载”指下载并保存模块原始数据或解析后的基础数据,例如 SPR 事件、L2A/L2B 逐笔/大单数据、L2D 分钟聚合数据、L2W 逐笔委托数据。它和后面的“保存函数历史结果”不是一回事。
为什么下载菜单要分成全部、板块、单个:
下载全部用于建库和大面积补齐,成本最高,但最省人工。下载板块用于只维护关心股票池,适合策略用户,能控制下载时间和磁盘占用。下载单个用于修复局部问题,避免因为一只股票缺数据而重跑全量。
下载菜单不直接放到公式函数里,是因为公式刷新可能非常频繁。如果公式每次刷新都自动下载,容易造成卡顿、重复请求和数据不一致。菜单下载把“准备数据”和“计算公式”分开,结果更可控。
4.4 自动下载设置
四个模块都提供 设置自动下载参数 菜单。打开后是统一的自动下载设置窗口,窗口标题格式为 自动下载设置 - 模块名。
自动下载按模块分别保存:
| 模块 | 配置分组 |
|---|---|
| SPR | 短线精灵 |
| L2A/L2B | L2B |
| L2D | L2D |
| L2W | L2W |
自动下载配置的核心含义:
- 每行配置一个启动时间。
- 可指定对应板块;板块为空表示下载全部关心股票。
- 启动时间不能重复。
- 保存后写入当前模块的
自动下载配置项。
使用建议:
- 盘后下载适合放在收盘后一段时间,避免盘中与订阅推送抢资源。
- 板块数据量较大时,优先按模块拆分时间,避免多个模块同时下载。
- L2W 数据量较大,必要时先调整下载并发数。
自动下载只负责到指定时间触发下载任务,不等于“打开公式自动算一遍”。公式结果是否保存,取决于是否开启 保存函数历史结果,以及该函数是否实现了结果缓存。
为什么要有自动下载:
- L2 数据每天都会新增,手工下载容易漏。
- 不同模块数据到齐时间不同,统一一个全局时间不合适。
- 板块为空表示下载全部关心股票,适合全局维护;指定板块适合只维护策略股票池。
- 自动下载把耗时任务放到盘后或空闲时间,避免盘中公式和界面被下载任务拖慢。
4.5 数据目录设置
四个模块都支持 选择数据目录 和 打开数据目录。
| 菜单项 | 作用 |
|---|---|
选择数据目录 | 弹出目录选择窗口,并把路径保存到模块配置。菜单文字会显示当前目录。 |
打开数据目录 | 用系统文件管理器打开当前模块的数据目录。 |
数据目录按模块独立保存:
| 模块 | 配置项 |
|---|---|
| SPR | 短线精灵 -> 数据目录 |
| L2A/L2B | L2B -> 数据目录 |
| L2D | L2D -> 数据目录 |
| L2W | L2W -> 数据目录 |
设置数据目录时注意:
- 不建议多个不同模块共用同一个目录,避免数据文件混杂。
- 路径修改后,新下载的数据写入新目录;旧目录中的历史数据不会自动迁移。
- 若公式函数返回空值,先用
打开数据目录确认对应日期和股票的数据文件确实存在。
为什么要让用户设置数据目录:
- SPR、L2A/L2B、L2D、L2W 文件格式不同,分目录便于维护和备份。
- L2A/L2W 数据量可能较大,用户可能希望放在容量更大的磁盘。
- 换机器、换盘、迁移历史数据时,不需要重新下载,只要把目录指向已有数据。
- 排错时可以直接打开目录看文件,而不是只能依赖程序日志。
4.6 查看数据和诊断
模块菜单中通常有查看或测试入口,用来确认数据是否可读:
| 功能 | 常见模块 | 说明 |
|---|---|---|
| 查看数据 | SPR、L2A/L2B、L2W | 打开当前模块的数据查看窗口。 |
| 函数调用跟踪 | SPR、L2D、L2W 等 | 记录公式函数调用参数、耗时和返回情况。 |
| 保存函数历史结果 | SPR、L2A/L2B、L2D、L2W | 通用开关;把部分公式函数的历史计算结果落盘,便于复用和排错。 |
| 测试工具 | L2W 等 | 例如委托分位测试。 |
查看数据是什么意思
查看数据 / 显示数据 / 显示委托数据 打开的是 Smart 内部的数据查看窗口,用来检查当前模块是否已经有可用数据。
- SPR 的
查看精灵数据用于查看短线精灵事件。 - L2A/L2B 的
显示数据用于查看 L2A/L2B 大单、逐笔或解析后的数据。 - L2W 的
显示委托数据用于查看逐笔委托数据。 - L2D 当前菜单主要提供目录和下载入口,排查时通常通过数据目录、日志和函数调用跟踪确认。
这个功能只负责“看当前已有数据”,不会主动下载,也不会改变公式计算结果。
跟踪函数调用是什么意思
跟踪函数调用 是排错开关。开启后,Smart 会记录公式函数调用的关键信息,例如:
- 调用了哪个函数。
- 当前股票代码。
- 参数值,例如金额范围、时间范围、涨幅范围、K 线数。
- 是否读取历史结果缓存。
- 返回了多少条数据。
- 耗时和失败原因。
它适合在公式返回空值、速度慢、结果不符合预期时临时开启。正常使用时可以关闭,减少日志量。
保存函数历史结果是什么意思
保存函数历史结果 保存的不是原始行情数据,而是“某个公式函数在某组参数下算出来的结果”。
例如公式:
text
smart@BuyAmount(100005, 9301000, 0, 20)这个调用会用 L2A/L2B 数据计算“5 万到 100 万、09:30 到 10:00 的买入金额”。开启 保存函数历史结果 后,Smart 可以把已经算出的历史日线结果保存到自定义数据目录。以后同一股票、同一函数、同一参数再次调用时,已保存的历史日期可以直接读取结果,减少重复扫描历史 L2 数据。
它和几个容易混淆的功能区别如下:
| 功能 | 保存什么 | 主要用途 |
|---|---|---|
下载全部/下载单个/下载板块 | 模块原始数据或基础解析数据 | 让 Smart 拥有可计算的数据源。 |
自动下载参数 | 下载计划配置 | 到指定时间自动执行下载任务。 |
数据目录 | 模块原始数据目录位置 | 告诉 Smart 原始数据放在哪里。 |
保存函数历史结果 | 公式函数的计算结果 | 加速历史公式重复计算,便于复盘和排错。 |
Slfdata | 已保存的自定义数据序列 | 在公式中读取自定义数据编号对应的结果。 |
当前代码里的主要行为:
- L2A/L2B 的日线函数在开启该开关后,会按函数名、买卖方向、周期、金额范围、时间范围、涨幅范围、主动性等参数生成结果文件;下次同参数调用会先尝试读取。
- L2W 的日线函数在开启该开关后,会按委托行为、计算口径、金额范围、时间范围、涨幅范围、天数等参数生成结果文件;下次同参数调用会先尝试读取。
- SPR、L2D 菜单也有这个通用开关;是否实际落盘取决于具体函数实现。使用时应以函数调用跟踪和生成文件为准。
使用这个开关的注意事项:
- 它只适合历史结果复用,不适合盘中尚未稳定的数据。当天数据通常要等市场收盘或数据完整后再保存才可靠。
- 修改金额范围、时间范围、涨幅范围、天数等参数后,会被视为另一组结果,不会复用旧参数的缓存。
- 如果底层原始数据后来被重新下载或修正,旧的函数结果可能已经过期,需要删除对应结果文件后重新计算。
- 开启后会增加磁盘文件,但可以明显减少大范围日线历史公式的重复计算。
排查公式问题时,推荐顺序是:
- 调用
smart@online()确认 DLL 与服务端连接。 - 在模块菜单中打开数据目录,确认有数据。
- 开启函数调用跟踪。
- 用最宽松参数调用函数,例如金额、时间、价格都传
0。 - 再逐步加入过滤条件。
4.7 订阅和取消订阅
订阅的含义是:Smart 向行情服务器登记当前股票或板块后,行情服务器会先补发当天已经发生的历史数据,然后把后续新增数据主动推送到 Smart。这样公式或查看窗口需要数据时,Smart 本地通常已经有数据,不必临时等待服务器按请求返回。
不订阅时,Smart 一般不会持续接收该股票的后续 L2A/L2W 数据;只有下载、查看或公式函数请求到具体数据时,才向服务器请求所需范围。这样可以节省订阅名额、网络和内存,但盘中首次调用可能要等待数据返回。
| 功能 | 模块 | 菜单/DLL 函数 |
|---|---|---|
| 订阅当前股票 L2A/L2B | L2A/L2B | smart@SubL2B(1) |
| 取消当前股票 L2A/L2B | L2A/L2B | smart@SubL2B(0) |
| 订阅板块 L2A | L2A/L2B | 订阅板块L2A |
| 取消全部 L2A 订阅 | L2A/L2B | 取消全部L2A订阅 |
| 订阅当前股票 L2W | L2W | smart@SubOrder(1) |
| 取消当前股票 L2W | L2W | smart@SubOrder(0) |
| 订阅板块 L2W | L2W | 订阅板块L2W |
| 取消全部 ORD 订阅 | L2W | 取消全部Ord订阅 |
订阅需要对应权限。没有权限时,菜单或日志会提示无订阅权限。
为什么订阅和下载都要有:
下载面向已经发生过的历史数据,适合盘后补齐。订阅面向当天盘中数据,先补当天已发生的数据,再持续推送后续数据。- 盘中只靠请求,首次公式调用可能要等待;订阅后 Smart 会提前收到数据。
- 只靠订阅不能替代长期历史下载;订阅主要解决当天数据的连续性和实时性。
取消全部订阅用于释放订阅名额和减少实时消息压力,尤其是板块订阅过多时。
4.8 模块特有但操作方式相似的设置
以下不是全模块通用,但属于菜单中常见的功能型设置:
| 设置 | 模块 | 说明 |
|---|---|---|
| 资金分级 | L2A/L2B | 设置大单金额分级,影响大单统计和保存。 |
| 判断成交价等于委托价的主动 | L2A/L2B | 决定价格相等时主动买卖方向的判定。 |
| 数据缓存 K 线数 | L2A/L2B、L2D、L2W | 控制历史数据对象缓存容量。名称里叫 K 线数,但代码里实际用于 QCache::setMaxCost(),不是公式返回 K 线数量。 |
| 盘后下载后释放内存 | L2A/L2B、L2W | 控制盘后下载完成后是否释放内存。 |
| 下载并发数 | L2W | 控制 L2W 历史下载并发,数据量大时尤其重要。 |
这些设置存在的原因:
资金分级决定什么算大单。不同用户策略不同,不能写死在程序里。判断成交价等于委托价的主动影响主动买卖方向,属于统计口径选择。数据缓存 K 线数是速度和内存之间的平衡;缓存容量大,重复读取历史数据更快,但占用内存更大。它限制的是历史 L2B/L2D/L2W 数据对象缓存,不限制公式计算返回多少根 K 线。盘后下载后释放内存是内存控制开关;盘后下载很多股票时,不释放缓存会占用较多内存。下载并发数是速度和稳定性之间的平衡;并发高下载快,但更吃网络、服务器和本机资源。
5. 客户端 DLL 通用函数
以下函数来自客户端 smart.dll,可在大智慧公式中调用。
| 函数 | 公式示例 | 说明 |
|---|---|---|
online | smart@online() | 返回 DLL 与 Smart 服务端 RPC 状态。非 0 通常表示已连接或连接状态可用。 |
Ver | smart@Ver() | 返回当前 smart.dll 版本号。 |
Watch | smart@Watch() | 把当前公式所在股票通知给 Smart,设置为当前观察股票。服务端记录该股票 CID,用于当前分时图股票的订阅/请求协调,减少重复请求。 |
savelog | smart@savelog() | 刷新 DLL 日志。排查公式调用问题时使用。 |
Slfdata | smart@Slfdata(数据号) | 读取 Smart 自定义数据,按当前股票和 K 线时间返回序列。 |
说明:本文只写一种函数名,公式中按文档名称使用即可。
6. 周期概念
公式调用时,周期通常由当前大智慧公式环境提供,用户无需显式传入。Smart 内部使用如下周期编号:
| 编号 | 周期 |
|---|---|
1 | 分时 |
2 | 分笔成交 |
3 | 1 分钟 |
4 | 5 分钟 |
5 | 15 分钟 |
6 | 30 分钟 |
7 | 60 分钟 |
8 | 日线 |
9 | 周线 |
10 | 月线 |
11 | 多日线 |
并非所有子功能都支持所有周期。L2A/L2B 常用分时、1 分钟和日线;L2D 以分钟聚合为基础;L2W 支持分时、分钟线、日线及部分汇总周期。
7. 返回值和失败处理
Smart DLL 函数大多返回一条时间序列,并填入大智慧的公式结果缓冲区。常见失败原因:
- Smart 服务端未启动或 RPC 未连接。
- 当前股票代码无法识别。
- 模块未授权。
- 对应交易日没有下载数据。
- 当前周期不被该函数支持。
- 参数编码错误。
失败时 DLL 函数通常返回 -1,公式结果可能为空或显示无效值。排查时建议先在公式中调用:
text
smart@online()
smart@Ver()
smart@savelog()然后在 Smart 菜单中打开对应模块的数据目录、查看数据或开启函数调用跟踪。
8. 写公式的基本建议
- 先用宽松参数确认有数据,例如金额、时间、价格都传
0。 - 再逐步增加金额范围、时间范围、涨幅范围。
- 历史统计尽量控制
days或K线数,避免公式刷新时触发大量历史计算。 - 对盘中实时函数,优先开启对应模块的订阅;对盘后和历史数据,优先配置自动下载。
- 对同一类函数,按各子功能文档列出的函数名统一使用,不要在同一套公式里混用历史名称。