字典用dictUpdate!函数更新: dictUpdate!(dictionary, function, keys, parameters, [initFunc=copy])
回答于 2021-06-14 13:27
select * from tmporder where trade_date=2020.01.02 这个查询涉及2020.01.02的10个分区; select * from tmporder where secu_code = "10002340" 这个查询涉及的分区数跟库中保存了多少天有关,它涉及的分区数为每天1个。若总数 超过了10天,就可能比第1个查询涉及的分区数要多,而且它每个分区有多个股票,还需要过...
回答于 2021-06-14 13:22
用xdb,比如: ``` conn = xdb(host, port, uid, pwd) t = conn(func, args...) ```
回答于 2021-06-14 12:17
DolphinDB中的context by也支持having,可以按组来来过滤数据 ``` select * from t context by SecurityId csort volume desc having rowNo(volume) < volume.size() * 0.25 ``` 下面一种方法稍微复杂一点,就是先用percentile找到每个股票%75的最大值,然后用字典设定每个股票对应的75%最大值,再用conditionalFilt...
回答于 2021-06-14 10:05
可以用eachPost(-, v) 如果要去掉最后一个返回的NULL,可以如下: ``` a = eachPost(-, 1 2 3 4).removeTail!(1) ```
回答于 2021-06-13 22:16
zscore不是一个聚合运算,它返回一个等长的向量, 你把moving(zscore,p_1,10)改成 (x - mavg(x, 10))/mstd(x, 10)就可以了 相比下面用moving的方法,可能有30倍的性能差距 ``` update aa_copy_1 set p_score = (p_1-moving(mean,p_1,10))/moving(std,p_1,10) context by secu_code ```
回答于 2021-06-13 22:14
可以用transpose转置一下,比如: ``` select skew(transpose(matrix([askv1, askv2, askv3,aksv4,askv5]))) from t ``` 或者用byRow函数,byRow函数内部帮忙做了transpose,示例如下: ``` byRow(skew, matrix(askv1, askv2, askv3, askv4, askv5)) ```
回答于 2021-06-12 19:24
就是把mean往前滚60个tick是吧,可以用move函数,其参数取正取负就表示不同方向,例如: ``` mcorr(move(rollmean, -60), roll_ret, 60) ```
回答于 2021-06-12 18:26
可以自定义一个函数,求百分比点位。例如算0在a中的百分比点位 ``` a = [-1, 2, -3, 1, -2, 3, 0 ] def findPercent(x, ele) { return sum(ele>=x) \ x.size() } findPercent(a, 5) ```
回答于 2021-06-12 18:11