首页 > 世链号 > 利用SQLite构建发明者量化数据库
发明者量化  

利用SQLite构建发明者量化数据库

摘要:本篇我们来研究一下发明者量化(FMZ.COM)内置的数据库,内容包括:如何创建数据表、存储数据、修改数据、删除数据、引用数据以及如何应用于实战。

摘要

数据是量化交易的源头,如何高效地管理大量数据是非常关键的环节,数据库是最佳的解决方案之一,现如今数据库的应用已经是各类日内交易、高频交易等策略的量化标准配置。本篇我们来研究一下发明者量化(FMZ.COM)内置的数据库,内容包括:如何创建数据表、存储数据、修改数据、删除数据、引用数据以及如何应用于实战。

 

如何选择数据库

熟悉发明者量化平台的应该知道,在这之前要想把数据保存到本地复用,只能用_G()函数,每次停止策略时,_G()函数会自动保存需要的信息。但如果想要保存更多更复杂的格式化数据,_G()函数显然就不太适用了,于是很多人想到了自建数据库来解决这个问题。

 

提到自建数据库,想必大家能想到Oracle、MySQL、KDB、OneTick、NoSQL...这些都是非常优秀的企业级别的应用,不管是功能还是性能都非常强大。但也面临几个问题:上手难度大,配置繁琐维护起来麻烦,这对于量化交易散户来说,有点用大炮打苍蝇的感觉,即使上手也只是用到很少一部分功能。

 

发明者量化内置数据库

接下来让我们认识一下发明者量化内置的轻型数据库,DBExec是发明者量化内置的一个关系型数据管理系统接口,基于SQLite开发,其本身是用C写的,不但体积小巧,占用资源低,而且处理速度快,非常适合用于金融量化分析爱好者在本地实现数据管理,因为可以将不同的“对象”(例如交易所,数据源,价格)分成不同的表,并在表之间定义关系。此外用户无需单独安装和配置,只要调用DBExec()函数就可以直接使用!

 

另外,SQLite语言的学习成本很低,在数据库上执行的大部分工作都由SQLite语句完成。熟悉基本语法就能满足大部分需求,以下是SQLite的基础语法。

 

基础语法

SQLite的语法是不区分大小写的,不过有一些命令对大小写敏感,如GLOB和glob代表不同的含义。SQLite语句可以以任何关键字开始,如SELECT、INSERT、UPDATE、DELETE、ALTER、DROP等,它们分别表示:提取数据、插入数据、更新数据、删除数据、修改数据库、删除数据表。所有的语句以英文分号结束。下面是一个简单的数据库创建、增、删、改、查等操作:

 

一个数据库通常包含一个或多个表,每个表都有一个名字标识,需要注意的是系统保留表分别: kvdb, cfg, log, profit, chart。也就是说在创建表时,应该避开系统保留的名字。让我们运行上面的代码,输出以下内容:

 

策略实例

了解了SQLite的基础语法,我们趁热打铁使用发明者量化内置的数据库,创建一个收集和使用Tick数据的实例。

 

第一步:更新托管者

首先确保您使用的是最新版本的托管者,如果之前下载使用过托管者,需要先删除,并在 https://www.fmz.com/m/add-node 页面重新下载和部署。

 

第二步:创建策略

 

第三步:运行策略

以Windows为例,运行策略之后,会在托管者目录的“logsstorage”目录中生成一个以机器人编号命名的文件夹,打开该文件夹,里面有一个以“.db3”作为后缀的文件,这个文件就是发明者量化内置数据库的文件。以下图所示:

 

上面的代码首先创建了一个以“tick”命名的数据表,然后给该表添加tick数据字段,接着在循环中从交易所获取tick数据,并把这些数据插入到“tick”数据表中,同时判断该数据表中的数据量超过10个就跳出循环。最后分别用5个SQLite命令查询、删除、修改数据表中的数据。并在日志中打印出来,以下图所示:

 

第四步:创建状态栏

最后我们增加一些代码,通过获取发明者量化数据库中的数据,给策略创建一个状态栏,把数据更直观的展示出来,新增代码如下:

 

上面的代码通过数据库中的数据,创建了一个“币安Tick数据”表。其中数据库中的“columns”字段代表状态栏中的“行”,“values”字段代表状态栏中的“列”。如下图所示:

 

完整策略代码

点击该链接 https://www.fmz.com/strategy/265906 即可复制完整策略代码。

 

内存数据库

如果操作的数据不希望永久保存到磁盘,可以在SQL语句前加上:符号就可以在内存数据库里操作, 机器人重启后数据重置

DBExec(":select 1,2,3");

 

总结

数据库不仅可以承载海量数据,更能承载众多量化交易爱好者的宽客梦想。对于数据库的使用绝非仅限于本文的例子,更多使用方法可以参考SQLite教程,以及发明者量化后续推出的系列文章。

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。