掘金量化—Python SDK文档—5.API 介绍(3)

Python SDK文档

5.API介绍

5.8老版本数据函数

以下接口在终端版本号大于 3.17.0.0 的版本不再维护,请切换到新的通用接口

get_fundamentals - 查询基本面数据

获取基本面数据

此函数掘金公版(体验版/专业版/机构版)不支持,请切换到stk_get_fundamentals_balance - 查询资产负债表数据等新接口

函数原型:

get_fundamentals(table, symbols, start_date, end_date, fields=None, filter=None, order_by=None, limit=1000, df=False)

参数:

参数名 类型 说明
table str 表名,只支持单表查询. 具体表名及 fields 字段名及 filter 可过滤的字段参考 财务数据文档
symbols str or list 标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 ['symbol1', 'symbol2'] 这种列表格式,使用时参考symbol ,免费版本只支持单个标的,多标的只返回第一个
start_date str 开始时间, (%Y-%m-%d 格式)
end_date str 结束时间, (%Y-%m-%d 格式)
fields str 查询字段 (必填)
filter str 查询过滤,使用方法参考例 3. 例 4
order_by str or None 排序方式, 默认 NoneTCLOSE 表示按 TCLOSE 升序排序. -TCLOSE 表示按 TCLOSE 降序排序. TCLOSE, -NEGOTIABLEMV 表示按 TCLOSE 升序, NEGOTIABLEMV 降序综合排序
limit int 数量. 默认是1000, 为保护服务器, 单次查询最多返回 40000 条记录
df bool 是否返回 dataframe 格式, 默认 False, 返回 list[dict]

返回值:

key value 类型 说明
symbol str 标的代码
pub_date datetime.datetime 公司发布财报的日期.
end_date datetime.datetime 财报统计的季度的最后一天.
fields dict 相应指定查询 fields 字段的值. 字典 key 值请参考 财务数据文档

示例:

例 1: 取股票代码 SHSE.600000, SZSE.000001, 离 2017-01-01 最近一个交易日的 股票交易财务衍生表的 TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI 字段的值

get_fundamentals(table='trading_derivative_indicator', symbols='SHSE.600000, SZSE.000001', start_date='2017-01-01', end_date='2017-01-01',             fields='TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI', df=True)

输出:

  symbol       pub_date             end_date             NEGOTIABLEMV  PEMRQ    PELFYNPAAEI    PETTMNPAAEI  PELFY    TURNRATE    PETTM    TOTMKTCAP    TCLOSE
SHSE.600000  2016-12-30 00:00:00  2016-12-30 00:00:00     3.3261e+11    6.4605         7.0707         6.6184   6.925       0.0598   6.4746  3.50432e+11     16.21
SZSE.000001  2016-12-30 00:00:00  2016-12-30 00:00:00     1.33144e+11   6.2604         7.1341         6.2644   7.1462      0.2068   6.8399  1.56251e+11      9.1

例 2: 取股票代码 SHSE.600000, SZSE.000001, 指定时间段 2016-01-01 -- 2017-01-01 股票交易财务衍生表 的 TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI 字段的值

get_fundamentals(table='trading_derivative_indicator', symbols='SHSE.600000, SZSE.000001', start_date='2016-01-01', end_date='2017-01-01',
fields='TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI', df=True)

例 3: 取指定股票 SHSE.600000, SHSE.600001, SHSE.600002 离 2017-01-01 最近一个交易日, 且满足条件 PCTTM > 0 and PCTTM < 10 股票交易财务衍生表 的 TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI 字段的值

get_fundamentals(table='trading_derivative_indicator', symbols='SHSE.600000, SHSE.600001, SHSE.600002', start_date='2017-01-01', end_date='2017-01-01', filter='PCTTM > 0 and PCTTM < 10',
fields='TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI', df=True)
# 或者这样写
my_symbols = ['SHSE.600000', 'SHSE.600001', 'SHSE.600002']
get_fundamentals(table='trading_derivative_indicator', start_date='2017-01-01', end_date='2017-01-01', filter='PCTTM > 0 and PCTTM < 10', symbols=my_symbols,
fields='TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI', df=True)

例 4: 取指定股票 SHSE.600000, SZSE.000001 离 2016-01-20 最近一个财报, 同时满足条件 CURFDS > 0 and TOTLIABSHAREQUI > 0 的 资产负债 的数据

get_fundamentals(table='balance_sheet', start_date='2016-01-20', end_date='2016-01-20',
                fields='CURFDS, SETTRESEDEPO, PLAC, TRADFINASSET, ',
                symbols='SHSE.600000, SZSE.000001',
                filter='CURFDS > 0 and TOTLIABSHAREQUI > 0',
                df=True)
# 或者这样写
my_symbols = ['SHSE.600000', 'SZSE.000001']
get_fundamentals(table='balance_sheet',  start_date='2016-01-20', end_date='2016-01-20',
                fields='CURFDS, SETTRESEDEPO, PLAC, TRADFINASSET, ',
                symbols=my_symbols,
                filter='CURFDS > 0 and TOTLIABSHAREQUI > 0',
                df=True)

