arctic数据库使用教程(1)---为啥要用arctic以及arctic的简单应用

简介: arctic数据库使用教程(1)---为啥要用arctic以及arctic的简单应用

为啥使用数据库


在做量化投研的过程中,一个适合的数据库往往能够提高工作的效率,在过去的工作研究经历中,使用过csv文件、pickle文件、mysql、mogodb等数据库,在我自己以后的投资研究过程中,尝试使用mongodb数据库和man-group(英士曼集团)开源的基于mongodb的数据库框架-ARCTIC,应该足够能够满足我的投研需要了。


必须要说明的是,arctic数据库应该算不上最快的时序数据库,有很多收费或者免费的数据库都比它效率要高一些,比如收费的kdb+数据库,半收费的dophindb等,arctic的优势在于免费、简单易用,所以在存储股票、期货、基金、期权、债券、可转债、外汇等数据的时候,我选择了ARCTIC。


安装教程


使用之前首先需要在电脑上安装mongodb数据库,需要安装python,然后安装arctic。


数据库命名


在使用ARCTIC的时候,需要创建两个名字,一个是library_name,一个是symbol_name,所以对数据库的名字做一个统一的规定,library_name是大类资产的名字,symbol_name是具体资产__周期__交易所的名字,这样同一规定之后,方便后续数据的管理工作。


股票 — STOCKS

期货 — FUTURES

基金 — FUNDS

期权 — OPTIONS

债券 — BONDS

可转债 — CBONDS

外汇 ---- FORES

数字货币 — DIGITALS


一个存储数字货币的例子

import gzip
import os,sys
import pandas as pd
from arctic import Arctic
# 连接数据库
conn = Arctic('127.0.0.1')
# 判断library是否存在,如果不存在就创建一个
if "DIGITALS" not in conn.list_libraries():
    conn.initialize_library("DIGITALS")
# 连接到具体的library中
lib = conn["DIGITALS"]
# 遍历数据并存储
data_root = "/home/yun/Downloads/spot/"
timeframe = "1m"
symbol_type = "spot"
exchange = "binance"
file_list = os.listdir(data_root)
for file in file_list:
    symbol = file.split(".")[0]
    symbol_name = symbol+"__"+timeframe+"__"+symbol_type+"__"+exchange
    with gzip.open("/home/yun/Downloads/spot/"+file, 'rb') as f:
        df = pd.read_csv(f)
        lib.write(symbol_name, df)
        print(f"存储数据{file}成功")
    # 读取数据
    # symbol_name = 'USDS-USDT__1m__spot__binance'
    # data = lib.read(symbol_name).data
    # 判断是否满足 data == df


读取数字货币数据,并使用plotly_express画出收益率直方图,观察收益率分布情况

# 获取数据
import gzip
import os,sys
import pandas as pd
from arctic import Arctic
# 连接数据库
conn = Arctic('127.0.0.1')
# 连接到具体的library中
lib = conn["DIGITALS"]
# 打印当前library中有多少的symbol
symbol_list = lib.list_symbols()
# 循环数据,并打印数据,生成一个1分钟收益率,然后生成一个直方图
data = pd.DataFrame()
count = 0
for symbol in symbol_list:
    if "spot" in symbol:
        count+=1
        name = symbol.split("__")[0]
        df = lib.read(symbol).data
        df['ret'] = df['close'].pct_change()
        df['name'] = name
        df = df[['ret','name']]
        if count<3:
            data = data.append(df)
        print(symbol)
data = data.dropna()
import plotly_express as px
fig = px.histogram(data,x="ret",color="name")
fig.show()

从1分钟收益率的直方图上来看,这两个数字货币的绝大多数时间内收益率波动都比较小,但是有极少数的1分钟K线的收益率非常高或者非常低。f528e575333242ce80de03fa2081ca5d.png

目录
相关文章
|
8天前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
44 4
|
1月前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
145 32
|
3月前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
4月前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
121 0
【入门级教程】MySQL:从零开始的数据库之旅
|
4月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
83 0
|
4月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
141 0
|
4月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
5月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
5月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
6月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
299 0
【教程】navicat配合HTTP通道远程连接SQLite数据库

热门文章

最新文章