1. 在JoinQuant研究环境中研究
获取平台支持的所有股票数据
调用方法
get_all_securities(types=['stock'], date=None)
参数
types:默认为stock,这里请在使用时注意防止未来函数。
date: 日期, 一个字符串或者 [datetime.datetime]/[datetime.date] 对象, 用于获取某日期还在上市的股票信息. 默认值为 None, 表示获取所有日期的股票信息
返回
display_name # 中文名称
name # 缩写简称
start_date # 上市日期
end_date # 退市日期,如果没有退市则为2200-01-01
type # 类型,stock(股票)
#将所有股票列表转换成数组
stocks = list(get_all_securities(['stock']).index)
#获得2015年10月10日还在上市的所有股票列表
df = get_all_securities(date='2023-03-17')
print(stocks)
df
2. 获取历史数据
get_price(security, start_date=None, end_date=None, frequency='daily', fields=None, skip_paused=False, fq='pre', count=None, panel=True, fill_paused=True)
获取一支或者多只股票的行情数据, 按天或者按分钟,这里在使用时注意 end_date 的设置, 传入的值不要大于context.current_dt,否则会引入未来函数。
关于停牌: 因为此API可以获取多只股票的数据, 可能有的股票停牌有的没有, 为了保持时间轴的一致, 我们默认没有跳过停牌的日期, 停牌时使用停牌前的数据填充(请看 SecurityUnitData 的 paused 属性). 如想跳过, 请使用 skip_paused=True 参数, 注意当 panel=True 且获取多标的时不支持(panel结构需要索引对齐)
参数:
- security: 一支股票代码或者一个股票代码的list
- count: 与 start_date 二选一,不可同时使用. 数量, 返回的结果集的行数, 即表示获取 end_date 之前几个 frequency 的数据
- start_date: 与 count 二选一,不可同时使用. 字符串或者 datetime.datetime/datetime.date 对象, 开始时间.
如果 count 和 start_date 参数都没有, 则 start_date 生效, 值是 '2015-01-01'. 注意:
当取分钟数据时, 时间可以精确到分钟, 比如: 传入 datetime.datetime(2015, 1, 1, 10, 0, 0)
或者 '2015-01-01 10:00:00'
当取分钟数据时, 如果只传入日期, 则日内时间是当日的 00:00:00. 当取天数据时, 传入的日内时间会被忽略 -
end_date: 格式同上, 结束时间, 默认是'2015-12-31', 包含此日期. 注意: 当取分钟数据时, 如果 end_date 只有日期, 则日内时间等同于 00:00:00, 所以返回的数据是不包括 end_date 这一天的.
-
frequency: 单位时间长度, 几天或者几分钟, 现在支持'Xd','Xm', 'daily'(等同于'1d'), 'minute'(等同于'1m'), X是一个正整数, 分别表示X天和X分钟(不论是按天还是按分钟回测都能拿到这两种单位的数据), 注意, 当X > 1时, fields只支持['open', 'close', 'high', 'low', '