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

目录
相关文章
|
5月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
386 64
|
17天前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
49 19
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
66 4
|
2月前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
182 32
|
21天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
39 0
|
2月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
68 11
|
3月前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
4月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
4月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
4月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
94 3

热门文章

最新文章