绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
KDB+的IDE使用——A股数据测试
2022-05-25 16:28:06

前言

这一栏中,给大家介绍一个关于kdb+数据库的IDE,叫qStudio和sqlDashboards,这两个属于同一家公司(timestored公司)的软件(当然没有仔细去研究这个软件和kx公司是什么关系,我感觉是两家公司)。这两个软件使用起来非常的方便,因为一直在CMD命令行中来确实很麻烦。

股票走势

一、下载与安装

首先我们进入到timestored的官网http://www.timestored.com/,然后在Products的栏目下下载,具体如图1-1与图1-2所示。


图1-1 timestored的官网
图1-2 qStudio下载

可以把QStudio和sqlDashboards都下载安装上,Windows系统和macOS系统都有,自己下载自己对应的系统即可。安装也非常简单,Windows系统直接点开exe文件,macOS系统直接点击jar文件直接安装,这里就不再赘述了。

二、软件界面介绍

安装完成后界面打开软件后界面如图1-3所示。

图1-3 qStudio软件界面

然后介绍一下图1-3中标注的5个部分都是一些什么作用。

1是常用的工具栏,我们常用的操作都是从这里开始。
2是连接的数据库,也就是我们前面介绍的server端。这里我连接的是本地我打开的5042端口(这里非常重要,一定要仔细看一下前面我介绍的I/O操作,曾经我在这里折腾了一个多周,各种重装系统,请教各类大神,给官方发邮件都没有搞定,后自己看了I/O操作后一行代码搞定了),后面我会着重介绍如何连接的。
3是我们常用的代码窗口,这样就跟在记事本或者我们常用的Visual Studion或者PyCharm相似,就是代码窗口。
4是显示我们执行代码后显示一些结果的子窗口,里面有5个子窗口,分别是执行的结果。
5是显示一些执行的结果,我们可以根据自己的需要来查看。个“结果”是显示当前执行的代码所得到的结果;第二个“图表”是对当前的结果进行一个用图表显示的方式(但不是每个结果都有图来显示);第三个“历史”是记录我们每次执行的一个记录,会标注执行的代码命令,结果和执行是否成功;第四个“程式”是记录一些变量等值;第五个“Console”就和我们CMD窗口是一样的了。

三、使用方式使用方式

1. 数据库的连接

首先单击工具栏的“服务器”,然后单击“添加服务器...”,然后弹出如图1-4的界面。

图1-4 如何添加服务器

这里服务器是连接的服务器方式,是本地,还是远程。我这里使用的就是连接本地的一个服务器,所以直接填的localhost,服务器端口,这个很重要,是你kdb+启动的时候打开的一个对外端口,所以不能乱填。因此我们步先在CMD中来打开一个端口(具体操作可以阅读前面介绍的I/O操作),具体如图1-5所示。

图1-5 CMD中打开一个端口

打开之后我们就可以继续添加服务器了,然后图1-4中的服务器端口就填写您打开的对应的端口,我这里打开的是5042,因此我就填写的5042,后面的Server Type没得选,只有Kdb,Login这里直接空着,因为没有设置账号密码,后面对应的都可以空着。然后单击“Test”来测试一下是否连接成功。成功后的结果如图1-6所示。后单机“添加”按钮。

图1-6 连接测试

这时在我们的服务器树中就会显示刚刚添加的一个服务器。

我们单击右键就可以对添加的服务器进行一个操作,如图1-7所示。

图1-7 服务器的设置

localhost:5042前面有个小插头表示与我们的服务器端断开了连接,当我们去CMD命令行中打开一个服务器端口,单击图1-7中的“Refresh localhost:5042”就可以连接上了,这时这个小插头就消失了。

2. 导入csv文件

我们可以将直接将csv文件导入到qStudio中,这个非常方便,我有一个测试文件,大概1.7G的csv文件,包含了A股的数据,大概将近10000000条记录,是2015年1月1日到2019年1月1日的数据,我之前直接通过从CMD中直接导入是不行的,因为太大了。但是通过qStudio就非常的方便。下面就演示一下如何导入csv文件。

首先单击工具栏的“工具”选项,然后单击“Load CSV Data”,如图1-8所示。

图1-8 导入CSV文件

然后选择自己要导入的文件即可,这里我导入的是一个叫stock.csv的文件。然后单击“Import”按钮,如图1-9所示。