注意:

1. 当 start_date == end_date 时, 取所举每个股票离 end_date 最近业务日期(交易日期或报告日期) 一条数据,当 start_date < end_date 时, 取指定时间段的数据,当 start_date > end_date 时, 返回空list/空DataFrame

2. 当不指定排序方式时,返回的list/DataFrame以参数pub_date/end_date来排序

3. start_date 和 end_date 中月,日均可以只输入个位数,例:'2010-7-8''2017-7-30'

4. 若输入包含无效标的代码,则返回的list/DataFrame只包含有效标的代码对应的数据

5. 在该函数中,table 参数只支持输入一个表名,若表名输入错误或以'table1,table2'方式输入多个表名,函数返回空list/空DataFrame

6. 若表名输入正确,但查询字段中出现非指定字符串,则程序直接报错

get_fundamentals_n - 查询基本面数据最新 n 条

取指定股票的最近 end_date 的 count 条记录

此函数掘金公版(体验版/专业版/机构版)不支持,请切换到stk_get_fundamentals_balance_pt - 查询资产负债表截面数据等新接口

函数原型:

get_fundamentals_n(table, symbols, end_date, fields=None, filter=None, order_by=None, count=1, df=False)

参数:

参数名 类型 说明
table str 表名,只支持单表查询. 具体表名及 fields 字段名及 filter 可过滤的字段参考 财务数据文档
symbols str 标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 ['symbol1', 'symbol2'] 这种列表格式&
### 使用Python进行量化投资和股票选择 #### 一、基础知识与准备 在现代金融市场中,投资已成为个人和机构追求财富增长的重要手段。为了更好地理解市场并做出明智的投资决策,掌握基本的金融理论和技术至关重要[^2]。 对于希望利用编程技能来辅助投资的人来说,Python 是一种非常受欢迎的语言,因为它拥有强大的数据分析能力和丰富的第三方库支持。通过学习 Python 的基础语法以及如何处理财务数据,可以为后续更复杂的模型构建打下坚实的基础[^3]。 #### 二、获取并预处理股票数据 要开始任何类型的量化分析工作之前,首先需要获得高质量的历史股价记录和其他相关信息。这通常涉及到从互联网上下载CSV文件或将API接口集成到项目里以实时抓取最新行情。常用的数据源包括 Yahoo Finance 和 Tushare 等平台。 ```python import tushare as ts pro = ts.pro_api(&#39;your_token_here&#39;) df = pro.daily(ts_code=&#39;000001.SZ&#39;, start_date=&#39;20230101&#39;, end_date=&#39;20231231&#39;) print(df.head()) ``` 这段代码展示了怎样借助Tushare API 获取特定时间段内的某只个股的日K线图数据[^4]。 #### 三、编写简单的回测框架 当拥有了足够的历史资料之后,则可以根据自己的想法设计相应的买卖逻辑,并将其转化为计算机程序的形式来进行模拟测试——即所谓的“回溯检验”。下面给出了一种基于双均线交叉法则选股策略的例子: ```python def backtest_stock_strategy(stock_code, short_window=5, long_window=60, initial_capital=1e5): df = get_stock_data(stock_code) # 计算两条不同长度周期下的简单移动平均数序列 df[&#39;short_ma&#39;] = df.close.rolling(window=short_window).mean() df[&#39;long_ma&#39;] = df.close.rolling(window=long_window).mean() positions = [] cash_balance = initial_capital for i in range(len(df)): current_price = df.loc[i,&#39;close&#39;] if not positions and df.loc[i,&#39;short_ma&#39;]>df.loc[i,&#39;long_ma&#39;]: shares_to_buy = int(cash_balance / current_price) cost_basis = shares_to_buy * current_price positions.append((i,current_price)) remaining_cash = cash_balance - cost_basis elif positions and df.loc[i,&#39;short_ma&#39;]<df.loc[i,&#39;long_ma&#39;]: purchase_index,purchase_price = positions.pop(-1) proceeds_from_sale = sum([shares*(current_price-purchase_price)for _,purchase_price in positions]) total_profit += proceeds_from_sale cash_balance+=total_profit+remaining_cash final_value = (cash_balance + len(positions)*current_price)/initial_capital*100-100 return f&#39;最终收益率:{final_value:.2f}%&#39; ``` 此函数实现了买入信号发生在短期均线上穿长期均线之时;反之则卖出所持有的全部仓位。它还计算了整个过程中账户价值的变化情况作为评估指标之一。 #### 四、深入研究与实践探索 随着经验积累和个人兴趣的发展,还可以尝试更多高级主题比如机器学习算法的应用或是高频交易系统的搭建等。同时也要关注行业动态及时调整优化现有方案,在不断试错的过程中找到最适合自己的方法论体系[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值