RQSDK上手

  • 安装RQSDK套件,RQSDK套件包括
    1. RQData金融数据API
    2. RQAlpha-Plus回测框架
    3. RQFactor因子投研工具
    4. RQOptimizer股票组合优化器
    5. 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)

结果如下:

posted @   superzzh  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示