1. 配置QTEASY
查看qteasy的当前系统配置信息:
- qteasy.configuration(config_key=None, level=0, up_to=0, default=True, verbose=False) None[源代码]
显示qt当前的配置变量,
- 参数:
config_key (str or list of str) – 需要显示的配置变量名称,如果不给出任何名称,则按level,up_to等方式显示所有的匹配的变量名 可以以逗号分隔字符串的形式给出一个或多个变量名,也可以list形式给出一个或多个变量名 以下两种方式等价: ‘local_data_source, local_data_file_type, local_data_file_path’ [‘local_data_source’, ‘local_data_file_type’, ‘local_data_file_path’]
level (int, Default: 0) – 需要显示的配置变量的级别。 如果给出了config,则忽略此参数
up_to (int, Default: 0) – 需要显示的配置变量的级别上限,需要配合level设置。 例如,当level == 0, up_to == 2时 会显示级别在0~2之间的所有配置变量 如果给出了config,则忽略此参数
default (Bool, Default: False) – 是否显示配置变量的默认值,如果True,会同时显示配置变量的当前值和默认值
verbose (Bool, Default: False) – 是否显示完整说明信息,如果True,会同时显示配置变量的详细说明
- 返回类型:
None
备注
使用示例参见get_config()
- qteasy.get_config(config_key=None, level=0, up_to=0, default=True, verbose=False)[源代码]
显示qt当前的配置变量,与get_config / configuration 相同
- 参数:
config_key (str or list of str) – 需要显示的配置变量名称,如果不给出任何名称,则按level,up_to等方式显示所有的匹配的变量名 可以以逗号分隔字符串的形式给出一个或多个变量名,也可以list形式给出一个或多个变量名 以下两种方式等价: ‘local_data_source, local_data_file_type, local_data_file_path’ [‘local_data_source’, ‘local_data_file_type’, ‘local_data_file_path’]
level (int, Default: 0) – 需要显示的配置变量的级别。 如果给出了config,则忽略此参数
up_to (int, Default: 0) – 需要显示的配置变量的级别上限,需要配合level设置。 例如,当level == 0, up_to == 2时 会显示级别在0~2之间的所有配置变量 如果给出了config,则忽略此参数
default (Bool, Default: False) – 是否显示配置变量的默认值,如果True,会同时显示配置变量的当前值和默认值
verbose (Bool, Default: False) – 是否显示完整说明信息,如果True,会同时显示配置变量的详细说明
- 返回类型:
None
示例
>>> get_config('local_data_source') No. Config-Key Cur Val Default val ---------------------------------------------------- 1 local_data_source database <file>
>>> get_config('local_data_source, local_data_file_type, local_data_file_path') No. Config-Key Cur Val Default val ---------------------------------------------------- 1 local_data_source database <file> 2 local_data_file_type csv <csv> 3 local_data_file_path data/ <data/>
>>> get_config(level=0, up_to=2) No. Config-Key Cur Val Default val ---------------------------------------------------- 1 mode 1 <1> 2 time_zone Asia/Shanghai <Asia/Shanghai> 3 asset_pool 000300.SH <000300.SH> 4 asset_type IDX <IDX> 5 live_trade_account_id None <None> 6 live_trade_account None <None> 7 live_trade_debug_mode False <False> 8 live_trade_init_cash 1000000.0 <1000000.0> ... (more rows)
>>> get_config(level=0, up_to=1, verbose=True) No. Config-Key Cur Val Default val Description ---------------------------------------------------- 1 mode 1 <1> qteasy 的运行模式: 0: 实盘运行模式 1: 回测-评价模式 2: 策略优化模式 3: 统计预测模式 2 time_zone Asia/Shanghai <Asia/Shanghai> 回测时的时区,可以是任意时区,例如: Asia/Shanghai Asia/Hong_Kong US/Eastern US/Pacific Europe/London Europe/Paris Australia/Sydney Australia/Melbourne Pacific/Auckland Pacific/Chatham etc. 3 asset_pool 000300.SH <000300.SH> 可用投资产品池,投资组合基于池中的产品创建 4 asset_type IDX <IDX> 投资产品的资产类型,包括: IDX : 指数 E : 股票 FT : 期货 FD : 基金
- qteasy.get_configurations(config_key=None, level=0, up_to=0, default=True, verbose=False)[源代码]
显示qt当前的配置变量,与get_config / configuration 相同
- 参数:
config_key (str or list of str) – 需要显示的配置变量名称,如果不给出任何名称,则按level,up_to等方式显示所有的匹配的变量名 可以以逗号分隔字符串的形式给出一个或多个变量名,也可以list形式给出一个或多个变量名 以下两种方式等价: ‘local_data_source, local_data_file_type, local_data_file_path’ [‘local_data_source’, ‘local_data_file_type’, ‘local_data_file_path’]
level (int, Default: 0) – 需要显示的配置变量的级别。 如果给出了config,则忽略此参数
up_to (int, Default: 0) – 需要显示的配置变量的级别上限,需要配合level设置。 例如,当level == 0, up_to == 2时 会显示级别在0~2之间的所有配置变量 如果给出了config,则忽略此参数
default (Bool, Default: False) – 是否显示配置变量的默认值,如果True,会同时显示配置变量的当前值和默认值
verbose (Bool, Default: False) – 是否显示完整说明信息,如果True,会同时显示配置变量的详细说明
- 返回类型:
None
示例
使用示例参见get_config()
修改qteasy的配置信息:
- qteasy.configure(config=None, reset=False, only_built_in_keys=True, **kwargs) None[源代码]
配置qteasy的运行参数QT_CONFIG
- 参数:
config (ConfigDict 对象) – 需要设置或调整参数的config对象,默认为None,此时直接对QT_CONFIG对象设置参数
reset (bool) – 默认值为False,为True时忽略传入的kwargs,将所有的参数设置为默认值
only_built_in_keys (bool) – 默认值False,如果为True,仅允许传入内部参数,False时允许传入任意参数
**kwargs – 需要设置的所有参数
- 返回类型:
None
备注
使用get_config()或configuration()查看当前的QT_CONFIG参数
示例
>>> configure(reset=True) # 将QT_CONFIG参数设置为默认值 >>> configure(invest_cash_amounts=[10000, 20000, 30000], invest_cash_dates=['2018-01-01', '2018-02-01', '2018-03-01']) >>> get_config('invest_cash_amounts, invest_cash_dates') No. Config-Key Cur Val Default val ------------------------------------------------------------------- 1 invest_cash_amounts [10000, 20000, 30000] <[100000.0]> 2 invest_cash_dates ['2018-01-01', '2018-02-01'...<None>
- qteasy.set_config(config=None, reset=False, only_built_in_keys=True, **kwargs) None[源代码]
配置qteasy的运行参数QT_CONFIG,等同于configure()
- 参数:
config (ConfigDict 对象) – 需要设置或调整参数的config对象,默认为None,此时直接对QT_CONFIG对象设置参数
reset (bool) – 默认值为False,为True时忽略传入的kwargs,将所有的参数设置为默认值
only_built_in_keys (bool) – 默认值False,如果为True,仅允许传入内部参数,False时允许传入任意参数
**kwargs – 需要设置的所有参数
- 返回类型:
None
示例
参见 configure()
查看、修改或删除qteasy的启动配置内容:
- qteasy.start_up_settings() None[源代码]
打印qteasy启动配置文件中存储的启动设置内容
- 返回类型:
None
示例
>>> import qteasy as qt >>> qt.start_up_settings() Start up settings: -------------------- local_data_source = file local_data_file_type = csv local_data_file_path = data/
- qteasy.update_start_up_setting(**kwargs) None[源代码]
更新qteasy启动配置文件中存储的启动设置
启动设置中可以包括系统定义配置参数以及用户自定义配置参数
- 参数:
**kwargs – 需要更新的配置参数
- 返回类型:
None
示例
>>> import qteasy as qt >>> qt.start_up_settings() Start up settings: -------------------- local_data_source = file local_data_file_type = csv local_data_file_path = data/
>>> qt.update_start_up_setting(local_data_source='database', local_data_file_type='feather') Start up settings updated successfully!
>>> qt.start_up_settings() Start up settings: -------------------- local_data_source = file local_data_file_type = feather local_data_file_path = data/
- qteasy.remove_start_up_setting(*args) None[源代码]
删除qteasy启动配置文件中存储的一项或者多项启动设置
必须给出需要删除的配置参数名称,可以同时删除多个配置参数
- 参数:
*args (str) – 需要的配置参数名称清单
- 返回类型:
None
示例
>>> import qteasy as qt >>> qt.start_up_settings() Start up settings: -------------------- local_data_source = file local_data_file_type = csv local_data_file_path = data/
>>> qt.remove_start_up_setting('local_data_source') Start up settings removed: ('local_data_source',)
>>> qt.start_up_settings() Start up settings: -------------------- local_data_file_type = csv local_data_file_path = data/
将所有的配置变量重置为默认值:
- qteasy.reset_config(config=None)[源代码]
重设config对象,将所有的参数都设置为默认值,如果config为None,则重设qt.QT_CONFIG
- 参数:
config (ConfigDict) – 需要重设的config对象
- 返回类型:
None
备注
等同于调用configure(config, reset=True)
从文件中读取配置信息:
- qteasy.load_config(*, config=None, file_name=None) ConfigDict[源代码]
- 从文件file_name中读取相应的config参数,写入到config中,如果config为
None,则保存参数到QT_CONFIG中
- 参数:
config (ConfigDict 对象) – 一个config对象,默认None,如果不为None且为一个ConfigDict对象,则将读取的配置参数写入到config中
file_name (str) – 文件名,默认None,如果为None,文件名为saved_config.cfg
- 返回:
config – 读取的配置参数
- 返回类型:
ConfigDict
- 抛出:
FileNotFoundError – 如果给定文件不存在,则报错。如果没有给定文件名,则当config/saved_config.cfg不存在时,报错
Examples: –
-------- –
>>> load_config() –
将配置信息写入文件:
- qteasy.save_config(*, config=None, file_name=None, overwrite=True, initial_config=False) str[源代码]
将config保存为一个文件 尚未实现的功能:如果initial_config为True,则将配置更新到初始化配置文件qteasy.cfg中()
- 参数:
config (ConfigDict or dict, Default: None) – 一个config对象或者包含配配置变量的dict,如果为None,则保存qt.QT_CONFIG
file_name (str, Default: None) – 文件名,如果为None,文件名为”saved_config.cfg”
overwrite (bool, Default: True) – 默认True,覆盖重名文件,如果为False,当保存的文件已存在时,将报错
initial_config (bool, Default: False (functionality not implemented)) – 保存配置变量到初始配置文件 qteasy.cfg 中,如果 qteasy.cfg 中已经存在配置变量,则覆盖对应变量。 TODO: 实现将配置变量写入 qteasy.cfg 初始配置文件的功能。 由于目前使用 pickle 写入对象为二进制文件,而 qteasy.cfg 是文本文件,所以需要实现新的写入方式。
- 返回:
file_name – 保存的文件名
- 返回类型:
str
qteasy的所有配置变量
下面是qteasy的配置变量,可以通过qteasy.get_config()函数查看当前的配置信息,也可以通过qteasy.configure()函数修改配置信息。
备注
关于 S1.3 完成后的模拟实盘文档入口(按使用目标):
快速了解:
live_trading/1-overview.md先跑起来:
live_trading/2-configuration-and-run.md理解拒单与状态:
live_trading/3-risk-and-order-lifecycle.md扩展 Broker:
live_trading/4-broker-adapter-and-integration.mdXtQuant/MiniQMT 契约 v1(英文):
live_trading/4a-xtquant-broker-adapter-contract-v1.md排错复盘:
live_trading/5-artifacts-and-troubleshooting.md双路径实操教程:
tutorials/8-live-trade-risk-and-broker-walkthrough.md
说明:
live_trading侧重模块能力与场景化说明;references侧重 API 视角功能清单;api侧重 autodoc 导出的接口明细。
用户可见拒单提示、错误信息、日志示例在文档中统一使用英文文案。
Name |
Level |
Default Value |
Description |
|---|---|---|---|
|
0 |
|
qteasy 的运行模式:
0: 实盘运行模式
1: 回测-评价模式
2: 策略优化模式
3: 统计预测模式
|
|
4 |
|
回测时的时区,默认值”local”,表示使用本地时区。
如果需要固定时区,设置任意合法的时区,例如:
Asia/Shanghai
Asia/Hong_Kong
US/Eastern
US/Pacific
Europe/London
Europe/Paris
Australia/Sydney
Australia/Melbourne
Pacific/Auckland
Pacific/Chatham
etc.
|
|
0 |
|
可用投资产品池,投资组合基于池中的产品创建 |
|
0 |
|
投资产品的资产类型,包括:
IDX : 指数
E : 股票
FT : 期货
FD : 基金
|
|
0 |
|
实盘交易账户ID,用于实盘交易,如果指定了该参数,则会直接
使用该账户执行实盘交易,如果账户ID不存在,则会报错
如果不给出account_id,则必须给出live_trade_account_name
以创建一个新的账户ID
|
|
0 |
|
用于实盘交易的账户名称,如果live_trade_account为None,则
必须创建新的账户ID,此时本参数必须给出,并设定account_name为
本参数的值
|
|
1 |
|
实盘交易调试模式,True: 调试模式,False: 正常模式 |
|
1 |
|
实盘交易账户的初始资金,浮点数,例如:
1000000.0 : 初始资金为100万
1000000 : 初始资金为100万
|
|
1 |
|
实盘交易账户的初始持仓,字典,例如:
{‘000001.SZ’: 1000, ‘000002.SZ’: 2000} : 初始持仓为
000001.SZ: 1000股, 000002.SZ: 2000股
|
|
1 |
|
实盘交易账户的交易代理商类型,可以设置为模拟交易代理商返回交易结果、手动输入结果或者连接到交易代理商的交易接口
默认使用模拟交易代理Simulator
|
|
1 |
|
实盘交易账户的交易代理商参数,字典,例如:
{‘host’: ‘localhost’, ‘port’: 8888} : 交易代理商的主机名和端口号
具体的参数设置请参考交易代理商的文档
如果使用 ‘simulator’ broker,且设置此参数为None,则会使用config中的
backtest参数
|
|
2 |
|
实盘交易时获取实时价格的方式:
eastmoney - 通过东方财富网获取实时价格
tushare - 通过tushare获取实时价格(需要自行开通权限)
akshare - Not Implemented: 从akshare获取实时价格
|
|
2 |
|
实盘交易时获取实时价格的频率:
H - 每1小时获取一次数据
30MIN - 每30分钟获取一次数据
15MIN - 每15分钟获取一次数据
5MIN - 每5分钟获取一次数据
1MIN - 每1分钟获取一次数据
|
|
4 |
|
实盘交易时监看实时价格的刷新频率,单位为秒,默认为5秒
该数值不能低于5秒
|
|
0 |
|
投资产品的最小申购批量大小,浮点数,例如:
0.01 : 可以购买最小到0.01份的投资产品
1. : 只能购买整数份额的投资产品
100: 可以购买100的整数倍份额投资产品
n : 可以购买的投资产品份额为n的整数倍,n不必为整数
|
|
0 |
|
投资产品的最小卖出或赎回批量大小,浮点数,例如:
0.01 : 可以卖出最小到0.01份的投资产品
1. : 只能购买整数份额的投资产品
100: 可以购买100的整数倍份额投资产品
n : 可以购买的投资产品份额为n的整数倍,n不必为整数
|
|
2 |
|
现金的小数位数,例如:
0: 现金只能为整数
2: 保留小数点后两位数字
|
|
2 |
|
投资产品的份额的小数位数,例如:
0: 份额只能为整数
2: 保留小数点后两位数字
|
|
1 |
|
无风险利率,如果选择”考虑现金的时间价值”,则回测时现金按此年利率增值 |
|
1 |
|
如果True,策略参数寻优时将利用多核心CPU进行并行计算提升效率 |
|
4 |
|
下载历史数据时启用的线程数量,为0或1时采用单线程下载,大于1时启用多线程 |
|
4 |
|
为防止服务器数据压力过大,下载历史数据时下载一定数量的数据后延迟的时间长度,单位为秒 |
|
4 |
|
为防止服务器数据压力过大,下载历史数据时,每下载一定数量的数据,就延迟一段时间。
此参数为两次延迟之间的数据下载量
|
|
4 |
|
下载历史数据时是否显示进度条 |
|
4 |
|
下载历史数据失败时的自动重试次数 |
|
4 |
|
下载历史数据失败时的自动重试前的延迟时间,单位为秒 |
|
4 |
|
下载历史数据失败时的自动重试的延迟时间倍增乘数
例如,设置hist_dnld_backoff = 2时,每次重试失败
后延迟时间会变为前一次的2倍
|
|
4 |
|
[PLANNED] 在实盘运行时自动下载的历史数据表名列表,例如:
[“stock_daily”, “index_weekly”, “stock_monthly”]
当前版本尚未启用该功能,配置不产生实际效果。
|
|
4 |
|
[PLANNED] 如果True,策略参数寻优时使用GPU加速计算。
本功能目前尚未实现,设置该参数不会改变当前版本的运行行为。
|
|
1 |
|
确定本地历史数据存储方式:
file - 历史数据以本地文件的形式存储,
文件格式在”local_data_file_type”属性中指定,包括csv/hdf等多种选项
database - 历史数据存储在一个mysql数据库中
选择此选项时,需要在配置文件中配置数据库的连接信息
db - 等同于”database”
|
|
4 |
|
确定本地历史数据文件的存储格式:
csv - 历史数据文件以csv形式存储,速度较慢但可以用Excel打开
hdf - 历史数据文件以hd5形式存储,数据存储和读取速度较快
feather/fth - 历史数据文件以feather格式存储,数据交换速度快但不适用长期存储
|
|
4 |
|
确定本地历史数据文件存储路径 |
|
4 |
|
用于存储历史数据的数据库的主机名,该数据库应该为mysql数据库或MariaDB |
|
4 |
|
用于存储历史数据的数据库的端口号,默认值为mysql数据库的端口号3306 |
|
4 |
|
用于存储历史数据的数据库名,默认值为”qt_db” |
|
4 |
访问数据库的用户名,该用户需具备足够的操作权限
建议通过配置文件配置数据库用户名和密码
|
|
|
4 |
数据库的访问密码
建议通过配置文件配置数据库用户名和密码
|
|
|
4 |
|
系统运行日志及错误日志的存储路径。
支持相对路径(相对 QT_ROOT_PATH)、绝对路径及以
~ 开头的家目录路径;通过
qt.configure() / qt.set_config() 修改后立即生效(热修改),无需重新导入。路径中不得包含非法字符(如控制字符、Windows 下
<>"|?* 等),否则抛出 ValueError。 |
|
4 |
|
明细交易日志及交易汇总的存储路径(回测与实盘共用)。
支持相对路径(相对 QT_ROOT_PATH)、绝对路径及以
~ 开头的家目录路径;通过
qt.configure() / qt.set_config() 修改后立即生效(热修改),无需重新导入。路径中不得包含非法字符,否则抛出 ValueError。
|
|
4 |
|
回测写盘的
trade_log_* / trade_summary_* / value_curve_* 等 CSV 的保留天数;默认 3。在 进程加载 qteasy 模块后 对当前
trade_log_file_path 目录执行一次按天清理(非每次回测写文件前)。设为
None 或 小于等于 0 可关闭自动删除;需要时可调用 qt.rotate_trade_logs() 手动清理。 |
|
1 |
|
是否生成明细交易清单,以pd.DataFrame形式给出明细的每日交易清单
包括交易信号以及每一步骤的交易结果
|
|
1 |
|
用来产生回测结果评价结果基准收益的资产类型,默认基准为沪深300指数
基准指数用来生成多用评价结果如alpha、beta比率等,因为这些指标除了考察投资收益的
绝对值意外,还需要考虑同时期的市场平均表现,只有当投资收益优于市场平均表现的,才会
被算作超额收益或alpha收益,这才是投资策略追求的目标
基准资产的类型与价格类型由系统根据
benchmark_asset 及运行时间表自动推断。 |
|
1 |
|
为True时打印运行结果报告
实时模式显示策略运行报告,回测模式显示回测结果报告,优化模式显示优化结果报告
|
|
0 |
|
为True时使用图表显示可视化运行结果
(回测模式显示回测报告,优化模式显示优化结果报告)
|
|
4 |
|
为True时在回测图表中显示买卖点,使用红色和绿色箭头标示出买卖点的位置 |
|
4 |
|
为True时在回测图表中用色带显示投资仓位 |
|
2 |
|
买入证券或资产时的固定成本或固定佣金,该金额不随买入金额变化
默认值为10元
|
|
2 |
|
卖出证券或资产时的固定成本或固定佣金,该金额不随卖出金额变化
默认值为0
|
|
1 |
|
买入证券或资产时的成本费率或佣金比率,以买入金额的比例计算
默认值为万分之三
|
|
1 |
|
卖出证券或资产时的成本费率或佣金比率,以卖出金额的比例计算
默认值为万分之一
|
|
2 |
|
买入证券或资产时的最低成本或佣金,买入佣金只能大于或等于该最低金额
默认值为5元
|
|
2 |
|
卖出证券或资产时的最低成本或佣金,卖出佣金只能大于或等于该最低金额 |
|
2 |
|
交易滑点,一个预设参数,模拟由于交易延迟或交易金额过大产生的额外交易成本 |
|
0 |
|
回测模式下的回测开始日期。
留空(None)时,将在运行时根据 invest_end(或当前日期)自动推导为一年前的日期。
显式设置时格式为”YYYYMMDD”。
|
|
0 |
|
回测模式下的回测结束日期。
留空(None)时,将在运行时自动使用当前日期。
显式设置时格式为”YYYYMMDD”。
|
|
1 |
|
投资的金额,一个tuple或list,每次投入资金的金额,多个数字表示多次投入 |
|
2 |
|
回测操作现金投入的日期,一个str或list,多个日期表示多次现金投入。默认为None
当此参数为None时,现金投入日期与invest_start相同,当参数不为None时,此参数覆盖
invest_start
参数输入类型为str时,格式为”YYYYMMDD”
如果需要模拟现金多次定投投入,或者多次分散投入,则可以输入list类型或str类型
以下两种输入方式等效:
“20100104,20100202,20100304” =
[“20100104”, “20100202”, “20100304”]
|
|
4 |
|
是否允许卖空交易,:
False - 默认值,不允许卖空操作,卖出数量最多仅为当前可用持仓数量
True - 允许卖空,卖出数量大于持仓量时,即持有空头仓位
|
|
3 |
|
回测过程中允许交易信号建立的多头仓位百分比的极限值,即允许动用
总资产(包括现金和持有股票的总额)的多少百分比用于持有多头仓位,
默认值1.0,即100%
如果设置值大于1,则表示允许超过持有现金建仓,这种情况会产生负现金
余额,表示产生了借贷
|
|
3 |
|
回测过程中允许交易信号建立的空头仓位百分比的极限值,即允许持有的
空头仓位占当前净资产总额的最高比例限额,默认值-1.0,即最多允许借入
相当于净资产总额100%价值的股票并持有空头仓位,此时持有负股票份额且
产生正现金流入
|
|
4 |
|
回测时的复权价格处理方法:
股票分红除权的处理,正常来说,应该在股票分红除权时计算分红和派息对持仓
数量和现金的影响,但是目前这种处理方法比较复杂,暂时先采用比较简单的方
法,即直接采用复权价格进行回测,目前处理方法有两种
- none/n - 默认值,不使用复权价格,但也不处理派息,这只是临时处理,因
为长期回测不考虑除权派息将会导致回测结果与实际相差巨大
- back/b - 使用后复权价格回测,可以弥补不考虑分红派股的不足
- adj - 使用前复权价格回测。
|
|
3 |
|
回测信号模式为PT(position target)时,控制检查实际持仓比例并自动生成交易
信号的时机,默认normal
- aggressive: 在整个策略运行时间点上都会产生交易信号,不论此时PT信号是否发
生变化,实时监控实际持仓与计划持仓之间的差异,只要二者发生偏
离,就产生信号
- lazy: 在策略运行时间点上,只有当持仓比例发生变化时,才会产生交易
信号,不实时监控实际持仓与计划持仓的差异
|
|
3 |
|
回测信号模式为PT(position target)时,触发买入信号的仓位差异阈值
在这种模式下,当持有的投资产品的仓位比目标仓位低,且差额超过阈值时,触发买入信号
例如当卖出阈值为0.05即5%时,若目标持仓30%,那么只有当实际持仓<=25%时,才会产生
交易信号,即此时实际持仓与目标持仓之间的差值大于5%了
|
|
3 |
|
回测信号模式为PT(position target)时,触发卖出信号的仓位差异阈值
在这种模式下,当持有的投资产品的仓位比目标仓位高,且差额超过阈值时,触发卖出信号
例如当卖出阈值为0.05即5%时,若目标持仓30%,那么只有当实际持仓>=35%时,才会产生
交易信号,即此时实际持仓与目标持仓之间的差值大于5%了
|
|
3 |
|
回测时如果存在多种价格类型的交易信号,而且交易价格的类型为OHLC时,处理各种
不同的价格信号的优先级。
输入类型为字符串,O、H、L、C、A分别代表Open,High,Low,Close,Nav
|
|
3 |
|
回测时如果存在多种价格类型的交易信号,而且交易价格的类型为实时报价时,回测程序处理
不同的价格信号的优先级。
输入包括”normal” 以及 “reverse”两种,分别表示:
- “normal”: 优先处理更接近成交价的报价,如卖1/买1等
- “reverse”: 优先处理更远离成交价的报价,如卖5/买5等
|
|
3 |
|
回测时卖出股票获得现金的交割周期,用一个数字N代表交易日后第N天可以完成现金交割。
获得现金后立即计入总资产,但在途资金(尚未交割的资金)不能用于下一笔交易
当现金交割期为零时,可以选择在同一轮交易中先卖出资产获得尽可能多的现金用于本轮
买入
|
|
3 |
|
回测时买入股票后的股票交割周期,用一个数字N代表交易日后第N天可以完成资产交割。
获得股票后立即计入总资产,但尚未交割的股票不能用于下一笔交易
|
|
3 |
|
交易市场上午开市时间 |
|
3 |
|
交易市场上午收市时间 |
|
3 |
|
交易市场下午开市时间 |
|
3 |
|
交易市场下午收市时间 |
|
3 |
|
策略信号的开盘/收盘运行时间偏移量,单位为分钟,当策略信号运行时机为开盘/收盘,需要提前/推迟
一个偏移量运行,避免无法交易。
|
|
0 |
|
优化模式下的策略优化区间开始日期。
留空(None)时,将在运行时根据
opti_end 自动推导为其前一年的日期。 |
|
0 |
|
优化模式下的策略优化区间结束日期。
留空(None)时,将在运行时根据当前日期自动推导。
|
|
1 |
|
优化模式投资的金额,一个tuple或list,每次投入资金的金额,多个数字表示多次投入 |
|
2 |
|
策略优化区间现金投入的日期,一个str或list,多个日期表示多次现金投入。默认为None
当此参数为None时,现金投入日期与invest_start相同,当参数不为None时,此参数覆盖
invest_start
参数输入类型为str时,格式为”YYYYMMDD”
如果需要模拟现金多次定投投入,或者多次分散投入,则可以输入list类型或str类型
以下两种输入方式等效:
“20100104,20100202,20100304”[“20100104”, “20100202”, “20100304”]
|
|
3 |
|
优化类型。指优化数据的利用方式:
“single” - 在每一回合的优化测试中,在优化区间上进行覆盖整个区间的单次回测并评价
回测结果
“multiple” - 在每一回合的优化测试中,将优化区间的数据划分为多个子区间,在这些子
区间上分别测试,并根据所有测试的结果确定策略在整个区间上的评价结果
|
|
3 |
|
仅对无监督优化有效。且仅当优化类型为”multiple”时有效。将优化区间切分为子区间的数量 |
|
3 |
|
仅当优化类型为”multiple”时有效。每一个优化子区间长度占整个优化区间长度的比例
例如,当优化区间长度为10年时,本参数为0.6代表每一个优化子区间长度为6年
|
|
0 |
|
优化模式下的策略测试区间开始日期。
留空(None)时,将在运行时根据
test_end 自动推导为其前六个月。显式设置时格式为”YYYYMMDD”。
|
|
0 |
|
优化模式下的策略测试区间结束日期。
留空(None)时,将在运行时根据当前日期自动推导。
显式设置时格式为”YYYYMMDD”。
|
|
1 |
|
优化模式策略测试投资的金额,一个tuple或list,每次投入资金的金额。
模拟现金多次定投投入时,输入多个数字表示多次投入
输入的数字的个数必须与cash_dates中的日期数量相同
|
|
2 |
|
策略优化区间现金投入的日期,一个str或list,多个日期表示多次现金投入。默认为None
当此参数为None时,现金投入日期与invest_start相同,当参数不为None时,此参数覆盖
invest_start参数|
参数输入类型为str时,格式为”YYYYMMDD”
如果需要模拟现金多次定投投入,或者多次分散投入,则可以输入list类型或str类型
以下两种输入方式等效:
“20100104,20100202,20100304”[“20100104”, “20100202”, “20100304”]
|
|
3 |
|
测试类型。指测试数据的利用方式:
“single” - 在每一回合的优化测试中,在测试区间上进行覆盖整个区间的单次回测
并评价回测结果
“multiple” - 在每一回合的优化测试中,将测试区间的数据划分为多个子区间,在这
些子区间上分别测试,并根据所有测试的结果确定策略在整个区间上的
评价结果
“montecarlo” - 蒙特卡洛测试,根据测试区间历史数据的统计性质,随机生成大量的模
拟价格变化数据,用这些数据对策略的表现进行评价,最后给出统计意
义的评价结果
|
|
2 |
|
对优化后的策略参数进行测试评价的评价指标。
格式为逗号分隔的字符串,多个评价指标会以字典的形式输出,包含以下类型中的一种或多种
“years” - total year
“fv” - final values
“return” - total return rate
“mdd” - max draw down
“ref” - reference data return
“alpha” - alpha rate
“beta” - beta rate
“sharp” - sharp rate
“info” - info rate
|
|
2 |
|
优化或测试结果评价指标的可视化图表类型:
0 - errorbar 类型
1 - scatter 类型
2 - histo 类型
3 - violin 类型
4 - box 类型
|
|
3 |
|
仅当测试类型为”multiple”时有效。将测试区间切分为子区间的数量 |
|
3 |
|
仅当测试类型为”multiple”时有效。每一个测试子区间长度占整个测试区间长度的比例
例如,当测试区间长度为4年时,本参数0.75代表每个测试子区间长度为3年
|
|
3 |
|
仅当测试类型为”montecarlo”时有效。生成的模拟测试数据的数量。
默认情况下生成100组模拟价格数据,并进行100次策略回测并评价其统计结果
|
|
1 |
|
策略的优化目标。即优化时以找到该指标最佳的策略为目标 |
|
1 |
|
为True时寻找目标值最大的策略,为False时寻找目标值最低的策略 |
|
1 |
|
策略优化算法,可选值如下:
0 - 网格法,按照一定间隔对整个向量空间进行网格搜索
1 - 蒙特卡洛法,在向量空间中随机取出一定的点搜索最佳策略
2 - 递进步长法,对向量空间进行多轮搜索,每一轮搜索结束后根据结果选择部分子
空间,缩小步长进一步搜索
3 - 遗传算法,模拟生物种群在环境压力下不断进化的方法寻找全局最优(尚未完成)
4 - ML方法,基于机器学习的最佳策略搜索算法(尚未完成)
|
|
3 |
|
使用穷举法搜索最佳策略时有用,搜索步长 |
|
3 |
|
使用蒙特卡洛法搜索最佳策略时有用,在向量空间中采样的数量 |
|
3 |
|
在使用递进步长法搜索最佳策略时有用,每一轮随机取样的数量 |
|
3 |
|
在使用递进步长法搜索最佳策略时有用,
每一轮随机取样后择优留用的比例,同样也是子空间缩小的比例
|
|
3 |
|
在使用递进步长法搜索最佳策略时有用,多轮搜索的最大轮数,轮数大于该值时停止搜索 |
|
3 |
|
在使用递进步长法搜索最佳策略时有用,空间最小体积,当空间volume低于该值时停止搜索 |
|
3 |
|
在使用遗传算法搜索最佳策略时有用,种群的数量 |
|
3 |
|
策略参数优化后输出的最优参数数量 |