命令行运行

在命令行模式中,我们预先定义了常用的参数作为命令行的 option,您可以直接在控制台输入参数来配置 RQAlpha,但并不是所有的参数都可以通过命令行来配置,如果有一些特殊的参数需要配置,请结合其他方式来配置您的策略。当然您也可以扩展命令行,来实现您指定的命令行 option 选项。

命令行参数

参数名缩写参数名全称说明
-d- - data-bundle-path数据源所存储的文件路径
-f- - strategy-file启动的策略文件路径
-s- - start-date回测起始日期
-e- - end-date回测结束日期(如果是实盘,则忽略该配置)
-bm- - benchmarkBenchmark,如果不设置,默认没有基准参照
-mm- - margin-multiplier设置保证金乘数,默认为1
-a- - account设置账户类型及起始资金,比如股票期货混合策略,起始资金分别为10000, 20000 —account stock 10000 —account future 20000
-fq- - frequency目前支持 1d (日线回测) 和 1m (分钟线回测),如果要进行分钟线,请注意是否拥有对应的数据源,目前开源版本是不提供对应的数据源的
-rt- - run-type运行类型,b 为回测,p 为模拟交易, r 为实盘交易
N/A- - resume在模拟交易和实盘交易中,RQAlpha支持策略的pause && resume,该选项表示开启 resume 功能
-l- - log-level选择日志的输出等级,有 verbose | code:info | warning | error 等选项,您可以通过设置 verbose 来查看最详细的日志,或者设置 error 只查看错误级别的日志输出
N/A- - locale选择语言, 支持 en | cn
N/A- - disable-user-system-log关闭用户策略产生的系统日志(比如订单未成交等提示)
N/A- - enable-profiler启动策略逐行性能分析,启动后,在回测结束,会打印策略的运行性能分析报告,可以看到每一行消耗的时间
N/A- - config设置配置文件路径
-mc- - mod-config配置 mod ,支持多个。-mc funcat_api.enabled True 就可以启动一个 mod

传递 Mod 参数

对于 mod 的参数传递,可以使用 -mc 传递 mod 设置。

  • -mc sys_stock_realtime.enabled True 启动 sys_stock_realtime 这个 mod。
  • -mc sys_stock_realtime.fps 60 设置 sys_stock_realtime 的 fps 参数为 60。
  1. rqalpha run -rt p -fq 1m -f strategy.py --account stock 100000 -mc sys_stock_realtime.enabled True -mc sys_stock_realtime.fps 60

系统内置 Mod Option扩展

系统内置 Mod 也提供了启动参数的扩展,当您开启了对应的 Mod 时,即可使用:

参数名缩写参数名全称说明
N/A- - report[sysanalyser]保存交易详情
-o- - output-file[sys_analyser]指定回测结束时将回测数据输出到指定文件中
-p- - plot[sys_analyser]在回测结束后,查看图形化的收益曲线
N/A- - no-plot[sys_analyser]在回测结束后,不查看图形化的收益曲线
N/A- - plot-save[sys_analyser]将plot的收益图以指定文件路径保存
N/A- - progress[sys_progress]开启命令行显示回测进度条
N/A- - no-progress[sys_progress]关闭命令行查看回测进度
N/A- - short-stock[sys_risk]允许股票卖空
N/A- - no-short-stock[sys_risk]不允许股票卖空
N/A- - signal[sys_simulation]开启信号模式,不进行撮合,直接成交
-sp- - slippage[sys_simulation]设置滑点
-cm- - commission-multiplier[sys_simulation]设置手续费乘数,默认为1
-me- - match-engine[sys_simulation]启用的回测引擎,目前支持 current_bar (当前Bar收盘价撮合) 和 next_bar (下一个Bar开盘价撮合)
-r- -_ rid[sys_simulation]可以指定回测的唯一ID,用户区分多次回测的结果

通过 Mod 自定义扩展命令行参数

RQAlpha 非常灵活,您可以在您的 Mod 中扩展命令行,我们以 sys_analyser Mod 添加自定义option —plot 来实现展示收益图为例,来介绍以下如何扩展您自己的命令行参数。

注解

rqalphamodsys_analyser 对应源码请访问 [这里](https://github.com/ricequant/rqalpha/blob/master/rqalpha/mod/rqalpha_mod_sys_analyser/__init.py) 进行查看。

RQAlpha 使用 click 来实现命令行参数配置,您需要通过 click 来构建 option。通过 from rqalpha import cli 来获取命令行对象。

  1. import click
  2. from rqalpha import cli

接下来我们命令 rqalpha run 中添加参数 —plot 来实现画图的功能

  1. cli.commands['run'].params.append(
  2. click.Option(
  3. ('-p', '--plot/--no-plot', 'mod__sys_analyser__plot'),
  4. default=None,
  5. help="[sys_analyser] plot result"
  6. )
  7. )

我们还希望可以通过 $ rqalpha plot result_pickle_file_path 来将之前通过pickle文件报错的某次回测的结果进行画图

  1. @cli.command()@click.argument('result_pickle_file_path', type=click.Path(exists=True), required=True)@click.option('—show/—hide', 'show', default=True)@click.option('—plot-save', 'plot_save_file', default=None, type=click.Path(), help="save plot result to file")def plot(result_pickle_file_path, show, plot_save_file): """ [sys_analyser] draw result DataFrame """ import pandas as pd from .plot import plot_result

  2. result_dict = pd.read_pickle(result_pickle_file_path)
  3. plot_result(result_dict, show, plot_save_file)