kdb+/q启动tickerplant运行tick.q时报错'timesym如何解决?
timesym变量含义
tick.q是kdb+官方tick行情框架的核心启动脚本,其中timesym是框架预定义的全局变量,用于指定业务表中时间戳字段的标准列名。框架启动时会基于该变量值校验传入的表结构合法性,后续数据落盘、订阅分发、时间窗口统计等逻辑也会基于该字段实现,默认值为 `time。
报错原因与配置方法
你遇到的 `timesym 报错基本都是表结构不符合框架规范导致的,按以下要求调整即可:
- 首先检查你存放在
tick/someTable.q文件中的表定义,必须满足两个强制规则:- 文件内必须定义与文件名完全同名的表变量,不可缺省或名称不匹配
- 表的第一个字段必须是时间类型,且列名与
timesym取值一致,第二个字段必须是sym符号类型,正确示例如下:// tick/someTable.q 文件内容参考 someTable:([] time:`timespan$(); // 首列时间字段,列名和timesym默认值`time匹配 sym:`symbol$(); // 第二列必须为sym符号列,存储标的代码 // 可自定义追加其他业务字段,例:price:`float$(); volume:`long$() )
- 如果你需要自定义时间列名(比如用
ts替代默认的time),才需要主动配置timesym变量,有两种配置方式:- 启动命令行传参:
q timesym:tstick.q someTable tick_log -p 5555 - 提前在
tick/u.q文件开头添加定义:timesym:ts`
- 启动命令行传参:
遗漏操作检查
你当前执行的步骤中还需要补充两项校验:
- 确认你下载的
tick.q文件存放在执行启动命令的当前工作目录下,和你创建的tick目录、tick_log目录处于同级路径 - 确认当前操作系统用户对
tick_log目录拥有读写权限,避免后续行情日志写入失败
内容的提问来源于stack exchange,提问作者S.V
相关产品推荐
相关产品推荐

