通过引用 RQAlpha 库在代码中运行策略
并不是所有业务场景下都需要使用 rqalpha run
命令行的方式来运行策略,您也可以在您的脚本/程序中直接运行 RQAlpha。
注解
即使通过代码方式启动策略,RQAlpha 也会寻找代码执行目录是否存在 config.yml / config.json 文件,作为用户配置文件来加载配置。但代码中传入的 config 优先级更高。
使用 run_file 函数来运行策略
此种模式下,您需要指定策略文件路径,并传入配置参数以启动策略
- # run_file_demo
- from rqalpha import run_file
- config = {
- "base": {
- "start_date": "2016-06-01",
- "end_date": "2016-12-01",
- "benchmark": "000300.XSHG",
- "accounts": {
- "stock": 100000
- }
- },
- "extra": {
- "log_level": "verbose",
- },
- "mod": {
- "sys_analyser": {
- "enabled": True,
- "plot": True
- }
- }
- }
- strategy_file_path = "./buy_and_hold.py"
- run_file(strategy_file_path, config)
使用 run_code 函数来运行策略
此种模式下,您需要以字符串的方式传入策略源码,并传入配置参数以启动策略
- # run_code_demo
- from rqalpha import run_code
- code = """
- from rqalpha.api import *
- def init(context):
- logger.info("init")
- context.s1 = "000001.XSHE"
- update_universe(context.s1)
- context.fired = False
- def before_trading(context):
- pass
- def handle_bar(context, bar_dict):
- if not context.fired:
- # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
- order_percent(context.s1, 1)
- context.fired = True
- """
- config = {
- "base": {
- "start_date": "2016-06-01",
- "end_date": "2016-12-01",
- "benchmark": "000300.XSHG",
- "accounts": {
- "stock": 100000
- }
- },
- "extra": {
- "log_level": "verbose",
- },
- "mod": {
- "sys_analyser": {
- "enabled": True,
- "plot": True
- }
- }
- }
- run_code(code, config)
使用 run_func 函数来运行策略
此种模式下,您只需要在当前环境下定义策略函数,并传入指定运行的函数,即可运行策略。
- # run_func_demo
- from rqalpha.api import *
- from rqalpha import run_func
- def init(context):
- logger.info("init")
- context.s1 = "000001.XSHE"
- update_universe(context.s1)
- context.fired = False
- def before_trading(context):
- pass
- def handle_bar(context, bar_dict):
- if not context.fired:
- # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
- order_percent(context.s1, 1)
- context.fired = True
- config = {
- "base": {
- "start_date": "2016-06-01",
- "end_date": "2016-12-01",
- "benchmark": "000300.XSHG",
- "accounts": {
- "stock": 100000
- }
- },
- "extra": {
- "log_level": "verbose",
- },
- "mod": {
- "sys_analyser": {
- "enabled": True,
- "plot": True
- }
- }
- }
- # 您可以指定您要传递的参数
- run_func(init=init, before_trading=before_trading, handle_bar=handle_bar, config=config)
- # 如果你的函数命名是按照 API 规范来,则可以直接按照以下方式来运行
- # run_func(**globals())