我们有大约7k的金融产品,其收盘价理论上应该在规定的时间段内(例如一周或一个月的时间段)在一定的百分比范围内上下移动.
我可以访问存储这些历史价格的内部系统(不是关系数据库!).我想制作一份报告,列出任何价格在这段时间内根本没有移动或低于10%的产品.
我不能只将第一个值(第1天)与结束时的价值(第n天)进行比较,因为价格可能会回到最后一天的价格,这会导致产品价格误报.当然可能在两者之间飙升.
在合理的计算时间内是否有任何已建立的算法?
我有一个语法突出显示q/kdb +语言的文件,我想将它转换为vim兼容文件,所以我的q代码看起来不会比平常更难看.
是否有可用于将notepad ++ xml语法高亮文件自动转换为vi版本的实用程序?我环顾四周,但找不到任何东西.
或者,是否有人有vim q语法高亮文件?
如何从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控制台返回一些行,不知道那是什么行.
我使用的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; };
所以我创造了一个赏金
请考虑下表:
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 +查询中的操作,但不知道如何使用它.我可以使用like运算符,即 http:// kdbserver:8001 /?从orderDetails中选择符号"X*"此查询成功给出结果.
如何使用/实现不喜欢相同的查询?
我有这个功能 f
f:{{z+x*y}[x]/[y]}
Run Code Online (Sandbox Code Playgroud)
我可以在f没有第三个参数的情况下调用,但是我得到了,但是如果{z+x*y}没有第三个参数,内部能够完成吗?
我正在尝试在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 服务器,该服务器具有每毫秒到达的新数据表。
目前,我只是使用一种简单的方法,它基本上是这样的:
.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?
在 4.0 中,如何阻塞控制流,直到句柄上收到任何消息?
\n在 3.6 版本中,我可以使用https://code.kx.com/q/basics/ipc/#block-queue-flushr:h[]中描述的技术
r:h[]但从 4.0 开始,即使我从第二个进程发送类似的内容,呼叫也会永远挂起key[.z.W]@\\:".z.i"(对于 3.6,这是第二个进程有点挂起:它开始成为进程 1 的从属进程,只为它提供服务)请求,但在 4.0 中,进程 1 永远挂起,仅响应进程 2)
这是我在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\nRun Code Online (Sandbox Code Playgroud)\n