掘金量化Python量化交易实战王晓华-程序6-1
Python量化交易实战王晓华-程序6-1更新
·
# 导入必要库
from gm.api import * # 掘金量化API库
import datetime # 时间处理库
# 设置掘金量化平台的访问令牌(需替换为实际Token)
set_token("xxxx")
# 获取当前日期和时间,分割成日期和时间两部分
current_date, current_time = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')).split(" ")
# --------------------- 核心参数定义 ---------------------
# 指数代码(此处为上证50指数,格式:交易所.指数代码)
index = 'SHSE.000016'
# --------------------- 数据获取逻辑 ---------------------
# 获取指数成分股数据
# 参数说明:
# - index: 指数代码(字符串类型,如"SHSE.000016")
# - trade_date: 查询日期(字符串类型,需为有效交易日)
history_data = stk_get_index_constituents(index=index, trade_date=current_date)
# --------------------- 成分股代码提取 ---------------------
try:
# 从返回的DataFrame中提取成分股代码列表
# 函数返回的DataFrame结构示例:
# | index | symbol | weight | trade_date | ...(其他列)|
# |--------------|--------------|--------|-------------|--------------|
# | SHSE.000016 | SHSE.600519 | 0.05 | 2025-02-13 | ... |
symbol_list = history_data["symbol"].tolist() # 提取"symbol"列转为列表
except KeyError:
# 捕获列名错误(若API返回结构变化)
raise ValueError("DataFrame结构异常:缺少'symbol'列,请检查API文档")
# 检查成分股列表是否为空(避免后续接口报错)
if not symbol_list:
raise ValueError("成分股代码列表为空,可能原因:无数据/日期无效/指数代码错误")
# --------------------- 财务数据获取 ---------------------
# 获取成分股的财务衍生指标
# 参数说明:
# - symbols: 股票代码列表(格式:["SHSE.600519", "SZSE.000001", ...])
# - fields: 查询字段(此处为"oper_prof_yoy",表示营业利润同比增长率)
# - date: 财务数据截止日期(通常与成分股日期一致)
# - df: 返回DataFrame格式(True)而非dict格式
df = stk_get_finance_deriv_pt(
symbols=symbol_list,
fields='oper_prof_yoy',
date=current_date,
df=True
)
# 打印前5行数据(示例输出):
# | symbol | oper_prof_yoy | date |
# |--------------|---------------|------------|
# | SHSE.600519 | 15.23 | 2025-02-13 |
print(df.head(5))
截止2025/2/16日,在原程序上修改的内容如下:
- get_history_constituents函数已经弃用,替换为stk_get_index_constituents
- start_date已经替换为trade_date
- stk_get_index_constituents返回的DataFrame结构为
| index | symbol | weight | trade_date | …(其他列)|
| SHSE.000016 | SHSE.600519 | 0.05 | 2025-02-13 | … | - get_fundamentals _n替换为stk_get_finance_deriv_pt
- 增长率NPGRT替换为oper_prof_yoy营业利润同比增长率
程序输出结果为:

更多推荐


所有评论(0)