量化中获取A股交易日信息

该代码示例展示了如何使用akshare库获取最近N个交易日的日历数据,并确定开始和结束日期。通过将当前日期与交易日列表对比,找到N天前的交易日作为起始日期,从而为获取特定期间的股票数据做好准备。

问题背景:

在获取近N日的交易品种数据时,例如想要获取近十天涨停过的股票,我们先要得到这N个交易日的日历数据。而akshare的封装函数ak.tool_trade_date_hist_sina()可以获得一年内所有的交易日信息,但这还不是近N日交易日历,我们还需要进行一些处理即可完成。

工具:akshare

代码


import akshare as ak
import datetime 
from datetime import date
import pandas as pd
import time
# 获得start_date 和 end_date
def get_trade_date(N = 80):
    today = date.today()
    trade_date_df = ak.tool_trade_date_hist_sina()
    trade_date_list = trade_date_df["trade_date"].astype(str).tolist()
    while str(today) not in trade_date_list:  # 如果当前日期不在交易日期列表内,则当前日期天数减一
        today = today - datetime.timedelta(days=1)

    end_date = str(today)[:4]+str(today)[5:7] + str(today)[8:10]

    start_date_index = trade_date_list.index(str(today))- N
    start_date = trade_date_list[start_date_index][:4] + trade_date_list[start_date_index][5:7] + trade_date_list[start_date_index][8:10]
    print("结束时间",start_date)
    print("开始时间",end_date)
    return trade_date_list[start_date_index:start_date_index+N+1]

结果展示:
在这里插入图片描述

<think>嗯,用户想了解如何使用证券宝API获取A量化交易数据。首先,我需要回忆一下之前提到的引用内容,特别是引用[3],里面提到了证券宝(baostock)获取金融行情数据的方法。用户可能已经看过这个引用,但需要更详细的步骤指导。用户的问题可能集中在具体的操作步骤,比如如何安装库、如何调用接口获取日K、周K、月K线数据。另外,用户可能对参数设置不太清楚,比如调整frequency参数来获取不同周期的数据。需要详细说明每个参数的作用,以及示例代码,方便用户直接复制使用。 还要考虑用户可能遇到的常见问题,比如数据权限、是否需要登录、获取数据的频率限制等。引用[4]提到了一些API的登录函数,但证券宝可能不需要复杂的登录流程,这点需要确认。根据引用[3],证券宝的接口可能更简单,直接通过参数调整即可,所以需要强调这一点。另外,用户可能需要知道如何处理返回的数据,比如转换为DataFrame进行分析,或者保存到本地文件。这部分可以给出代码示例,展示数据处理的基本方法。同时,提醒用户注意数据获取的时间限制,比如周线和月线只能在特定交易日获取,避免用户遇到问题。最后,生成的相关问题需要围绕证券宝API的扩展使用,比如历史数据、分钟线、数据清洗等,帮助用户进一步探索。确保回答结构清晰,分步骤说明,并验证代码的正确性,避免语法错误。还要检查LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,虽然这个问题可能涉及代码较多,数学公式较少,但如果有的话要正确应用。</think>### 如何使用证券宝(baostock)API获取A量化交易数据? #### 1. **安装与初始化** 首先通过`pip`安装证券宝库: ```bash pip install baostock ``` 初始化并登录证券宝系统: ```python import baostock as bs # 初始化并登录(无需认证) lg = bs.login() # 返回登录状态对象 if lg.error_code == '0': print("登录成功") else: print(f"登录失败: {lg.error_msg}") ``` #### 2. **获取票基础数据** 获取A全部票代码列表: ```python rs = bs.query_stock_basic() data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) stock_df = pd.DataFrame(data_list, columns=rs.fields) ``` #### 3. **获取历史K线数据** 通过调整参数实现不同周期数据获取: ```python # 获取贵州茅台(600519)日K线 rs = bs.query_history_k_data( code="sh.600519", # 票代码(sh表示沪市,sz表示深市) fields="date,open,high,low,close,volume", # 数据字段 start_date="2023-01-01", end_date="2023-12-31", frequency="d", # d=日线,w=周线,m=月线 adjustflag="3" # 复权类型:3=前复权 ) # 转换为DataFrame data_df = pd.DataFrame(rs.data, columns=rs.fields) ``` #### 4. **参数详解** - **frequency**:数据频率 - 日线:`d`,周线:`w`(需在周最后一个交易日获取)[^3] - 月线:`m`(需在月最后一个交易日获取) - 分钟线:`5/15/30/60` - **adjustflag**:复权方式 - `1`=后复权,`2`=前复权,`3`=不复权 #### 5. **数据存储与关闭连接** ```python data_df.to_csv("600519_2023_daily.csv", index=False) bs.logout() # 关闭连接 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值