导航:首页 > 数据行情 > mongodb股票数据存储

mongodb股票数据存储

发布时间:2025-01-09 00:28:20

⑴ 什么是金融数据

怎么给你说呢,学术化的定义很多,通俗点的例子,某只股票一段时期的价格数据按既定的时间顺序排列就可以称之为一种金融时间序列数据。

⑵ 如何搭建自己的股票高频数据库(Python)

二话不说,先上结果。本文阐述了以下几个方面:

下图是编写好的数据接口提取数据的示例。该数据接口支持多标的、多品种(股票、指数一起提取)、多字段、多时间提取。并且支持不复权、后复权、等比前复权提取(前复权不太实用就没有做)。而且速度巨快,没有数据量的限制。如果你也觉得很香,请接着往下看,本文将手把手教你搭建这样的数据库。

数据库搭建需要用到一些第三方库,在各位动手之前请安装:

本文的方法不涉及到常用的数据库(不涉及MySQL、MongoDB),思路非常简单,请各位放心食用。主要是使用pyarrow来加强代码性能。虽然不涉及到常用数据库,但这是我目前能想到的最有效的方法。

正所谓“巧妇难为无米之炊”,想搭建高频数据库,就需要一个数据源获取高频数据。在此,我推荐聚宽作为我们的数据源。 聚宽账号的申请请点这里。新人用户有每日100万条数据,DataFrame的一行算一条,请各位务必珍惜自己的数据量。(不过我是正式用户了,每天两个亿,就不太在意这一点哈哈。)

非会员的100万条数据量能干啥?我们来简单计算以下:每个交易日有240条数据(4个小时,240条分钟k线),假设一年有250个交易日,每只股票每年需要占用60000条数据。也即一日的数据量能够提取一只股票16年(100/6=16.66667)左右的股票分钟数据。相当于数据库的搭建过程还是相当艰难的,每天耗尽数据量只能下载好一只股票的数据。(白嫖是这样的啦,如果有条件可以联系聚宽客服,购买正式账号)

我们这里假设我们的数据库记录2015年至今的股票分钟数据。(当然我自己的数据库记录的是2005年1月1日的全A股分钟数据)这里,我们以贵州茅台(股票代码 600519.XSHG)为例,演示数据的提取与保存。先看看数据如何从接口提取出来(这里需要用到各位申请的聚宽账号):

来看看代码运行的结果。

数据提取后,自然需要把数据保存起来。pandas.DataFrame有很多方便的方法可以将数据保存下来。为做对比,这里将数据保存为csv格式和ftr格式。

相对应的,我们可以用这样的代码将保存好的数据读取进来。虽然pandas有read_feather函数,可以直接将ftr文件读取进来,但这个速度比直接调用pyarrow的更慢一些。考虑到代码性能,这里直接从pyarrow调用read_feather函数。

虽然两种格式都能将数据完整地保存下来,但读取速度上,ftr文件占据着绝对的优势。因此,我们考虑到数据库的性能以及数据库所占空间,我们选择使用ftr格式储存数据。feather正如他的名称,像羽毛一样轻,它所占的空间会比csv更小。这是一种不占空间,读取速度又快的文件格式,太香了!

在前文中我提到了行情数据的提取、保存方法,并强调了一定要提取不复权的数据。这是为了与复权因子结合,还原各种形式的复权数据。至于复权的详细定义,请参看 网络。

随便打开一个股票看盘软件,大致会有3种复权方式,即前复权、不复权、后复权。按照我自己的想法,可以这么理解:

在这样的情况下,如果记录价格数据,记录前复权的数据是最没有意义的,因为隔一段时间,历史的价格就全变了。如果只做收益率相关研究的话,记录后复权数据是可以的。然而,我们这里要搭建数据库,所以采取“记录不复权数据”加上“复权因子”还原的方法。

我们着手提取复权因子。在提取之前,不妨再理顺一下思路:

