You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用函数式更新批量添加参数化列及买卖信号计算实现

KDB+ 单行实现移动平均、信号转换及综合信号计算

原始表定义

t:([] ticker:`IBM`IBM`IBM`IBM`IBM; time:2025.04.07D09:15:00.000000000 2025.04.08D09:15:00.000000000 2025.04.11D09:15:00.000000000 2025.04.15D09:15:00.000000000 2025.04.16D09:15:00.000000000; close:22161.6 22535.85 22828.55 23328.55 23437.)

单行实现语句

update signal:{first key g where g=max g:count each group x} each flip ("sMA",string each 10+til 81) from update ("sMA",string each 10+til 81)!{?[x>=close;`BUY;`SELL]} each ("MA",string each 10+til 81) from update`[t;`ticker;("MA",string each 10+til 81)!{mavg[x;close]} each 10+til 81]

各部分说明

  • 添加MA10至MA90列
    用函数式update按ticker分组,通过10+til 81生成10到90的整数序列,批量生成MA10到MA90的列名,同时对每个n调用mavg[n;close]计算对应窗口的移动平均,最后通过字典映射一次性完成多列添加。

  • 生成sMA10至sMA90信号列
    基于已生成的MA列,批量创建sMA前缀的信号列:用三元判断函数?[x>=close;BUY;SELL],当移动平均值大于等于收盘价时标记BUY,否则标记SELL。

  • 计算综合signal列
    对每行的所有sMA信号列,先统计BUY和SELL的出现次数,取出现次数更多的信号作为该行的signal值;由于本例中信号列共81列(奇数),不会出现次数相等的情况,若需处理偶数列的平局场景,可自行调整判断逻辑。

内容的提问来源于stack exchange,提问作者marital_weeping

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:58:33