我有一个梦想:每天不用干活,银行账户里每天有钱进账!!!(不要误会,不是说把钱存银行吃利息啊,本金不够,会俄死的。)

量化交易也许是一条实现梦想的路,姑且来学一学。于是乎写下这篇博客,一来是为了记录自己的学习经历;二来是为了备忘,年纪大了,两天不敲键盘就容易忘;三来是为了让走过路过的看官们多多为我指正,本老白在这先行谢过。

万事开头难,经历了两个多月断断续续的Python基础学习,今天找个最简单的下手——利用Baostock下载A股股票代码:

要致富,先配库。安装baostock

pip install baostock

baostock使用query_all_stock(day)函数下载股票代码,参数day为要查询的日期,YYYY-MM-DD格式,可以为空,为空时表示查询当日。若查询日期为非交易日,则得到的数据为空。

导入baostock

import baostock as bs

股票代码数据下载,get_data()方法用于将数据转换为pandas 的DataFrame

df = bs.query_all_stock().get_data()

query_all_stock()下载得到的数据不只包含了上市公司的股票代码,也包括那些各种各样的指数代码,需要对数据进行筛选,剔除掉指数代码,顺便把创业板、中小板和北交所的股票也剔除掉,谁叫咱没钱呢!

df = df[((df['code'] < 'sz.300000') & (df['code'] > 'sh.689000') |(df['code'] < 'sh.688000') & (df['code'] > 'sh.009999'))]

to_list()方法可以把股票代码转换成列表,利于后续程序的调用。

codes = df['code'].to_list()

也可以用pandas的to_sql()把数据写入MySQL数据库,程序只运行一次,以后从数据库调用数据就可以了。

df.to_sql(name, con,if_exists=replace,index=Flase)

name参数为数据表名称,只要事先建好库,表名直接写就行,不用事先建表

con参数为数据库连接对象

if_exists参数为replace时表示如果数据表存在则覆盖写入,为append时表示追加,还有一个值是什么我忘记了,表示如果表存在则不写入。

index参数就是问你要不要写df 的index。

还有些其他的参数,记不住了。

写入数据库的代码如下:

import baostock as bs
import sqlalchemy
import datetimedef get_stock_codes(day=None):"""获取沪深两市的股票代码,剔除掉中小板、创业板、北交所和指数代码,写入MySQL数据库,库名stock_codes,表名codes:param day: 指定日期,“YYYY-MM-DD",默认为空,表示今日。:return: None"""# 登录baostockbs.login()# 获取股票代码df = bs.query_all_stock(day=day).get_data()# 如果数据为空if len(df) == 0:# 把日期向前推,直到数据不为空,即为历史最近交易日delta = 1while len(df) == 0:df = bs.query_all_stock(day=datetime.date.today()-datetime.timedelta(delta)).get_data()delta += 1# 登出baostockbs.logout()# 股票代码筛选codes_df = df[((df['code'] < 'sz.300000') & (df['code'] > 'sh.689000') |(df['code'] < 'sh.688000') & (df['code'] > 'sh.009999'))]# 创建数据库引擎对象engine = sqlalchemy.create_engine("mysql+pymysql://root:123456@localhost:3306")# 如果不存在数据库stock_codes则创建engine.execute("create database if not exists stock_codes")# 连接stock_codes数据库引擎对象db_engine = sqlalchemy.create_engine("mysql+pymysql://root:123456@localhost:3306/stock_codes?charset=utf8")# 写入MySQL数据库codes_df.to_sql('codes', db_engine, if_exists='replace')get_stock_codes()

返回股票代码列表的代码如下:

import baostock as bs
import datetimedef get_stock_codes(day=None):"""获取沪深两市的股票代码,剔除掉中小板、创业板、北交所和指数代码,:param day: 指定日期,“YYYY-MM-DD",默认为空,表示今日。:return: 股票代码列表"""# 登录baostockbs.login()# 获取股票代码df = bs.query_all_stock(day=day).get_data()# 如果数据为空if len(df) == 0:# 把日期向前推,直到数据不为空,即为历史最近交易日delta = 1while len(df) == 0:df = bs.query_all_stock(day=datetime.date.today()-datetime.timedelta(delta)).get_data()delta += 1# 登出baostockbs.logout()# 股票代码筛选codes_df = df[((df['code'] < 'sz.300000') & (df['code'] > 'sh.689000') |(df['code'] < 'sh.688000') & (df['code'] > 'sh.009999'))]return codes_df['code'].to_list()print(get_stock_codes())

