RQAlpha源码阅读(一)
RQAlpha源码阅读
依赖
- requests
- numpy
- pandas
- python-dateutil
- six
- logbook
- click
- jsonpickle
- simplejson
- PyYAML
- tabulate
- rqrisk
- h5py
- matplotlib
- xlwt
入口__main__.py
载入Mod
rqalpha入口文件首先解析mod_config.yml
加载用户模块配置选项,模块配置文件格式如下:
mod:
# 载入 Account 和 Postion Model
sys_accounts:
enabled: true
# 回测 / 模拟交易 支持 Mod
sys_simulation:
enabled: true
# 开启该选项,可以在命令行查看回测进度
sys_progress:
enabled: true
sys_risk:
enabled: true
sys_analyser:
enabled: true
sys_scheduler:
enabled: true
sys_transaction_cost:
enabled: true
custom_mod:
lib: $PATH/python3/mod/custom_mod
rqalpha模块配置检查时会先使用自身包内的默认版本作为模板,然后在~/.rqalpha
中检查用户是否写入mod_config.yml
来更新覆盖模块配置。如何区别内部模块和外部模块呢?rqalpha.mod.utils.inject_mod_commands
函数中是通过模块信息配置项下是否存在lib
来区分的,并且rqalpha将以下模块列为系统级模块,加载时从rqalpha.mod.rqalpha_mod_{mod_name}
:
SYSTEM_MOD_LIST = [
"sys_accounts",
"sys_analyser",
"sys_progress",
"sys_risk",
"sys_simulation",
"sys_transaction_cost",
'sys_scheduler',
]
启用命令行
导入Mod后rqalpha会解析命令行参数,入口在rqalpha.cmds.entry.cli
,具体命令在rqalpha.cmds
文件夹下的其他文件中。
cmds子包
包含以下模块:
模块 | 用途 |
---|---|
bundle | 下载数据 |
run | 运行策略 |
misc | 生成配置、策略模板 |
mod | 模块管理 |
下面具体解释每个模块中包含的命令及其对应参数。
bundle
download_bundle
该命令用来下载数据文件,
参数 | 介绍 |
---|---|
-d --data-bundle-path
|
数据下载的位置,默认为~/.rqalpha ,会在该目录下生成bundle 目录,数据均会被下载到该目录下。 |
--confirm |
目录下存在文件,是否直接覆盖,该标志为True时直接清空现有文件 |
update_bundle
该命令用来更新数据文件
参数 | 介绍 |
---|---|
-d --data-bundle-path
|
数据下载的位置,需要有数据存在,当文件夹为空时会提示数据不存在请使用download_bundle命令 |
rqdatac_uri --rqdatac --rqdatac-uri
|
rqdatac的uri,数据从该远程端口下载 |
--compression |
是否允许压缩数据以便节省空间,默认是False |
-c --concurrency
|
多进程下载,默认进程数1 |
misc
examples
生成策略样例到目标目录
参数 | 介绍 |
---|---|
-d --directory
|
默认为当前文件夹,该参数为必选参数 |
version
显示rqalpha版本
参数 | 介绍 |
---|---|
-v --version
|
版本 |
generate_config
生成默认配置文件
参数 | 介绍 |
---|---|
-d --directory
|
默认为当前文件夹,该参数为必选参数 |
mod
list
显示所有支持的Mod
enable
启用某个Mod
参数 | 介绍 |
---|---|
name |
模块名称 |
disable
禁用某个Mod
参数 | 介绍 |
---|---|
name |
模块名称 |
run
run
运行策略
参数 | 介绍 |
---|---|
-d --data-bundle-path base__data_bundle_path
|
数据源所存储的文件路径 |
-f --strategy-file base__strategy_file
|
启动的策略文件路径 |
-s --start-date base__start_date
|
回测起始日期 |
-e --end-date base__end_date
|
回测结束日期(如果是实盘,则忽略该配置) |
-mm --margin-multiplier base__margin_multiplier
|
设置保证金乘数,默认为1 |
-a --account base__accounts
|
设置策略可交易品种,目前支持 stock (股票账户)、future (期货账户),您也可以自行扩展。如果想设置使用某个账户,只需要增加对应的初始资金即可。stock: ~ future: ~
|
--position base__init_positions
|
设置初始仓位,字符串类型 |
-fq --frequency base__frequency
|
回测频率,'1d', '1m', 'tick'
|
-rt --run-type base__round_price
|
运行类型,b 为回测,p 为模拟交易, r 为实盘交易。默认b 回测模式 |
-rp --round-price base__frequency
|
根据价格最小变动单位调整发单价格,取到小数点后2位 |
-mk --market base__market
|
使用的市场,'cn', 'hk'
|
--source-code base__source_code
|
策略源代码 |
-rqdatac --rqdatac-uri base__rqdatac_uri
|
rqdatac的远程端口 |
-l --log-level extra__log_level
|
日志级别,可选'verbose', 'debug', 'info', 'error', 'none'
|
--logger extra__logger
|
配置日志记录器,例如, --logger system_log debug
|
--locale extra__locale
|
可选cn 或en , 默认cn
|
--extra-vars extra__context_vars
|
覆盖默认的context数据 |
--enable-profiler extra__enable_profiler
|
添加一行性能调试来调试策略 |
--config config_path
|
配置文件目录 |
-mc --mod-config mod_configs
|
mod配置,参数成对存在,可存在多个 |
--resume base__resume_mode
|
该参数已被废弃 |
本文系作者 @root 原创发布在 CycleGen。未经许可,禁止转载。