思路理顺了,我们来看看后复权因子的提取方法:

有了复权因子,如何计算复权价格?请接着看第3节——数据接口编写。

提取了行情数据和复权因子数据,应当找个地方把它们存放起来。我分了两个文件夹来保存我的数据。

在你搜集了足够多只股票的分钟数据后,就能够来到这一步,编写一个数据接口方便调用数据。

数据接口的编写重难点在于股票价格复权的计算。这里同样以贵州茅台(股票代码 600519.XSHG)为例来演示如何进行复权的计算。复权的核心在于下面这个公式:

[公式]

先来看看我们如何提取贵州茅台在一段时间(这里为2015-01-01至2021-09-08)内的后复权分钟数据。(这里千万不能将交易量和交易额一起拿去复权了。只有价格数据需要复权。(我不太确定交易量要不要,要的话我就改一改嘿嘿))

看看代码运行的效果。

那么,等比前复权该如何实现呢?其实很简单,只需要在框定了复权因子的时间后,让复权因子全序列除以最后一个复权因子,即得到前复权因子。将这个前复权因子乘上不复权的价格,即可得到等比前复权的价格数据。

以下是数据接口的全部代码,里面有挺多细节(但挺简单的),我就不再赘述了。

要更新数据库的数据,则是将数据库中的所有数据文件逐个读取进来,取最后一天作为start_date,然后取今天作为end_date。将新数据合并到原有的DataFrame中并保存就完成了数据的更新。数据更新比较耗时,也需要一定的数据量。不过,不论如何,我们来看看数据更新的代码。

在编写完这些代码后,我把这些代码整合成了一个python文件【high_freq_db.py】放在了site-package中,方便以后数据的调用和更新。

亲爱的读者,感谢你读到这里。本文讲述了我搭建我的股票高频数据库的方法。毕竟我的专业是金融而非计算机,难免会有不足的地方,恳请大家在评论区指出。(华工封校了,我也快疯了,所以一天写了两篇东西。。。。)

另外,这个数据库完全搭建起来之后会非常大(行情数据占80GB左右,包含指数和个股ftr文件),维护起来也比较费时费力,就不对外公布了(我也不知道怎么公布【手动捂脸】)。如确有需要,可以和我私信。

再次感谢大家的阅读!

——————————————————

2022年5月27日更新:

有不少小伙伴想要这个数据,目前我已经整理好上传至网络网盘啦。数据和完整代码私聊获取。

获取数据请只用于学习,勿直接用于投资决策!

⑶ quant应该学习哪些python知识

想在量化交易领域发挥所长,掌握以下Python知识是至关重要的。首先,从研究角度出发,了解常用的库如NumPy、Pandas、Matplotlib、SciPy和Scikit-learn,这些都是数据处理、统计分析、绘图和机器学习的基础工具。此外,熟悉金融领域的特定库,如QuantLib,可以帮助进行复杂金融产品的定价和风险评估。

在交易方面,掌握自动化和半自动化下单功能至关重要。这包括使用Python编写策略回测代码,如使用通联优矿、掘金或vn.py框架。利用这些框架可以模拟实盘交易,避免未来函数的使用,确保策略在实盘中的一致性。同时,学习如何与交易柜台接口进行交互,以便直接实盘下单,通常需要使用如掘金、vn.py的vn.lts或vn.ctp接口。

为提高计算效率,了解如何使用Cython进行Python代码的加速,以及如何利用Boost.python或SWIG封装C/C++库,从而在Python中调用这些高性能语言的函数。此外,熟悉Excel COM接口的使用,可以实现从Excel生成每日交易记录和报表。

开发GUI界面是提高交易员实时监控效率的关键,推荐使用PyQt,其界面开发速度远超Qt,且底层为C++,性能无需担忧。对于移动设备监控,开发Web界面也是一个不错的选择。

