求求各位了,花点时间认真阅读一下文档吧,有很多问题都是文档就能找到答案的。
我这边出售的是淘宝某商家的同款商品,就是那个专业版397元(实现了50多个接口,限制使用设备和使用功能时间),数据中心版3987元(实现了130多个接口,限制使用设备且只有2年使用时间)的那个框架。
我们也不玩虚的,相同的框架,连原来的注册模块都保留了,反编译看的脑壳疼,弄清楚注册码生成原理就行了我们的定价是:
拍下给7天试用,确认收货后发送授权到2099年的激活码
专业版(50+接口实现):50元/每台设备永久授权
数据中心版(130+接口实现):130元/每台设备永久授权
其实也就是大概按一个接口一元的收费
重要说明:文档就在下面,各位务必先看文档觉得有能力部署再购买,购买后只提供程序,不提供任何技术支持服务(简单的,我会的我可以解答,我不会的我可以帮你问ChatGPT),后续也不保证有更新
(你就当没有吧,这东西也没什么好更新的)
本店tushare数据抓取框架是经过资深架构师反复推演设计,架构清晰,高效灵活,简单易用的,对接tushare的数据抓取框架。
框架简洁明了,易于扩展,可每日自动增量同步、可批量抓取历史、可单个接口独立运行,松耦合,高度抽象,扩展接口只需实现接口定义即可,无冗余代码。
可灵活实现程序及和数据库级不同层次对接,易于二次开发和易于和自研项目进行无缝集成。
架构设计如下:

第一步环境准备:安装mysql和python
第二步部署运行:部署框架、运行框架
注1:如果您是mac用户,安装步骤基本相同,以下三个软件,可到对应网站下载安装。
注2:知道你在犹豫要不要装一个对应版本的python,放心吧,多个版本的python是可以共存的。同时,可以使用pycharm的python虚拟环境和本机共用的python环境进行隔离,或者使用anaconda对环境进行隔离。
macos版数据库:
https://dev.mysql.com/downloads/mysql/
https://dev.mysql.com/downloads/file/?id=514404
可以直接在电脑上安装单机版mysql,压缩包中有32位和64位的mysql安装包可直接使用(根据操作系统版本选择安装)。最新版可以到官网下载并安装:https://www.oracle.com/mysql/free/

不一定非要用dbeaver只是举个栗子,你要是技术好的话甚至可以直接用命令行敲sql

下载地址如下:https://www.jetbrains.com/pycharm/download/
同理,技术好的甚至可以用Notepad开发

打开pycharm,选择新建项目,按如下图操作,给你的项目取个名字,例如:tushare2db_pro:

建立好的目录如下:

将压缩包仲的几个目录复制粘贴到这个空目录的根目录下


复制粘贴好之后的样子:

配置好你tushare的token
打开Constant.py文件配置好tushare账户的token
如需高积分token可联系店主购买


安装的东西有点多,耐心等一会儿,或者望着安装程序发发呆也是很好的选择。

看到恭喜恭喜,说明安装成功!

运行框架后,框架会自动建立数据库qtdb_pro,无需手工建立




打开get_EveryDayData_hst.py将str_date(开始日期)和end_date(结束日期)设置为需要抓取数据的日期段,框架会自动运行下列接口的抓取程序自动日期段的所有数据抓取到数据库。

抓取完后,直接到dbeaver中,即可访问

注意:历史数据抓取,建议每次不要抓太多,建议一次抓5年以内的,分个批次逐渐抓下来,这样避免一次抓的等待时间过长,也是避免空间不够什么的意外中断。虽然框架允许你随便折腾,都会给你把数据整理干净,但是你可以省点电嘛。
有些时候,我们只关注某一个品种的数据,比如股票,我们不需要一些不想管的数据,比如财务数据。这时,我们可以将框架中的某些接口注释掉,以提高抓取速度,后期有需要可以打开。注释的方法很简单,只需在【接口列表.py】中注释掉两个地方即可

注释后:


注:tableDict_date中的项不用调整。如需开启接口,打开者两处注释即可。
处于通用性的考虑,部分已实现接口默认进行了注释,如需抓取该接口的数据,可自行取消注释:
比如分钟线tick接口,获取权限后可以自行打开
框架为了避免重复运行,或者运行异常中断,导致本地数据出现不一致的情况,提供了自动化的数据整理功能,主要包含以下两部分。
注意:数据整理功能和机器的速度密切相关,由于数据库在处理大批量数据的调整时比插入和读取慢很多,所以整理处理时间会比较长。可以考虑采用更换固态硬盘和建立数据库索引的方式进行速度提升。
数据整理的处理和选择的日期段时相关的,尽量减小数据整理日跨度,会有效缩短数据处理时间。如暂时无需使用数据整理功能,可在get_DataList.py程序中注释掉相应的处理函数。

也可以在两个主控程序中直接注释钓数据整理 函数:

如需关闭某个接口的去重或缺失补全功能,只需在对应列表中注释掉对应的行即可:

get_DataList.py中这一部分代码提供了框架的去重功能调用。列表tableDict_deal_duplicate_data为去重接口的配置,每一行第一个元素为接口抓取到数据库后的表名,第二个元素为该表的键值(即用这几个字段可以唯一确定一条数据,如果这几个字段相同取值那一定说明数据存在重复),键值用逗号分隔。
这样配置好后,调用框架的deal_duplicate_data方法,框架即可自动开始进行数据去重。
通常增量加载时,去重当日数据速度很快,如大批量去重历史数据可能会比较慢,此时可以先注释钓某些接口,提供运行效率。

如何配置去重功能,先分析数据的键值
这里我们以hq_cashflow_vip这张表为例:



发现原来是f_ann_date 这个字段也是一个关键字,加进键字组合,再查一下重:

发现还是不行




好了,您学会了配置重复键字了吧!
缺失数据补全的用法和重复数据补全相同,只是新增了代码维度的补全功能,以加快某些场景的补全速度,但需实现代码粒度抓取的接口实现。其实大部分情况不会出现缺失数据,需提高效率的情况下,可以注释掉该部分共功能:
框架里已实现大部分常用接口,如:交易日历、证券和基金日线行情和证券信息、龙虎榜等典型接口。框架运行后,会自动抓取这些接口的数据到本地数据,如有需要抓取tushare其他数据接口,可以自行扩展。扩展方法见下文。
拷贝一个同类型接口
比如:扩展一个期权日线行情接口Get_fut_daily_ToDB.py。只需拷贝一个日线行情接口Get_Stock_Daily_ToDB.py,抄抄改改即可扩展出新接口。修改如下几处代码:

复核一下接口调用类型
看一看,复制出来的接口代码的调用方式是否和新接口一致,如果一致即可,比如调用日线行情的接口,股票的和期权的日线,都是按日期抓取数据的,所以一致。

针对性的改一下新接口的特殊的地方,其他通用的地方,自己不用再实现,只用按上图实现接口调用必要的两个接口get_data、write_db即可。
get_data()函数为tushare的调用接口,要改为新接口调用函数。

write_db()函数主要为自动建表是用到的表结构,可自行定义字段类型,也可自定义一部分,其余会默认为text数据类型。Text数据类型不便于sql查询和程序使用,建议定义每个字段的数据类型。

将该接口的名字改为hq_fut_daily,以便于框架在建表和日志记录时加以区分。

在接口调用列表get_DataList.py中登记新增的接口调用信息
以便每日增量数据抓get_EveryDayData.py和历史数据抓取get_HistoryData.py程序,可以自动调用:

需要框架帮你自动去重,就在去重配置列表tableDict_deal_duplicate_data中,参照原接口添加一行配置,不想自动去重就不用加了

希望框架帮你自动分析缺失数据,并自动补全的话,就在tableDict_date_deal_lost_data列表中,参照原接口补充一行配置

值得注意的时,为了提高自动补全的效率,框架提供了两个维度的补全方式,一个时按照日期tableDict_date_deal_lost_data,一个时按照代码tableDict_code_deal_lost_data,如果希望按照代码补全的化,还需实现一个按照代码抓取数据的接口供框架使用,不是实现也可以,对整体运行不影响。

