IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python股票量化学习(1)——股票代码下载 -> 正文阅读

[Python知识库]Python股票量化学习(1)——股票代码下载

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

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

? ? ? ? 万事开头难,经历了两个多月断断续续的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 datetime



def get_stock_codes(day=None):
    """
    获取沪深两市的股票代码,剔除掉中小板、创业板、北交所和指数代码,
    写入MySQL数据库,库名stock_codes,表名codes
    :param day: 指定日期,“YYYY-MM-DD",默认为空,表示今日。
    :return: None
    """

    # 登录baostock
    bs.login()

    # 获取股票代码
    df = bs.query_all_stock(day=day).get_data()

    # 如果数据为空
    if len(df) == 0:

        # 把日期向前推,直到数据不为空,即为历史最近交易日
        delta = 1
        while len(df) == 0:
            df = bs.query_all_stock(day=datetime.date.today()-datetime.timedelta(delta)).get_data()
            delta += 1

    # 登出baostock
    bs.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 datetime



def get_stock_codes(day=None):
    """
    获取沪深两市的股票代码,剔除掉中小板、创业板、北交所和指数代码,
    :param day: 指定日期,“YYYY-MM-DD",默认为空,表示今日。
    :return: 股票代码列表
    """

    # 登录baostock
    bs.login()

    # 获取股票代码
    df = bs.query_all_stock(day=day).get_data()

    # 如果数据为空
    if len(df) == 0:

        # 把日期向前推,直到数据不为空,即为历史最近交易日
        delta = 1
        while len(df) == 0:
            df = bs.query_all_stock(day=datetime.date.today()-datetime.timedelta(delta)).get_data()
            delta += 1

    # 登出baostock
    bs.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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:07:23  更:2022-09-04 01:08:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:30:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码