RQSDK上手
- 安装RQSDK套件,RQSDK套件包括
- RQData金融数据API
- RQAlpha-Plus回测框架
- RQFactor因子投研工具
- RQOptimizer股票组合优化器
- RQPAttr绩效归因工具
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rqsdk
- 配置许可证
rqsdk license
- 安装特定产品
rqsdk install <安装代码>
注意:在安装某个产品时,如果上表中已说明组件依赖关系,则其所依赖的组建都会被同时安装上。例如运行了上述的命令安装了 RQAlpha Plus,那么 RQFactor 和 RQOptimizer 也会同时被装上。
- 下载数据
rqsdk download-data --sample -d <目标路径>
目前这里下载的样例数据包不符合最新的数据格式,需要更新数据包。
-
更新数据
- 更新基础日线
rqsdk update-data --base -d <目标路径>
- 更新分钟线
## 更新某几个合约的分钟线 rqsdk update-data --minbar 000001.XSHE --minbar 000002.XSHE --minbar IF2006 ## 更新某个期货品种的分钟线 rqsdk update-data --minbar RB ## 更新某个资产的分钟线,耗时较长,可能会突破流量限制,不建议这样更新 rqsdk update-data --minbar futures ## 更新某个合约分钟线的同时也更新日线 rqsdk update-data --base --minbar 000001.XSHE ## 更新某个合约的分钟数据的同时也更新该合约的相关衍生品数据 rqsdk update-data --minbar M1905 --with-derivatives
- 更新 tick
## 更新合约tick数据使用方式和更新分钟线类似 rqsdk update-data --tick M1905
-
在bundle数据包中,数据划分如下:
-
HDF5文件查看方法
- 基础数据(日线)
以股票日线数据为例,它在bundle文件夹下stocks.h5文件里。按照合约代码和日期检索。
import h5py import pandas as pd import numpy as np file_path = r"F:\RQData\bundle\stocks.h5" h5 = h5py.File(file_path,"r") order_book_id = "000401.XSHE" # 查询某个合约 df = pandas.DataFrame(h5[order_book_id][()]) # 查询具体日期 df[df['datetime']==np.int64('20051130000000')]
datetime open close high low prev_close limit_up limit_down volume total_turnover 219 2.00511e+13 2.92 2.97 2.97 2.91 2.93 3.22 2.64 864041 2.54985e+06 查看h5文件的keys的方法:
h5.keys()
若查看股票分钟线数据,它是每个合约单独一个文件,例如"..\bundle\h5\equities\000001.XSHE.h5"。
import h5py import pandas as pd import numpy as np file_path = r"F:\RQData\h5\equities\000001.XSHE.h5" h5 = h5py.File(file_path,"r") df = pandas.DataFrame(h5['data'][()]) df.head()
datetime open high low close volume total_turnover 0 2.00501e+13 6.59 6.59 6.57 6.57 17700 116552 1 2.00501e+13 6.57 6.57 6.56 6.56 16000 105098 2 2.00501e+13 6.56 6.56 6.55 6.56 10300 67473 3 2.00501e+13 6.56 6.56 6.54 6.56 3100 20287 4 2.00501e+13 6.56 6.56 6.56 6.56 4800 31444 5 2.00501e+13 6.56 6.56 6.51 6.55 8500 55450 6 2.00501e+13 6.5 6.54 6.5 6.5 13800 89783 7 2.00501e+13 6.5 6.5 6.48 6.5 7800 50690 8 2.00501e+13 6.48 6.5 6.46 6.5 4500 29152 9 2.00501e+13 6.5 6.53 6.5 6.53 3400 22148 -
回测
以下是一个简单的MACD策略:
import talib
def init(context):
context.stock = "000001.XSHE"
context.SHORTPERIOD = 12
context.LONGPERIOD = 26
context.SMOOTHPERIOD = 9
context.OBSERVATION = 100
def handle_bar(context, bar_dict):
prices = history_bars(context.stock, context.OBSERVATION, '1d', 'close')
macd, macd_signal, _ = talib.MACD(
prices, context.SHORTPERIOD, context.LONGPERIOD, context.SMOOTHPERIOD
)
if macd[-1] > macd_signal[-1] and macd[-2] < macd_signal[-2]:
order_target_percent(context.stock, 1)
if macd[-1] < macd_signal[-1] and macd[-2] > macd_signal[-2]:
if get_position(context.stock).quantity > 0:
order_target_percent(context.stock, 0)
plot('macd', macd[-1])
plot('macd_signal', macd_signal[-1])
RQAlphaPlus 提供了函数入口以供在其他脚本中调用运行:
config = {
"base": {
"data_bundle_path": r"D:\RQData\bundle",
"accounts": {
"STOCK": 100000,
},
"start_date": "20190101",
"end_date": "20191231",
},
"mod": {
"sys_analyser": {
"plot": True,
"benchmark": "000300.XSHG",
'plot_config': {
'open_close_points': True,
},
}
}
}
if __name__ == "__main__":
from rqalpha_plus import run_func
run_func(config=config, init=init, handle_bar=handle_bar)
结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?