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

目录
相关文章
|
18天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
133 64
|
7天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
20 3
|
7天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
20 2
|
16天前
|
XML 存储 数据库
XML在数据库中有哪些应用?
【10月更文挑战第17天】XML在数据库中有哪些应用?
18 2
|
18天前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
|
19天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
35 0
【入门级教程】MySQL:从零开始的数据库之旅
|
1月前
|
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`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
27天前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
87 5
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
36 5