refactor(factor): 完全重构因子计算框架 - 引入DSL表达式系统
- 删除旧因子框架:移除 base.py、composite.py、data_loader.py、data_spec.py 及所有子模块(momentum、financial、quality、sentiment等) - 新增DSL表达式系统:实现 factor DSL 编译器和翻译器 - dsl.py: 领域特定语言定义 - compiler.py: AST编译与优化 - translator.py: Polars表达式翻译 - api.py: 统一API接口 - 新增数据路由层:data_router.py 实现字段到表的动态路由 - 新增API封装:api_pro_bar.py 提供pro_bar数据接口 - 更新执行引擎:engine.py 适配新的DSL架构 - 重构测试体系:删除旧测试,新增 test_dsl_promotion.py、 test_factor_integration.py、test_pro_bar.py - 清理文档:删除8个过时文档(factor_design、db_sync_guide等)
This commit is contained in:
@@ -345,4 +345,154 @@ df = pro.bak_basic(trade_date='20211012', fields='trade_date,ts_code,name,indust
|
||||
4530 20211012 688255.SH 凯尔达 机械基件 0.0000
|
||||
4531 20211012 688211.SH 中科微至 专用机械 0.0000
|
||||
4532 20211012 605567.SH 春雪食品 食品 0.0000
|
||||
4533 20211012 605566.SH 福莱蒽特 染料涂料 0.0000
|
||||
4533 20211012 605566.SH 福莱蒽特 染料涂料 0.0000
|
||||
|
||||
|
||||
通用行情接口
|
||||
接口名称:pro_bar,本接口是集成开发接口,部分指标是现用现算
|
||||
更新时间:股票和指数通常在15点~17点之间,数字货币实时更新,具体请参考各接口文档明细。
|
||||
描述:目前整合了股票(未复权、前复权、后复权)、指数、数字货币、ETF基金、期货、期权的行情数据,未来还将整合包括外汇在内的所有交易行情数据,同时提供分钟数据。不同数据对应不同的积分要求,具体请参阅每类数据的文档说明。
|
||||
其它:由于本接口是集成接口,在SDK层做了一些逻辑处理,目前暂时没法用http的方式调取通用行情接口。用户可以访问Tushare的Github,查看源代码完成类似功能。
|
||||
|
||||
输入参数
|
||||
|
||||
名称 类型 必选 描述
|
||||
ts_code str Y 证券代码,不支持多值输入,多值输入获取结果会有重复记录
|
||||
start_date str N 开始日期 (日线格式:YYYYMMDD,提取分钟数据请用2019-09-01 09:00:00这种格式)
|
||||
end_date str N 结束日期 (日线格式:YYYYMMDD)
|
||||
asset str Y 资产类别:E股票 I沪深指数 C数字货币 FT期货 FD基金 O期权 CB可转债(v1.2.39),默认E
|
||||
adj str N 复权类型(只针对股票):None未复权 qfq前复权 hfq后复权 , 默认None,目前只支持日线复权,同时复权机制是根据设定的end_date参数动态复权,采用分红再投模式,具体请参考常见问题列表里的说明。
|
||||
freq str Y 数据频度 :支持分钟(min)/日(D)/周(W)/月(M)K线,其中1min表示1分钟(类推1/5/15/30/60分钟) ,默认D。对于分钟数据有600积分用户可以试用(请求2次),正式权限可以参考权限列表说明 ,使用方法请参考股票分钟使用方法。
|
||||
ma list N 均线,支持任意合理int数值。注:均线是动态计算,要设置一定时间范围才能获得相应的均线,比如5日均线,开始和结束日期参数跨度必须要超过5日。目前只支持单一个股票提取均线,即需要输入ts_code参数。e.g: ma_5表示5日均价,ma_v_5表示5日均量
|
||||
factors list N 股票因子(asset='E'有效)支持 tor换手率 vr量比
|
||||
adjfactor str N 复权因子,在复权数据时,如果此参数为True,返回的数据中则带复权因子,默认为False。 该功能从1.2.33版本开始生效
|
||||
|
||||
输出指标
|
||||
|
||||
具体输出的数据指标可参考各行情具体指标:
|
||||
|
||||
股票Daily:https://tushare.pro/document/2?doc_id=27
|
||||
(内容如下:A股日线行情
|
||||
接口:daily,可以通过数据工具调试和查看数据
|
||||
数据说明:交易日每天15点~16点之间入库。本接口是未复权行情,停牌期间不提供数据
|
||||
调取说明:基础积分每分钟内可调取500次,每次6000条数据,一次请求相当于提取一个股票23年历史
|
||||
描述:获取股票行情数据,或通过通用行情接口获取数据,包含了前后复权数据
|
||||
|
||||
输入参数
|
||||
|
||||
名称 类型 必选 描述
|
||||
ts_code str N 股票代码(支持多个股票同时提取,逗号分隔)
|
||||
trade_date str N 交易日期(YYYYMMDD)
|
||||
start_date str N 开始日期(YYYYMMDD)
|
||||
end_date str N 结束日期(YYYYMMDD)
|
||||
注:日期都填YYYYMMDD格式,比如20181010
|
||||
|
||||
输出参数
|
||||
|
||||
名称 类型 描述
|
||||
ts_code str 股票代码
|
||||
trade_date str 交易日期
|
||||
open float 开盘价
|
||||
high float 最高价
|
||||
low float 最低价
|
||||
close float 收盘价
|
||||
pre_close float 昨收价【除权价】
|
||||
change float 涨跌额
|
||||
pct_chg float 涨跌幅 【基于除权后的昨收计算的涨跌幅:(今收-除权昨收)/除权昨收 】
|
||||
vol float 成交量 (手)
|
||||
amount float 成交额 (千元)
|
||||
接口示例
|
||||
|
||||
pro = ts.pro_api()
|
||||
|
||||
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
|
||||
|
||||
#多个股票
|
||||
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20180701', end_date='20180718')
|
||||
或者
|
||||
|
||||
df = pro.query('daily', ts_code='000001.SZ', start_date='20180701', end_date='20180718')
|
||||
也可以通过日期取历史某一天的全部历史
|
||||
|
||||
df = pro.daily(trade_date='20180810')
|
||||
数据样例
|
||||
|
||||
ts_code trade_date open high low close pre_close change pct_chg vol amount
|
||||
0 000001.SZ 20180718 8.75 8.85 8.69 8.70 8.72 -0.02 -0.23 525152.77 460697.377
|
||||
1 000001.SZ 20180717 8.74 8.75 8.66 8.72 8.73 -0.01 -0.11 375356.33 326396.994
|
||||
2 000001.SZ 20180716 8.85 8.90 8.69 8.73 8.88 -0.15 -1.69 689845.58 603427.713
|
||||
3 000001.SZ 20180713 8.92 8.94 8.82 8.88 8.88 0.00 0.00 603378.21 535401.175
|
||||
4 000001.SZ 20180712 8.60 8.97 8.58 8.88 8.64 0.24 2.78 1140492.31 1008658.828
|
||||
5 000001.SZ 20180711 8.76 8.83 8.68 8.78 8.98 -0.20 -2.23 851296.70 744765.824
|
||||
6 000001.SZ 20180710 9.02 9.02 8.89 8.98 9.03 -0.05 -0.55 896862.02 803038.965
|
||||
7 000001.SZ 20180709 8.69 9.03 8.68 9.03 8.66 0.37 4.27 1409954.60 1255007.609
|
||||
8 000001.SZ 20180706 8.61 8.78 8.45 8.66 8.60 0.06 0.70 988282.69 852071.526
|
||||
9 000001.SZ 20180705 8.62 8.73 8.55 8.60 8.61 -0.01 -0.12 835768.77 722169.579)
|
||||
|
||||
基金Daily:https://tushare.pro/document/2?doc_id=127
|
||||
|
||||
期货Daily:https://tushare.pro/document/2?doc_id=138
|
||||
|
||||
期权Daily:https://tushare.pro/document/2?doc_id=159
|
||||
|
||||
指数Daily:https://tushare.pro/document/2?doc_id=95
|
||||
|
||||
接口用例
|
||||
|
||||
|
||||
#取000001的前复权行情
|
||||
df = ts.pro_bar(ts_code='000001.SZ', adj='qfq', start_date='20180101', end_date='20181011')
|
||||
|
||||
ts_code trade_date open high low close \
|
||||
trade_date
|
||||
20181011 000001.SZ 20181011 1085.71 1097.59 1047.90 1065.19
|
||||
20181010 000001.SZ 20181010 1138.65 1151.61 1121.36 1128.92
|
||||
20181009 000001.SZ 20181009 1130.00 1155.93 1122.44 1140.81
|
||||
20181008 000001.SZ 20181008 1155.93 1165.65 1128.92 1128.92
|
||||
20180928 000001.SZ 20180928 1164.57 1217.51 1164.57 1193.74
|
||||
|
||||
|
||||
|
||||
#取上证指数行情数据
|
||||
|
||||
df = ts.pro_bar(ts_code='000001.SH', asset='I', start_date='20180101', end_date='20181011')
|
||||
|
||||
In [10]: df.head()
|
||||
Out[10]:
|
||||
ts_code trade_date close open high low \
|
||||
0 000001.SH 20181011 2583.4575 2643.0740 2661.2859 2560.3164
|
||||
1 000001.SH 20181010 2725.8367 2723.7242 2743.5480 2703.0626
|
||||
2 000001.SH 20181009 2721.0130 2713.7319 2734.3142 2711.1971
|
||||
3 000001.SH 20181008 2716.5104 2768.2075 2771.9384 2710.1781
|
||||
4 000001.SH 20180928 2821.3501 2794.2644 2821.7553 2791.8363
|
||||
|
||||
pre_close change pct_chg vol amount
|
||||
0 2725.8367 -142.3792 -5.2233 197150702.0 170057762.5
|
||||
1 2721.0130 4.8237 0.1773 113485736.0 111312455.3
|
||||
2 2716.5104 4.5026 0.1657 116771899.0 110292457.8
|
||||
3 2821.3501 -104.8397 -3.7159 149501388.0 141531551.8
|
||||
4 2791.7748 29.5753 1.0594 134290456.0 125369989.4
|
||||
|
||||
|
||||
|
||||
#均线
|
||||
|
||||
df = ts.pro_bar(ts_code='000001.SZ', start_date='20180101', end_date='20181011', ma=[5, 20, 50])
|
||||
注:Tushare pro_bar接口的均价和均量数据是动态计算,想要获取某个时间段的均线,必须要设置start_date日期大于最大均线的日期数,然后自行截取想要日期段。例如,想要获取20190801开始的3日均线,必须设置start_date='20190729',然后剔除20190801之前的日期记录。
|
||||
|
||||
|
||||
|
||||
|
||||
#换手率tor,量比vr
|
||||
|
||||
df = ts.pro_bar(ts_code='000001.SZ', start_date='20180101', end_date='20181011', factors=['tor', 'vr'])
|
||||
|
||||
|
||||
说明
|
||||
|
||||
对于pro_api参数,如果在一开始就通过 ts.set_token('xxxx') 设置过token的情况,这个参数就不是必需的。
|
||||
|
||||
例如:
|
||||
|
||||
|
||||
df = ts.pro_bar(ts_code='000001.SH', asset='I', start_date='20180101', end_date='20181011')
|
||||
Reference in New Issue
Block a user