标签: kdb

是否有一个很好的算法来检查指定时间段内的数据变化?

我们有大约7k的金融产品,其收盘价理论上应该在规定的时间段内(例如一周或一个月的时间段)在一定的百分比范围内上下移动.

我可以访问存储这些历史价格的内部系统(不是关系数据库!).我想制作一份报告,列出任何价格在这段时间内根本没有移动或低于10%的产品.

我不能只将第一个值(第1天)与结束时的价值(第n天)进行比较,因为价格可能会回到最后一天的价格,这会导致产品价格误报.当然可能在两者之间飙升.

在合理的计算时间内是否有任何已建立的算法?

java algorithm kdb

4
推荐指数
1
解决办法
559
查看次数

将Notepad ++语法高亮文件转换为vim(或者有没有人有aq/kdb + vim语法高亮文件?)

我有一个语法突出显示q/kdb +语言的文件,我想将它转换为vim兼容文件,所以我的q代码看起来不会比平常更难看.

是否有可用于将notepad ++ xml语法高亮文件自动转换为vi版本的实用程序?我环顾四周,但找不到任何东西.

或者,是否有人有vim q语法高亮文件?

vim notepad++ kdb vim-syntax-highlighting

4
推荐指数
1
解决办法
2753
查看次数

如何从kdb表中删除随机行?

如何从kdb表中删除前10行?我想删除从前面返回的前10行:

select [10] from mytable
Run Code Online (Sandbox Code Playgroud)

我尝试使用带有i索引的删除,但行数不会减少:

count mytable
2201784
delete from mytable where i < 10
count mytable
2201784
Run Code Online (Sandbox Code Playgroud)

delete语句也会向我的Q控制台返回一些行,不知道那是什么行.

kdb

4
推荐指数
1
解决办法
2059
查看次数

如何在vim中连接几行

我使用的vim-screen插件使我能够编写脚本,在同一窗口中启动解释器并向解释器发送行.问题是解释器不接受写在几行上的语句.

例如:这将有效 f:{[x] y:y+1; Z:y+1; :Z; };

但这不会

f:{[x] y:y+1;
    Z:y+1;
    :Z;
 };
Run Code Online (Sandbox Code Playgroud)

如何编写一个vim函数,我可以调用它来重塑行以便发送给解释器?

编辑:我没有成功完成这个功能,我想创建一个函数,从这样的输入(可视化选择)

F:{[a;b;r]
//ccc1
   aaa1;
aaa2;
  //ccc2
    aaa3;
};
Run Code Online (Sandbox Code Playgroud)

输出这样的东西F:{[a;b;r] aaa1; aaa2; aaa3; }; 所以我创造了一个赏金

vim configuration screen kdb

4
推荐指数
1
解决办法
282
查看次数

kdb +:用0替换空整数

请考虑下表:

myTable:

a     b
-------
1     
2
3     10
4     50
5     30
Run Code Online (Sandbox Code Playgroud)

如何b用零替换空单元格?结果将是:

a     b
-------
1     0
2     0
3     10
4     50
5     30
Run Code Online (Sandbox Code Playgroud)

现在我正在做:

myTable: update b:{$[x~0Ni;0;x]}'b from myTable
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好/更容易的解决方案.

kdb

4
推荐指数
1
解决办法
3835
查看次数

KDB +查询 - 实现不喜欢

我不得不使用不喜欢KDB +查询中的操作,但不知道如何使用它.我可以使用like运算符,即 http:// kdbserver:8001 /?从orderDetails中选择符号"X*"此查询成功给出结果.

如何使用/实现不喜欢相同的查询?

kdb

4
推荐指数
1
解决办法
3748
查看次数

KDB +/Q:关于内部函数中未使用的参数

我有这个功能 f

f:{{z+x*y}[x]/[y]}
Run Code Online (Sandbox Code Playgroud)

我可以在f没有第三个参数的情况下调用,但是我得到了,但是如果{z+x*y}没有第三个参数,内部能够完成吗?

k kdb

4
推荐指数
1
解决办法
193
查看次数

在DolphinDB数据库中重写kdb脚本

我正在尝试在DolphinDB中重写kdb脚本。

首先让我解释一下我需要做什么。如果信号高于阈值T1,我们会在证券中建立多头头寸。我们不想在信号跌落到T1以下时立即平仓,因此给它一个缓冲:只有当信号跌落到T10以下(小于T1)时,我们才平仓。

另一方面,如果信号低于阈值T2,则我们建立一个空头头寸。仅当信号移动到T20> T2以上时,我们才平仓。

T1> T10> T20> T2。

基本上我需要以下向量:

 - if signal>T1, return 1. Subsequent elements are 1 until when signal<T10; 
 - if signal<T2, return -1. Subsequent elements are -1 until when signal>T20;
 - 0 otherwise
Run Code Online (Sandbox Code Playgroud)

以上任务的kdb脚本为:

0h^fills(-).(0N 1h)[(signal>T1;signal<T2)]^'(0N 0h)[(signal<T10;signal>T20)]

Run Code Online (Sandbox Code Playgroud)

有人在DolphinDB中重写它吗?

kdb dolphindb

4
推荐指数
2
解决办法
249
查看次数

如何在 KDB 中流式传输数据?

我可以访问一个实时 KDB 服务器,该服务器具有每毫秒到达的新数据表。

目前,我只是使用一种简单的方法,它基本上是这样的:

.z.ts:{
    newData: getNewData[];   / get data arriving in the last second
    data::data uj newData;
};
\t 100;
Run Code Online (Sandbox Code Playgroud)

确保我的数据(名为data)不断更新。

然而,uj它非常慢(可能是由于内存的不断重新分配)并且轮询只是很尴尬。

我听说 KDB 旨在擅长处理这种流式刻度数据,那么有更好的方法吗?也许一些不需要的基于推送的方法uj

real-time kdb q-lang

3
推荐指数
1
解决办法
3067
查看次数

q中的IPC,如何阻塞直到句柄上收到任何消息

在 4.0 中,如何阻塞控制流,直到句柄上收到任何消息?

\n

在 3.6 版本中,我可以使用https://code.kx.com/q/basics/ipc/#block-queue-flushr:h[]中描述的技术

\n

r:h[]但从 4.0 开始,即使我从第二个进程发送类似的内容,呼叫也会永远挂起key[.z.W]@\\:".z.i"(对于 3.6,这是第二个进程有点挂起:它开始成为进程 1 的从属进程,只为它提供服务)请求,但在 4.0 中,进程 1 永远挂起,仅响应进程 2)

\n

这是我在2019.04.02 3.6看到的:

\n
                       \xe2\x94\x82q)\\p 15555\nq)h:hopen`::15555      \xe2\x94\x82q)\nq)                     \xe2\x94\x82q).z.W\nq)h[]                  \xe2\x94\x825|\n// blocked             \xe2\x94\x82q)5i".z.i"\n".z.i"                 \xe2\x94\x82// blocked\nq)q)                   \xe2\x94\x82// blocked\n
Run Code Online (Sandbox Code Playgroud)\n

kdb

3
推荐指数
1
解决办法
293
查看次数