图1-9选择要导入的CSV文件

单击“Import”按钮后,会弹出图1-10所示内容,我们可以在这个窗口进行相应的设置,如字符集,从第几行开始导入,是否包含行的字段名称,分隔符是什么,导入的服务器,导入后表的名称(这里我的名称有问题,不能包含下划线)。然后可以在看到导入的CSV文件的一个预览。后我们单击“Load”按钮就开始导入了。

图1-10导入设置

等待一会儿后就导入成功了,如图1-11所示,单击“确定”即可。可以看到这里一共导入了大概960万条数据。

图1-11导入成功提示

2. 查询操作

首先是执行一行代码我们直接把光标放在所要执行的那一行,然后按CTRL+ENTER就是执行当前光标所在行的代码。当然我们也可以查看工具栏的“查询”来查看如何执行。具体如图1-12所示。

图1-12 查询模式
1 \c 100 300    /调整窗口显示大小
2 Astock        /查看导入的CSV文件
3 \t Astock:`TRADE_DT xdesc Astock
4 Astock_db:select from Astock where (`$1#'string S_INFO_WINDCODE) within `0`9    /选择Astock表中S_INFO_WINDCODE字段中以0-9开头的股票名称
5 \t select "D"$string TRADE_DT,S_DQ_CLOSE from Astock_db where S_INFO_WINDCODE=`930723.CSI    /查询结果就只用了5毫秒
6 Astock_db:select S_INFO_WINDCODE,TRADE_DT,CRNCY_CODE,S_DQ_PRECLOSE,S_DQ_OPEN,S_DQ_HIGH,S_DQ_LOW,S_DQ_CLOSE,S_DQ_CHANGE,S_DQ_PCTCHANGE,S_DQ_VOLUME,S_DQ_AMOUNT from Astock_db
7 select "D"$string TRADE_DT,S_DQ_CLOSE from Astock_db where S_INFO_WINDCODE=`930723.CSI
8 `:/data/Astock_db/ set .Q.en[`:/data;] Astock_db

下面就上面的代码进行一个说明。

第1行代码是设置我们的显示大小,\c h w,这里h表示显示的高度,w表示显示的宽度。不要设置的太大,不然会显示太多数据。
第2行代码是查看我们导入的CSV文件,如果导入成功执行当前行命令会直接显示表的内容。如图1-13所示。
第3行代码是测试了一下对将近10000000千万条数据进行排序需要用的时间。我们按照Astock表中的TRADE_DT字段来进行降序排序,发现只用了不到4秒,这时非常快的速度了,结果如图1-14所示和图1-15所示。
第4行代码是筛选出Astock表中S_INFO_WINDCODE字段中以0-9开头的股票名称的数据记录,并赋值给新表Astock_db。
第5行代码是测试一下查询930723.CSI这支股票的一个数据需要的时间。结果只用了5毫秒。
第6行代码是筛选出Astock_db中后面可能用到的字段。
第7行代码是查询股票名称为930723.CSI的一个交易日的一个收盘价。这里我们就可以选择图表来查看这支股票的一个历史走势。如图1-16所示。
第8行代码是将清洗好的数据(Astock_db表)进行序列化到本地,这里我们采用的是使用扩展表的形式来进行序列化。具体结果如图1-17与1-18所示。
图1-13 导入的CSV文件数据
图1-14 将近1千万调数据排序时间(单位毫秒)
图1-15 排序结果
图1-16 查询结果用图表显示
图1-17 序列化后本地所保存的文件
图1-18 Astock_db对应的扩展表文件

四、本地kdb数据的导入

kdb数据的导入与在CMD中有一点差距,之前我们介绍的直接使用\l /data就可以导入data目录下的扩展表,但是这里需要两步。步导入sym文件,命令是\l /data;第二步是导入Astock_db表,命令是\l /data/Astock_db。如果不导入sym文件,则相应的sym字段就会按照对应的sym文件中的索引来显示。如图1-19所示。

\l /data
sym
\l /data/Astock_db
Astock_db
图1-19 未导入sym文件对应表的显示

图1-20导入sym文件后对应表的显示
分享好友

分享这个小栈给你的朋友们,一起进步吧。

Kdb+
创建时间:2022-03-28 16:14:06
Kdb+
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~