在数据处理方面,MongoDB因其方便的数据存储和检索特性,成为量化交易中数据管理和分析的首选。使用MongoDB可以高效存储、检索和管理大量历史数据、交易日志以及交易系统参数。

掌握集成开发环境(IDE)如Spyder和WingIDE,能显着提高开发效率。在策略回测阶段,使用Spyder编写测试脚本更为便捷,而在开发大型程序时,WingIDE的智能提示和自动完成功能则更为实用。

了解交易接口的开发,特别是使用vn.py框架,对于期货、股票和期权交易尤为重要。熟悉不同交易类型和策略的实现,开发特定的Python函数和算法,以简化下单功能。

Python语言的扩展性是其一大优势,了解如何利用cython提升计算性能、使用boost.python和swig封装API、调用matlab算法以及通过COM接口与Excel集成,能显着增强量化交易策略的实现能力。

最后,Python在量化交易领域的地位是全面的,能够覆盖从策略研究到交易执行的整个流程。相较于C++、C#、Java等语言,Python在策略开发上的灵活性和易用性更胜一筹,而在交易执行速度上,可能略逊于C++。然而,Python的胶水语言特性使其在整合不同工具和系统方面具有独特优势,能够快速构建高效的量化交易系统。

总之,掌握上述Python知识,结合金融市场的实际需求,能够助力你构建高效、灵活的量化交易策略,实现从研究到实盘交易的无缝衔接。

⑷ 小白入门量化交易:vn.py数据获取和初步回测

经过初步尝试,vn.py在数据获取和回测过程中遇到一些问题,但也带来了新的学习体验。本文将分享我的解决过程和未来计划。

首先,我解决了数据获取的基本问题。原本因为误写交易所简称,导致无法下载股票数据。正确的交易所包括CFFEX、SHFE、SSE和SZSE。对于大量股票的数据下载,目前还未能实现批量处理,需要进一步探索。

数据存入方面,我将vn.py默认的sqlite数据库改为mongodb,以便于可视化和管理。通过mongoDB,我发现数据以字典形式存储,包括时间、价格和成交量等,适合初步的回测操作。然而,成交量数据类型问题导致回测失败,需要清洗数据将其转换为int类型。

尽管使用了vn.py的示例策略进行回测,结果并不理想,这提示我策略选择和参数优化还有待改进。我计划参考vnpy的策略文件,优化策略和参数,但目前面临股票池选择的挑战,因为不可能对所有股票进行回测,需要挑选关键股票。

未来,我计划利用rqdata的API获取股票数据,并将其导入mongoDB。开学后可能时间紧张,但我会抓紧时间解决这个问题,寻找适合的股票池,以便进行更为系统和有针对性的回测。

总的来说,尽管遇到挑战,但这个过程也让我对量化交易有了更深入的理解,期待后续的进展。

⑸ 【手把手教你】搭建自己的量化分析数据库

量化交易的分析根基在于数据,包括股票历史交易数据、上市公司基本面数据、宏观和行业数据等。面对信息流量的持续增长,掌握如何获取、查询和处理数据信息变得不可或缺。对于涉足量化交易的个体而言,对数据库操作的掌握更是基本技能。目前,MySQL、Postgresql、Mongodb、SQLite等开源数据库因其高使用量和受欢迎程度,位列2018-2019年DB-Engines排行榜前十。这几个数据库各有特点和适用场景。本文以Python操作Postgresql数据库为例,借助psycopg2和sqlalchemy实现与pandas dataframe的交互,一步步构建个人量化分析数据库。

首先,安装PostgreSQL。通过其官网下载适合操作系统的版本,按照默认设置完成安装。安装完成后,可以在安装目录中找到pgAdmin4,这是一个图形化工具,用于查看和管理PostgreSQL数据库,其最新版为Web应用程序。