自动补全这块,可根据自己的需要进行使用,普通用户可以考虑只配置常用接口即可。
注意:其中自动建表的接口字段类型说明,可参见tushare的接口文档:
https://tushare.pro/document/2


日志会自动放到d:\tushare2db_log 下,需要调整日志位置,可以到basis\log_man.py下进行修改:

如果抓取到本地的数据量比较大,访问数据库数时会比较慢,框架重整数据时也会变慢,这时就需要建立数据库索引以加快运行速度。
在DBeaver中,在数据表的邮件菜单中选择创建索引:

一般勾选查询使用频繁的主键字段,一般是ts_code和trade_date两个字段,进行索引建立:

单击确定即可建立索引。建立正确的索引后,数据访问效率会提升一个以上数量接。为优化效率,一个数据表上可建立多个索引,但一般不建议超过三个索引:

注意:一般家用机性能有限,不建议下载太大量数据到本地,一般10年左右比较合适。当然土豪家的机器,就另当别论!

tushare账户可到tushare网站免费申请,申请后可用框架免费下载日线行情。
https://tushare.pro/register
框架中部分自带部分接口需2000分以上,才有权限抓取。如抓取报错,可将暂时未开通权限的接口调用即相应的数据整理语句注释掉:
比如:get_Stock_Daily_Basic(db_engine, ts_pro, ts, str_date, end_date) # 行情扩展
没有权限,按如下方式注释掉即可:


通过官方渠道获取积分,需加积分,2000分(200rmb)基本上tushare的接口都有权限了!
tushare的积分权限参见:
https://tushare.pro/document/1?doc_id=290
tushare的积分充值,到如下链接加微信即可:
https://tushare.pro/document/1?doc_id=243
闲鱼直接搜tushare,百来块就有一年5000积分的token了(自己选卖家自己辨别)
如果联系程序上的邮箱,被骗钱了我可不管,记住从哪里买的就找哪里的客服就行了。
专业版(50+接口实现):50元/每台设备永久授权
数据中心版(130+接口实现):130元/每台设备永久授权
由于部分模块为.pyd文件(苹果和Linux为.so文件),开发环境一般回提示红色,不用理睬,正常使用即可:

打开框架里赠送的回测框架实例,在右键菜单中运行该实例,即可开始回测:

一般情况下,回测完成后,在绘图部分会报如下错误,别着急,下面简单修改后即可解决。

改问题是因为画图模块和backtrader的版本不太兼容导致,打开该路径下源码文件进行调整:


修改后locator.py代码长这个样,这样就对了:

接下来,重新运行回测程序,即可看到回测结果图

恭喜你,2021年在茅台上,用双均线策略,赚了13%!
如何查询数据:
第一步:在dbeaver中,右键点击qtdb,选菜单中的新建SQL编辑器:

输入sql语句,单击执行按钮进行查询
比如查询表hq_stock_daily 股票日线行情数据
sql语句为:
select * from hq_stock_daily
如需筛选某个日期段,sql语句为:
SELECT * from hq_stock_daily where trade_date BETWEEN '20220101' and CURRENT_DATE()
或者某个日期的数据:
SELECT * from hq_stock_daily where trade_date = '20220101'
查询指定股票的数据:
SELECT * from hq_stock_daily where ts_code ='000001.SZ'

查出数据可以单击下图按钮进行导出:


Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT.
情况描述
在执行sql:create table 表A as select * from 表B时,发现sql执行后,并未生成新的表,而是提示Statement violates GTID consistency: CREATE TABLE ... SELECT.
问题分析
MySQL5.6及以上的版本,开启了 enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce_gtid_consistency 功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。
解决方法
方法一(推荐):
修改 :SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off;
配置文件中 :ENFORCE_GTID_CONSISTENCY = off;
方法二:
create table 表A as select 表B 的方式会拆分成两部分。
create table 表A like 表B ;
insert into 表A select *from 表B ;
PermissionError: [WinError 5] 拒绝访问。: 'C:\Users\log'
详见:http://www.360doc.com/content/22/0402/09/6194394_1024473533.shtml





