炒股软件上市公司有哪些(麦语言炒股软件有哪些)
本篇文章给大家谈谈炒股软件上市公司有哪些,以及麦语言炒股软件有哪些的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
重磅!年内**IPO华虹公司今上市,还有7只新股发行;
重磅!年内**IPO华虹公司今上市,还有7只新股发行;解禁市值环比降超3成;CPI等重磅数据将公布
一周财经日历
本周新股发行情况速览
本周(8月7日-8月11日)A股市场共7只新股发行,其中创业板3只,科创板2只,北交所2只。具体安排如下,周一3只:国子软件(北交所)、信宇人(科创板)、乖宝宠物(创业板);周二4只,博迅生物(北交所)、锴威特(科创板)、恒达新材(创业板)、协昌科技(创业板)上述公司股票的申购将在本周陆续开放。
与此同时,本周还有两只可转债发行,分别是富仕转债、双良转债,均在8月8日周二申购。
值得关注的是,华虹公司(即华虹半导体)发行的人民币普通股股票将于8月7日在上海证券交易所科创板上市,本次发行价格为52元/股,公司募资规模212.03亿元,是今年以来A股募资金额**IPO。北交所鸿智科技(870726)将于周二上市。
本周A股限售股解禁情况梳理
本周(8月7日-8月11日),沪深京三市有63家上市公司涉及限售股解禁,合计解禁量约29.36亿股,按**收盘价计算,解禁市值为600.18亿元,较上周环比下降36.51%;前一周A股解禁规模分别为50.59亿股、945.35亿元。
未来四周解禁情况
本周解禁数量最多的是华达新材,该公司本次股票上市流通总数为3.67亿股,占总股本比例为71.78%,上市流通日期为8月7日。
其他解禁数量较大的公司有宏柏新材(3.1亿股)、中体产业(2.74亿股)、弘业期货(2.26亿股)、盟科药业(2.2亿股)、海泰新能(1.75亿股)、天正电气(1.73亿股)等。
从实际解禁市值规模来看,江波龙位居**,高测股份次之,弘业期货排在第三。
**存储模组龙头江波龙7890.2万股限售股将于8月7日起上市流通,占总股本的19.11%,按**收盘价计算,解禁市值为68.88亿元,此次解禁股份类型为**原股东限售股份和**战略配售股份。解禁股东明细如下:
高测股份8131.25万股限售股将于8月7日起上市流通,占总股本的23.98%,解禁市值为39.35亿元,此次解禁股份类型为**原股东限售股份。本次解禁股东为张顼,张顼是高测股份实控人、**大股东、董事长。
弘业期货2.26亿股限售股份将于8月7日上市流通,占公司总股本的22.39%。
储能龙头派能科技解禁股东为南方基金管理有限公司、UBS AG、广发基金管理有限公司等18个机构股东。
解禁量占总股本比例方面,26股解禁比例超10%。泰祥股份比例高达75%,华达新材比例也超过70%,先惠技术、海泰新能、华锋股份、宏柏新材比例超过50%,天正电气、*ST西域、敏芯股份、盟科药业比例分别达42.56%、38.25%、33.52%、33.52%。
Kdb 用腻了?一文帮你成为数据迁移小能手
一直以来,Kdb 以程序体积小、代码简洁、运行速度快而闻名。它是美国华尔街各大金融机构20多年来处理大规模时序数据的**系统,通常用于高频交易,非常适用于高速存储、分析、处理和检索时序数据集。Kdb 还提供了专门的编程语言 q 语言,简洁而且灵活,天生具有处理大规模时序数据的能力。
2018年初发布的 DolphinDB,同样是性能极佳的时间序列数据库。作为一款国产的高性能分布式数据库产品,DolphinDB 迅速崛起,成为**头部券商、私募公募的**方案。DolphinDB 功能强大的编程语言和高容量高速度的流数据分析系统,能在满足低**高吞吐量数据读写的要求的同时,轻松实现因子挖掘、流式计算、股票行情回放、实时计算高频因子等功能,为金融和物联网领域的数据存储和分析计算提供一站式解决方案。近几年来,DolphinDB 天然的分布式构架,强大的流式增量计算能力,丰富的函数库,以及易用性等优势吸引了大量海内外用户使用 DolphinDB 代替 Kdb 。
本教程旨在为 Kdb 使用者迁移到 DolphinDB 提供一份简明的参考,考察了两者的相同点和区别,介绍了如何将 Kdb 数据迁移到 DolphinDB,并总结了从 Kdb 到 DolphinDB 编程语法方面的映射。
1. Kdb vs DolphinDBKdb 诞生于上世纪90年代末,主要用于金融场景的数据处理。DolphinDB 的**发布在2018,相隔 Kdb 20年。
1.1 DolphinDB 与 Kdb 的相同点1)数据库类型
DolphinDB 和 Kdb 都是列存储的时间序列数据库,都包括磁盘数据库和内存数据库,同样支持并鼓励对表进行分区。数据库系统都包括了编程语言,非常适合库内开发重度的数据应用。
2)编程语言
DolphinDB 和 Kdb 在编程语言方面有许多相似的地方。DolphinDB 同样支持元编程、向量处理和函数式编程,部分 SQL 语句可以在 DolphinDB 脚本中直接使用。Kdb 的数据类型、函数和关键字大多能在 DolphinDB 中找到对应,大部分的 Kdb 脚本都可以一对一翻译为 DolphinDB 脚本。
3)金融支持
DolphinDB 和 Kdb 都对金融领域有非常好的支持。作为列式存储的时序数据库,两者不**着常规数据库的**性、稳定性和安全性,还在存储和处理结构化时间序列数据的场景下有天然的优势,并且都支持对向量、矩阵、表等多种类型的数据进行数值分析的操作,非常适合追求高性能和高灵活性的金融应用领域。此外,DolphinDB 和 Kdb 还都具备对海量流数据进行实时分析的能力,是流数据库、内存数据库和历史数据三合一的全栈数据平台。
1.2 DolphinDB 与 Kdb 的区别1)系统架构
DolphinDB 和 Kdb 在架构上有很大的不同。DolphinDB 的构架引入了分布式文件系统,天然具备数据高可用、系统高容错、集群易扩展等分布式系统设计所带来的优势。相比之下,主要基于高性能计算机设计的 Kdb ,虽然也能通过脚本修改路由网关的方式,运行在多服务器集群上,但这种方式具有很大的局限性。除了集群的部署难度和扩展性受限,Kdb 很难像 DolphinDB 一样实现自动平衡节点负载来提升并行计算的性能,或是在某个节点故障时保证系统的高可用性。
2)多用户接入支持
DolphinDB 相对于 Kdb 在架构上的优势还体现在它对多线程的支持上。DolphinDB 支持多用户同时接入系统进行作业,用户可以使用 Web 端管理页面、VS code 插件或是桌面端的 DolphinDB GUI 连接服务器运行脚本。而 Kdb 虽然支持并发运算,它对多用户并发任务的支持却没有那么完善,一个运行非常耗时的任务作业就会导致整个数据库系统的阻塞,从而无法响应其他用户。实际生产中,这个缺陷在临近市场开放和结束的一段时间里可能会造成问题。
同时,Kdb 对多用户接入的设计是让所有用户共享一个 session,用 domain 来区分不同用户创建的变量或自定义函数,但不强制要求用户创建自己的namespace。而 DolphhinDB 为每一个用户创建自己的session,相互之间不可见,自定义变量和函数的共享则通过使用 share 关键字以及创建 module 或 functionView 的方式实现。相对而言,Kdb 的用户 session 管理机制对用户自己操作规范的要求更高。
3)数据库特性
DolphinDB 和 Kdb 磁盘存储的模式不同。Kdb 使用离线存储模式,数据**化需要**读写磁盘,在部分应用场景会因为 IO 的限制而效率较低。DolphinDB 使用在线存储,可以保持数据随时可用的状态。
此外,DolphinDB 数据库还有许多 Kdb 没有的特性。DolphinDB 内置了 OLAP 和 TSDB 双引擎,对事务的 ACID 有严格的支持。DolphinDB 提供包括技术分析指标库(TA-lib)、MyTT(My麦语言 T通达信 T同花顺)指标库和 WorldQuant 101 Alpha 因子指标库在内的1000多个内置函数,能更好地支持金融领域的应用场景。针对高频数据的实时分析处理,DolphinDB 内置多种流计算引擎,支持增量计算和并发计算,窗口函数的性能不受限于窗口长度,能很好地满足物联网和金融领域的应用需求。
4)编程友好
DolphinDB 和 Kdb 编程语言的设计理念有很大不同。Kdb 要求代码尽可能简短,来减小整个程序的footprint,从而换取更少的访存时间。Kdb 编程语言对同一操作符做了多种重载,表达式从左到右解析,运算符没有优先级,错误信息也非常简单。而 DolphinDB 的编程语言设计上非常注重代码的可读性,语法更接近 Python,表达式跟大部分编程语言的习惯相同,从右到左解析,并尊重运算符的优先级。DolphinDB 编程语言可读性高,上手难度低,代码更容易更新维护,是比 Kdb 更加适合现代软件工程团队协作的编程语言。
5)中文友好
与 Kdb 相比,DolphinDB 对中文用户更加友好。DolphinDB 由浙江智臾科技有限公司自主研发,有丰富的中文教程和交流氛围良好的技术交流社区,DolphinDB 团队也在不断地对产品进行更新和维护。
2. 从 Kdb 导入数据到 DolphinDBDolphinDB 为导入 Kdb 数据提供插件支持,插件代码已开源在 git**/gitee 平台,具体使用请参考 git** 上的教程或 gitee 上的教程。
DolphinDB 的 Kdb 插件为用户提供了两种数据导入方式:连接正在运行的 Kdb 数据库,以 Kdb 数据库作为中间管道导入数据;直接读取磁盘上的 Kdb 数据文件进行导入。两种方式都会将数据加载为 DolphinDB 的内存表。
使用 DolphinDB 的 Kdb 插件导入数据,在脚本中用 loadPlugin("
/path/to/plugin/PluginKDB.txt") 语句加载插件,就可以用插件提供的函数进行数据导入。对于**种导入方式,首先需要使用 connect 函数建立与 Kdb 数据库的连接,获取连接句柄,之后可以用 close 函数断开连接。使用 loadTable 函数通过 Kdb 数据库读取数据,需要提供表文件的路径和 sym 文件路径,sym 文件路径可以为空。
// 加载插件 loadPlugin("/home/DolphinDBPlugin/kdb/build/PluginKDB.txt") // 确保插件加载完毕再执行之后的代码 go // 连接 kdb 数据库,用户名和密码字段可以为空 handle = kdb::connect("127.0.0.1", 5000, "admin:123456") // 指定文件路径 DATA_DIR="/home/kdb/data/kdb_sample" // 通过 loadTable,加载数据到 DolphinDB Daily = kdb::loadTable(handle, DATA_DIR "/2022.06.17/Daily/", DATA_DIR "/sym") Minute = kdb::loadTable(handle, DATA_DIR "/2022.06.17/Minute", DATA_DIR "/sym") Ticks = kdb::loadTable(handle, DATA_DIR "/2022.06.17/Ticks/", DATA_DIR "/sym") Orders = kdb::loadTable(handle, DATA_DIR "/2022.06.17/Orders", DATA_DIR "/sym") // 关闭连接 kdb::close(handle)
对于第二种文件导入方式,使用 loadFile 函数直接读取磁盘上的 Kdb 文件,需要提供表文件的路径和可选的 sym 文件路径,sym 文件路径可以为空。
// 加载插件 loadPlugin("/home/DolphinDBPlugin/kdb/build/PluginKDB.txt") // 确保插件加载完毕再执行之后的代码 go // 指定文件路径 DATA_DIR="/home/kdb/data/kdb_sample" // 通过 loadFile,加载数据到 DolphinDB Daily2 = kdb::loadFile(DATA_DIR "/2022.06.17/Daily", DATA_DIR "/sym") Minute2= kdb::loadFile(DATA_DIR "/2022.06.17/Minute/", DATA_DIR "/sym") Ticks2 = kdb::loadFile(DATA_DIR "/2022.06.17/Ticks/", DATA_DIR "/sym") Orders2 = kdb::loadFile(DATA_DIR "/2022.06.17/Orders/", DATA_DIR "/sym")
3. 给 Kdb 使用者的 DolphinDB 语法参考
本节的编写基于 Kdb 和 q 官方参考文档和 DolphinDB 2.0用户手册。
本节所提及的 Kdb 函数或关键字在 DolphinDB 中的对应,仅保证功能上的可替代性,使用方法可能与原函数略有差异。建议在实际使用前查阅 DolphinDB 2.0用户手册。
3.1 数据类型3.1.1基本数据类型
Kdb 数据类型 | DolphinDB 数据类型 | 举例 | 字节数 | 范围 |
VOID | NULL | Void | ||
boolean | BOOL | 1b, 0b, true, false | 1 | 0~1 |
byte | ||||
char | CHAR | 'a', 97c | 1 | -2 7 1~2 7 -1 |
short | SHORT | 122h | 2 | -2 15 1~2 15 -1 |
int | INT | 21 | 4 | -2 31 1~2 31 -1 |
long | LONG | 22, 22l | 8 | -2 63 1~2 63 -1 |
real | FLOAT | 2.1f | 4 | 有效位数:06~09 位 |
float | DOUBLE | 2.1 | 8 | 有效位数:15~17 位 |
date | DATE | 2013.06.13 | 4 | |
month | MONTH | 2012.06M | 4 | |
time | TIME | 13:30:10.008 | 4 | |
minute | MINUTE | 13:30m | 4 | |
second | SECOND | 13:30:10 | 4 | |
(datetime) | DATETIME | 2012.06.13 13:30:10 or 2012.06.13T13:30:10 | 4 | |
TIMESTAMP | 2012.06.13 13:30:10.008 or 2012.06.13T13:30:10.008 | 8 | ||
DATEHOUR | 2012.06.13T13 | 4 | ||
timespan | NANOTIME | 13:30:10.008007006 | 8 | |
timestamp | NANOTIMESTAMP | 2012.06.13 13:30:10.008007006 or 2012.06.13T13:30:10.008007006 | 8 | |
symbol | SYMBOL | 4 | ||
STRING | "Hello" or 'Hello' or `Hello | |||
guid | UUID | 5d212a78-cc48-e3b1-4235-b4d91473ee87 | 16 |
DolphinDB 目前没有可以直接对应 Kdb 中 byte 的数据类型。
Kdb 中的 char 类型使用双引号标识,而 DolphinDB 的 CHAR 使用单引号。"c" 在 DolphinDB 中会被识别为字符串。
Kdb 中的 long 类型与 DolphinDB 的 LONG 数据类型符号不同。一个值为42的长型整数若表示为 42j,则无法被 DolphinDB 识别。
Kdb 中的 month 类型与 DolphinDB 的 MONTH 数据类型符号不同,2006.07m 在 DolphinDB 中会报错。对于时间类型的值,DolphinDB 用小写字母 m 作分钟类型的后缀,而月份类型的后缀使用了大写字母 M。
DolphinDB 中 DATETIME 类型大小为4字节,而 Kdb 中 datetime 类型大小为8字节。
DolphinDB 的 SYMBOL 类型是特殊的字符串类型,相当于枚举类型,数据在 DolphinDB 系统内部存储为一个整数,因此数据排序和比较更有效率。具体使用请参照《DolphinDB 2.0用户手册》中“数据类型”一节。
关于 NULL 和 INF
与 Kdb 不同,DolphinDB 没有专门用于表示各个类型正负**值的字面量,类型数据溢出时,会被处理为该类型的 NULL 值。通常,在赋值语句或表达式中使用无返回值的函数时,也会得到一个 VOID 类型的 NULL。
通过函数 isVoid 判断是否为 VOID 类型的 NULL,通过函数 isNull 和 isValid 可以检查所有 NULL 值,包括 VOID 和有类型的 NULL。对于不关心 NULL 类型的用户,建议使用 isNull 或 isValid 进行条件判断。
对于 NULL 值的初始化、运算,以及在普通向量函数、聚合函数和高阶函数中的使用方法,《DolphinDB 2.0用户手册》中“NULL 值的操作”一节有详细的说明。
3.1.2 其他数据类型
Kdb 数据类型 | DolphinDB 数据结构 | 举例 |
list | ANY, MATRIX, DICTIONARY | (1,2,3) |
enums | ||
anymap | ANY DICTIONARY, DICTIONARY | {a:1,b:2} |
dictionary | ||
table | IN-MEMORY TABLE |
ANY DICTIONARY 是 DolphinDB 中表示 JSON 的数据类型。
DolphinDB 的字典支持嵌套,键必须是标量,值可以是**数据形式与数据类型。Kdb 的字典在输出或进行遍历时,键值对会保留输入时的顺序,而 DolphinDB 的字典按照 key 在 bucket 内的顺序输出键值对。
Kdb 的矩阵由嵌套的 list 表示,遵循行优先。DolphinDB 的矩阵有专门的数据类型 matrix,遵循列优先,Kdb 矩阵输入到 DolphinDB 时需要转换方向。
DolphinDB支持包括标量、向量、数据对、矩阵、集合、字典和表在内的多种数据形式,并针对不同的使用场景做了具体优化,请参考《DolphinDB 2.0文档》中“数据形式”一节。
3.1.3 数据类型检查函数DolphinDB提供了 typestr 和 type 这两个用于检查数据类型。typestr 返回的是数据类型的名称(字符串常量);type 返回的是数据类型 ID(整数)。
3.2 关键字3.2.1 control 类
Kdb | DolphinDB |
do | do-while |
exit | |
if | if-else |
while | do-while |
3.2.2 env 类
Kdb | DolphinDB |
getenv | getEnv |
gtime | gmtime |
ltime | localtime |
setenv |
3.2.3 interpret 类
Kdb | DolphinDB |
eval | eval |
parse | parseExpr |
reval | |
show | |
system | shell |
value | 查询字典、表的值: values 查询普通变量的值: 将字符串作为元代码执行: parseExpr 将列表作为元代码执行: expr |
3.2.4 join 类
join 方式 | Kdb | DolphinDB |
as-of join | aj, aj0, ajf, ajf0, asof | aj |
equal join | ej | ej, sej |
innner join | ij, ijf | inner join |
left join | lj, ljf | lj, lsj |
plus join | pj | |
union join | uj, ujf | |
window join | wj, wj1 | wj, pwj |
3.2.5 list 类
Kdb | DolphinDB |
count | 非NULL元素个数: count 包括NULL的元素个数: size |
mcount | mcount |
cross | join:C, cross(join, X, Y) |
cut | cut |
enlist | [], array, bigArray |
except | |
fills | ffill, ffill! |
first | first |
last | last |
flip | flip, transpose |
group | groups |
in | in |
inter | intersection(set(X), set(Y)) |
next | next |
prev | prev |
xprev | move |
raze | 将一个矩阵或一系列向量转换成一维向量: flatten |
reverse | reverse |
rotate | |
sublist | head, tail, subarray, subtuple |
sv | 连接字符、字符串向量: concat |
til | til |
union | union(set(X), set(Y)) 或 distinct(join(X, Y)) |
vs | 分割字符串: split |
where |
3.2.6 logic 类
Kdb | DolphinDB |
all | all |
and | and |
any | any |
not | not |
or | or |
3.2.7 math 类
Kdb | DolphinDB |
abs | abs |
cos | cos |
acos | acos |
sin | sin |
asin | asin |
tan | tan |
atan | atan |
avg | avg, mean |
avgs | cumavg |
ceiling | ceil |
cor | corr |
cov | |
scov | covar |
deltas | deltas |
dev | stdp |
mdev | mstdp |
sdev | std |
div | div |
ema | ema |
exp | exp |
xexp | pow |
floor | floor |
inv | inverse |
log | log |
xlog | |
lsq | |
mavg | mavg |
wavg | wavg |
max | max |
maxs | cummax |
mmax | mmax |
med | med |
min | min |
mins | cummin |
mmin | mmin |
mmu | dot |
mod | mod |
sum | sum |
sums | cumsum |
msum | msum |
wsum | wsum |
neg | neg |
prd | prod |
prds | cumprod |
rand | rand |
ratios | ratios |
reciprocal | reciprocal |
signum | signum |
sqrt | sqrt |
within | between, in |
var | varp |
svar | var |
DolphinDB 的 TA-lib 系列函数窗口确定规则与 Kdb 不同,会忽略元素开头的空值,并将这些空值保留到结果中,然后从**个非空元素开始进行滑动窗口的计算。当以元素个数衡量窗口时,根据滑动窗口的计算规则,只有当 window 内的元素填满窗口时,才开始**次计算,即前(window - 1)个元素的计算结果默认为 NULL。
DolphinDB 的 m 系列(滑动窗口系列)函数的窗口确定规则,在没有指定 minPeriods 参数的情况下,将前 (window - 1)个元素视为 NULL。若要得到与 Kdb 相同的计算结果,请将 minPeriods 参数指定为1。
DolphinDB 的 ratios 函数,若输入参数是向量,返回结果的**个元素是 NULL。
3.2.8 meta 类
Kdb | DolphinDB |
attr | |
null | isNull, isNothing, isVoid |
tables | getTables |
type | type, typestr, form |
view, views |
3.2.9 SQL类
Kdb | DolphinDB |
delete | delete, sqlDelete |
exec | exec |
fby | contextby |
select | select |
update | 更改记录: update, sqlUpdate 添加新的记录: insert into 添加新的列: alter, addColumn |
3.2.10 sort 类
Kdb | DolphinDB |
asc | sort, sort! |
iasc | isort, isort! |
xasc | sortBy! |
bin, binr | binsrch |
desc | sort, sort! |
idesc | isort, isort! |
xdesc | sortBy! |
differ | valueChanged |
distinct | distinct |
rank | rank |
xbar | bar |
xrank | bucket |
3.2.11 table 类
Kdb | DolphinDB |
cols | columnNames |
xcol | rename! |
xcols | reorderColumns! |
csv | csv 格式分隔符: , |
fkeys, key, keys, xkey | |
insert | insert into, tableInsert, append!, push! |
meta | schema |
ungroup, xgroup | |
upsert | insert into, tableInsert, append!, push! |
xasc | sortBy! |
xdesc | sortBy! |
3.2.12 text 类
Kdb | DolphinDB |
like | like, iliek |
lower | lower |
upper | upper |
trim | trim |
ltrim | ltrim |
rtrim | rtrim |
md5 | md5 |
ss | regexFind |
ssr | regexReplace |
string | string |
3.2.13 自定义函数
Kdb | DolphinDB |
signed lambda: f:{[x;y](x*x) (y*y) 2*x*y} unsigned lambda: {(x*x) (y*y) 2*x*y}[20;4] | 命名函数: def func(x, y) { return (x*x) (y*y) 2*x*y; } 匿名函数: def (x, y) { return (x*x) (y*y) 2*x*y; } |
lambda表达式(只有一个语句的函数): def func(x,y):(x*x) (y*y) 2*x*y; 或 def(x,y):(x*x) (y*y) 2*x*y; 或 def(x,y)-> (x*x) (y*y) 2*x*y; 或 x->x*x |
在 Kdb 的语法中,“lambda”与“function“这两个词是等价、可互换的。而在 DolphinDB 中,lambda 表达式是只有一个语句的函数。
Kdb 允许无参数列表的函数定义,会默认 x, y, z 按顺序作为可使用的参数名。而 DolphinDB 要求自定义函数必须有非空或者空的参数列表。
DolphinDB 支持在定义函数时使用默认参数,支持使用 const 和 mutable 关键字修饰参数。
// default argument def func(x=1): x 1; // mutable argument def i2t(mutable tb) { return tb.replaceColumn!(`time, time(tb.time/10); }
DolphinDB 对自定义函数支持即时编译(JIT),能保证函数的执行效率。
DolphinDB 允许自定义函数使用内置函数的**调用方式,即可以用标准格式(前缀)和对象方法格式(后缀)调用用户的自定义函数,若用户定义函数的参数数量为一个或两个,还可以使用运算符格式(中缀)调用函数。
def f(x, y): x y 1; p = 2; q = 3; f(p, q); // standard p.f(q); // method of object p f q; // operator
3.3运算符
与 Kdb 相同,DolphinDB 的运算符根据作用对象的数目可分为一元运算符和二元运算符。DolphinDB 支持许多类型的基本运算符,包括算术运算符、布尔运算符、关系运算符、成员运算符等,以及多种运算数据类型,包括标量、向量、集合、矩阵、字典和表。
与 Kdb 不同的是,DolphinDB 表达式的运算顺序是从左往右,也存在运算符优先级的概念。DolphinDB 的运算符优先级顺序与大多数编程语言相似,表达式中优先级**的运算符首先被执行,具有相同优先级的运算符则按从左到右的顺序执行。
Kdb 符号 | Kdb 含义 | DolphinDB |
. | Apply | call() |
Index | [] | |
Trap | try-catch | |
Amend | ||
@ | Apply At | call() |
Index At | [] | |
Trap At | try-catch | |
Amend At | ||
$ | Cast | $, cast() |
Tok | 类型转换函数可直接转换字符串 | |
Enumerate | ||
Pad | lpad(), rpad() | |
mmu | ** | |
! | Dict | dict() |
Enkey, Unkey, Enumeration, Flip Splayed, internal | ||
Display | print() | |
Update | update(), update!() | |
Delete | erase!() | |
? | Find | in(), find() |
Roll | rand() | |
Deal, Enum Extend | ||
Select | select | |
Exec, Simple Exec | exec | |
Vector Conditional | iif() | |
Add | ||
- | Substract | - |
* | Multiply | * |
% | Divide | \ |
= | Equals | == |
<> | Not Equals | != |
~ | Match | |
< | Less Than | < |
<= | Up To | <= |
>= | At Least | >= |
> | Greater Than | > |
| | Greater | max() |
OR | | | |
& | Lesser | min() |
AND | & | |
# | Take | take() |
Set Attribute | ||
_ | Cut | cut() |
Drop | drop() | |
: | Assign | = |
^ | Fill | ffill(), ffill!() |
Coalesce | append!() | |
, | Join | <- |
' | Compose | |
0: 1: 2: | File Text, File Binary, Dynamic Load | loadText(), saveText() |
0 ±1 ±2 ±n | write to console, stdout, stderr, handle n | print() |
3.4副词
Kdb 和 DolphinDB 中的副词,也就是高阶函数,是以一个函数与数据对象作为输入内容的函数,用以扩展或增强函数或者运算符的功能。通常,输入数据首先以一种预设的方式被分解成多个数据块(可能重叠),然后将函数应用于每个数据块,**将所有的结果组合为一个对象返回。
Kdb 中副词的作用对象是 list,而 DolphinDB 高阶函数的输入数据可以是标量、向量、矩阵、字典或表。通常来说,一个向量被分解成多个标量,一个矩阵被分解成多列(向量),一个表被分解成多行(字典)。在组装阶段,标量类型合并组成一个向量,向量合并成一个矩阵,字典合并成一张表。DolphinDB 高阶函数按元素遍历向量,按列遍历矩阵,按行遍历表。
Kdb 符号 | Kdb 含义 | DolphinDB |
' | Each, each | each() 或 :E |
Case | ||
Each Parallel, peach | peach() | |
Each Prior, prior | eachPre() 或 :P | |
/: | Each Right | eachRight() 或 :R |
\: | Each Left | eachLeft() 或 :L |
/ | Over, over | reduce() 或 :T |
\ | Scan, scan | accumulate() 或 :A |
3.5执行控制
Kdb 符号 | Kdb 含义 | DolphinDB |
.[f;x;e] | Trap | try-catch |
@[f;x;e] | Trap-At | try-catch |
: | Return | return |
' | Signal | throw |
do | do-while | |
exit | quit | |
while | do-while | |
if | if-else | |
$[x;y;z] | Cond | if-else |
x:y | Assign | |
x[i]:y | Indexed assign | |
x op:y, op:[x;y] 或 x[i]op:y, op:[x i;y] | Assign through operator | 支持以下运算符扩展的赋值: =, -=. *=, /=, \= |
\t | Timer | timer |
DolphinDB 支持多变量赋值,可将一个或多个值一次性赋予多个变量。
DolphinDB 支持引用赋值,直接引用原值的内存地址来避免不必要的拷贝,有效地节约内存空间。例如,对于交换两个变量的值的操作,引用赋值的效率高于按值赋值的效率。
n=20000000; x=rand(200000.0, n); y=rand(200000.0, n); timer x, y = y, x; // Time elapsed: 1240.119 ms timer {&t=x;&x=y;&y=t;} // Time elapsed: 0.004 ms
DolphinDB 允许用户通过取消变量或函数定义来手动释放内存。使用 undef 或