Python股票量化学习(1)——股票代码下载相关推荐

  1. Python股票量化学习(2)——股票历史日线数据下载

    利用baostock下在股票历史数据 bs.query_history_k_data_plus(code, fields, start_date, end_date, frequency, adjus ...

  2. python股票量化投资课程 百度云_网易云课堂 Python股票量化投资课程|百度云|天翼云|GD|OD下载...

    目录:/07 Python股票量化投资课程(完结) [6.4G] ┣━━01第一课资料 [0B] ┃ ┗━━视频课程分享资料 ┣━━02第二课资料 [0B] ┃ ┗━━class2 ┣━━03第三课资 ...

  3. 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

    点击:QTYX最新版本使用指南[文字版] 点击:QTYX最新版本使用指南[视频版] 点击: QTYX历史版本更新说明 赠送"回测框架"的目的 为了帮助读者再建立一座从书本知识到实战 ...

  4. python股票量化交易接口是应用到股票上吗?

    python股票量化交易接口是应用到股票上吗?当然可以,而且是任何交易者都可以使用量化交易技术,股票交易数据是很容版易采集的,就是分析起来比权较麻烦,如果题主是职业散户,美股研究社更建议使用一些软件炒 ...

  5. python股票量化有什么特点吗?

    python股票量化交易的特点其实就是通过编写软件程序,并且能够实时监测市场交易情况,并且设定一些条件,一旦当市场交易情况满足这些条件时就会自动执行一些交易策略,比如买入.卖出策略等程序,然后在股票量 ...

  6. python股票量化交易入门到实践_量化资料学习《Python与量化投资从基础到实战》+《量化交易之路用Python做股票量化分析》+《组织与管理研究的实证方法第2版》...

    我们需要利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,重点学习如何高效地利用Python解决投资策略问题,推荐学习<Python与量化投资从基础到实战>等电子资料. ...

  7. python 股票量化盘后分析系统 V0.3

    距离更新这个系统框架过了差不多半个多月了,在此期间学习了点基础知识,决定把这个系统分为三个.py文件,于是得到了如下效果图 这三个文件目前的思路是这样的: main.py 负责总程序的运行 tk_wi ...

  8. python期货量化学习

    一直以来想要学习python去解决期货量化问题,通过数学描述变化的规律,从上海疫情封城开始学习一下python以及量化,在此记录一下: 自学感觉非常艰难呀,尤其是python各项目代码更新频率并不同调 ...

  9. python股票量化交易(1)---K线图、均线与成交量绘制

    远思扬祖宗之德,近思盖父母之愆:上思报国之恩,下思造家之福:外思济人之急,内思闲己之邪. 本文目录 前言 获取股票的数据 绘制K线图 均线图 成交量 前言 都说2020年是牛市的起点,很显然对于数据来 ...

最新文章

  1. 整理记录个人面试问题
  2. 论文推荐 | 2018中国卫星导航年会论文集
  3. Python正则表达式如何进行字符串替换实例
  4. 高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx
  5. substr判断最后一个是不是逗号_考研最后一个月是不是很累?
  6. 修改QtCreator的默认pro工程文件,添加assert.h条件切换
  7. openstack配置mysql_Centos7.4安装openstack(queens)详细安装部署(三)-镜像服务(glance)安装...
  8. c#开发之八---mvc
  9. 【高项】第6章 项目进度管理【知识点精华笔记】
  10. Python链家租房信息爬虫和高德地图展示
  11. 时间 java 时间段_Java 如何判断当前时间是否在指定时间段内
  12. 常见web漏洞修复方法
  13. 乘风破浪程序猿,拒绝原地踏步!
  14. deeplink唤醒app测试软件,短信跳转app-DeepLink
  15. c语言 fgetc函数,C 库函数 – fgetc()
  16. EXCEL表格中如何给奇偶数行填充不同颜色
  17. 通孔焊盘命名规范-002
  18. 【读书笔记】《曾国藩的正面与侧面(三)》
  19. 圆透视变换为椭圆,其缩放比例如何求?
  20. 工具教程第十五讲:如何查询大户持仓地址情况

热门文章

  1. 如何实现Linux下的U盘(USB Mass Storage)驱动
  2. 魔兽延迟最低的服务器,魔兽世界延迟高解决方法
  3. K2P设置为桥接路由器教程
  4. Arction图表控件LightningChart振动分析可以检测什么?
  5. html5在线裁剪,html5 Canvas裁剪图片
  6. mcldownload文件夹_—MCLDownload—文件夹
  7. <JVM上篇:内存与垃圾回收篇>01-JVM与Java体系结构
  8. DataCastle[职位预测竞赛]冠军——我们都爱苍老师
  9. backup archivelog all not backed up;
  10. 一步步教你轻松学关联规则Apriori算法