15天搭建ETF量化交易系统Day13—入手MySQL搭建数据库


24773bf131533992fa805a54823cf3f5.png

搭建过程

5e9c7b5ce81f7f42c7cb1b0f53da9f0f.png

每个交易者都应该形成一套自己的交易系统。

 
 

很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。

授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我们决定推出这个主题系列。

这个系列中,我们用Python从0开始一步步搭建出一套ETF量化交易系统(选择ETF标的是因为对于普通交易者来说,ETF相对于选强势股难度要小,而且没有退市风险)。大家可以跟随着我们的实现路径来一起学习,从过程中掌握方法。

掌握了方法之后,你可以换成期货系统、比特币系统、美股系统,然后在实战中不断去完善自己的系统了。

搭建一套ETF量化交易系统涉及多个模块和组件的协同工作,包括数据源模块、量化策略模块、可视化模块、数据库模块、回测评估模块、自动交易模块等等。

DAY1链接如下:15天搭建ETF量化交易系统Day1—数据源模块
DAY2链接如下:15天搭建ETF量化交易系统Day2—图形显示模块
DAY3链接如下:15天搭建ETF量化交易系统Day3—上手经典回测框架
DAY4链接如下:15天搭建ETF量化交易系统Day4—玩转海龟交易策略
DAY5链接如下:15天搭建ETF量化交易系统Day5—打造实盘量化机器人
DAY6链接如下:15天搭建ETF量化交易系统Day6—打通同花顺自动交易
DAY7链接如下:15天搭建ETF量化交易系统Day7—全自动化交易系统
DAY8链接如下:15天搭建ETF量化交易系统Day8—强化自动交易模块
DAY9链接如下:15天搭建ETF量化交易系统Day9—玩大A必学网格策略

DAY10链接如下:15天搭建ETF量化交易系统Day10—借用网格思想做仓位管理

DAY11链接如下:15天搭建ETF量化交易系统Day11—miniQMT自动交易真香!

DAY12链接如下:15天搭建ETF量化交易系统Day12—雏形系统关键代码讲解!

数据是量化交易的源头,如何高效地管理大量数据是量化交易分析中非常关键的环节。数据库就是最佳的解决方案。

通过API接口获取到股票行情数据之后,我们可以存入到数据库之中,这样下次调用的时候只需要从本地数据库中获取即可。
目前流行的数据库有Oracle、MySQL、MongoDB、Redis、SQLite……关于数据库的选型通常取决于性能、数据完整性以及应用方面的需求。每个数据库都有它的特点和最适合的应用场合。
如果追求更全面的功能、更强大的性能,特别在并发处理上要求高效的话,MySQL无疑是所有大型数据库中最为流行的一个。

接下来我们就来介绍下如何在本地搭建MySQL数据库
 
 
 
 

8cddfae59e21f967e41a15dec8f7d400.png

安装MySQL

7d9c17e7e45ea83d232d864ff871715e.png

 
 
首先去官网http://www.mysql.com下载MySQL。点击Downloads—>Community,选择MySQL Community Server。



选择对应的安装文件后开始下载。下载完成后,打开安装包,开始安装MySQL。


选择需要的版本:


需要安装下依赖的Visual C++



然后按以下的步骤一步步操作即可。




输入账户和密码:





到此为止,MySQL就成功地安装在你的本地电脑上了。
 
 

59179e4b28aeb0ae719e4101dd407b6f.png

一个基础的例程

5a032c47a3a05cfddf036b4651ec0282.png

 
 
 
 

接下来用一个简单的例程使用下MySQL。

使用Python操作MySQL可以安装pymysql这个库。

pip install pymysql

使用pymysql打开数据库连接代码如下,其中host为localhost,port为3306

self.conn = pymysql.connect(host=host, port=self.port, db=self.db, user=self.user, password=self.password)

如果在打开MySQL时出现报错:

RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

原因缺少了cryptography库,安装一下即可。

pip3 install cryptography -i https://pypi.douban.com/simple

获得一个可以执行SQL语句的光标对象:

self.cursor = self.conn.cursor()

执行SQL语句,比如sql是"SELECT * FROM stock",即查看stock表中全部内容。

self.cursor.execute(sql)
self.conn.commit()

关闭数据库连接如下:

self.conn.close()

如果我们处理的是Dataframe数据的话,那么保存到数据库时可以直接使用to_sql。需要注意的一点是使用to_sql,只能使用sqlalchemy库。代码如下所示:

from sqlalchemy import create_engine
conn = create_engine("mysql+pymysql://root:yuanxiao@127.0.0.1:3306/quanttrader?charset=utf8")
df = ak.fund_etf_hist_min_em(symbol='510050', period="60", adjust="")
df.to_sql(name='stock', con=conn, if_exists='append', index=False, index_label=False)

写入的数据格式如下所示:

写入数据库数据:
                 时间   开盘    收盘   最高    最低   涨跌幅   涨跌额   成交量    成交额   振幅  换手率
0  2024-06-28 10:30:00  2.428  2.447  2.448  2.426  0.53  0.013  2733762  667077979.0  0.90  0.52
1  2024-06-28 11:30:00  2.447  2.446  2.452  2.440 -0.04 -0.001  1505936  368450104.0  0.49  0.29
2  2024-06-28 14:00:00  2.446  2.444  2.453  2.443 -0.08 -0.002   960916  235222793.0  0.41  0.18
3  2024-06-28 15:00:00  2.445  2.441  2.446  2.436 -0.12 -0.003  2228945  544035907.0  0.41  0.42
4  2024-07-01 10:30:00  2.440  2.434  2.447  2.432 -0.29 -0.007  1857474  452823648.0  0.61  0.35
5  2024-07-01 11:30:00  2.434  2.443  2.448  2.433  0.37  0.009  2088655  509597725.0  0.62  0.40

然后我们从数据库中读取写入的数据,验证是否写入成功。我们可以使用 fetchone() 方法获取单条数据。

result = cursor.fetchone()

读取的数据格式如下所示:

('2024-06-28 10:30:00', 2.428, 2.447, 2.448, 2.426, 0.53, 0.013, 2733762, 667077979.0, 0.9, 0.52)

b0b8a95dcc3299f6624e8b04156f212f.png

总结

bf0d3cd5b01d9f21b3eeba5fb1c9c6a4.png

我们已经在本地搭建了MySQL,接下来介绍MySQL作为股票量化数据库的操作方法。比如

“如何为每个股票在MySQL中创建表?”

“每天获取的股票数据怎么存入到MySQL数据库中?”

“如何从MySQL中取出我们想要的股票数据呢?”

……

接下来期待为大家解锁新的技能!

说明

此系列为连载专栏,完整代码会上传知识星球《玩转股票量化交易》!作为会员们的学习资料。

想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!

非星球会员需要的话,需要单独联系我购买!

知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览

98eea3ddb9d77c4a0afe1486869b2d90.jpeg

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值