接着,利用Python安装psycopg2和sqlalchemy库。psycopg2是连接PostgreSQL数据库的接口,sqlalchemy则适用于多种数据库,特别是与pandas dataframe的交互更为便捷。通过pip安装这两个库即可。

实践操作中,使用tushare获取股票行情数据并保存至本地PostgreSQL数据库。通过psycopg2和sqlalchemy接口,实现数据的存储和管理。由于数据量庞大,通常分阶段下载,比如先下载特定时间段的数据,后续不断更新。

构建数据查询和可视化函数,用于分析和展示股价变化。比如查询股价日涨幅超过9.5%或跌幅超过-9.5%的个股数据分布,结合选股策略进行数据查询和提取。此外,使用20日均线策略,开发数据查询和可视化函数,对选出的股票进行日K线、20日均线、成交量、买入和卖出信号的可视化分析。

数据库操作涉及众多内容,本文着重介绍使用Python与PostgreSQL数据库的交互方式,逐步搭建个人量化分析数据库。虽然文中使用的数据量仅为百万条左右,使用Excel的csv文件读写速度较快且直观,但随着数据量的增长,建立完善的量化分析系统时,数据库学习变得尤为重要。重要的是,文中所展示的选股方式和股票代码仅作为示例应用,不构成任何投资建议。

对于Python金融量化感兴趣的读者,可以关注Python金融量化领域,通过知识星球获取更多资源,包括量化投资视频资料、公众号文章源码、量化投资分析框架,与博主直接交流,结识圈内朋友。

⑹ 利用Tushare获取股票数据(全面详细,照着敲就可以)

利用Tushare获取股票数据的全面指南


Tushare是一个专为金融分析人员设计的免费Python财经数据接口包,它简化了从数据采集到存储的过程,以pandas DataFrame格式提供高效的数据。通过Python的pandas、NumPy和Matplotlib,分析人员可以方便地进行数据处理和可视化,同时支持Excel和关系型数据库的分析。Tushare覆盖了股票、基金、期货、数字货币等广泛的数据内容,以及基本面数据,如公司财务和基金经理信息,且支持多语言的SDK和RESTful接口,适应不同用户的需求。数据存储选项包括Oracle、MySQL、MongoDB、HDF5和CSV,确保了数据获取的性能和便利性。


安装Tushare依赖环境只需执行pip install tushare,查看版本信息时,导入并打印tushare的__version__属性即可。以下是使用Tushare获取股票数据的步骤:



  1. 导入所需库,如pandas、matplotlib和tushare。

  2. 设置数据格式和日期,使用qfq前复权方式获取股票数据。例如,通过定义get_data函数获取指定股票在特定日期范围内的数据。

  3. 使用acquire_code函数下载股票数据,并保存为CSV文件。用户需要输入股票代码、开始和结束日期。

  4. 运行acquire_code函数,输入股票代码,如600893.SH。

  5. 数据下载完成后,文件将保存在指定文件夹中,通过查看文件夹来获取爬取的数据。

阅读全文

与mongodb股票数据存储相关的资料

热点内容
众生医疗股票行情 浏览:564
为什么不同的机构给出的股票的数据不一样 浏览:586
微信股票老师二维码最新今天 浏览:966
股票大涨指标组合 浏览:503
长时间低换手率的股票 浏览:511
注册制股票如何怎么追涨停板 浏览:443
第三方存管股票账户关系 浏览:134
10转6股票价格会有影响吗 浏览:322
7月3日证券股票集体涨停 浏览:706
中国目前有多少股票上市 浏览:906
股票2020年元旦节时间咋安排 浏览:185
st电机股票 浏览:938
股票资金账户更名 浏览:839
卖完股票资金冻结 浏览:941
汇金科技股票历史交易记录 浏览:807
st是什么股票退市了钱怎么办 浏览:416
股票买卖必备计算软件 浏览:705
如何转股票账户资金 浏览:157
降准和降息对股票市场的影响 浏览:569
601077股票最新价格 浏览:424