Appearance
设置函数
策略里和界面同时设置了参数时,优先使用策略里设置的参数。
设置需要作为判断的基准
set_benchmark-设置需要作为判断的基准
用于设定策略收益对比的基准。设置后,回测结果页的基准收益曲线将以此为准。仅初始化时设置有效,必须在 initialize(context) 中调用。默认是沪深 300。
函数
python
set_benchmark(security)参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 示例 |
|---|---|---|---|---|---|
| security | str | 是 | 沪深300指数 | 指数/股票/ETF等标的代码(以你接入的行情和交易品种为准) | sh000001 |
返回值
None
举例
python
def initialize(context):
set_benchmark('sz399300')
# 输出:None注:如果没有调用 set_benchmark 函数,系统默认使用 set_benchmark('sz399300') 作为基准。 调用时机:仅在 initialize 函数中调用有效。如果在 handle_data 等运行期函数中调用,系统将静默忽略(不报错但不生效)。
设置策略参数
set_option-设置策略参数
用于配置策略运行时的核心撮合与账号行为,仅初始化时设置有效,必须在 initialize(context) 中调用。
函数
python
set_option(mode, value)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | str | 是 | 设置参数的名称(见下方 mode可选值表) |
| value | any | 是 | 对应参数的取值 |
| mode | 含义 | value | 默认值 | 备注 |
|---|---|---|---|---|
'order_volume_ratio' | 设定成交量比例,根据实际行情限制每个订单的成交量。 | float: 0.0 ~ 1.0 | 1.0 | 超过此比例的订单将部分成交或撤单 |
'match_with_order_book' | 设定是否启用盘口撮合模式 | bool: True 或 False | False | 仅仿真环境有效,回测环境将自动忽略此项 |
'futures_margin_rate' | 设置期货保证金比例。可为不同品种的标的设置不同比例的保证金。 | float 或 dict | 交易所标准 | 除中金所股指期货外,其他品种使用合约单边保证金机制,对于一个合约的双向持仓只收较大的一边的保证金。中金所股指期货使用跨品种单边保证金,对于所有中金所股指期货标的,只收取双向持仓中更大的一边的保证金。示例:{'IF': 0.1, 'IH': 0.15} |
返回值
None
举例
python
def initialize(context):
set_option('order_volume_ratio', 1)
# 输出:None设置佣金印花税等交易费率
set_order_cost-设置佣金印花税等交易费率
用于自定义回测/仿真环境中的佣金,印花等成本。仅初始化时设置有效,必须在 initialize(context) 中调用。期货暂不支持。
函数
python
set_order_cost(cost, type, ref=None)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cost | OrderCost | 是 | OrderCost对象,用于配置各类税费与佣金(见下方字段说明) |
| type | str | 是 | 品种类型:股票 stock/ 基金 fund/债券 bond/期货futures(期货暂不支持) |
| ref | str / None | 否 | 暂不支持 |
cost-OrderCost 字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| close_tax | float | 卖出时印花税(仅股票类标的收取,其他品种不收),印花税规则会根据历史规则变动 |
| open_commission | float | 买入时佣金,按成交额比例计费时设置该值 |
| open_fixed_commission | float | 买入时佣金,按每手固定计费时设置该值(仅期货有效,且与 open_commission 不能同时设置) |
| close_commission | float | 卖出时佣金,按成交额比例计费时设置该值 |
| close_fixed_commission | float | 卖出时佣金,按每手固定计费时设置该值(仅期货有效,且与 close_commission 不能同时设置) |
| close_today_commission | float | 平今仓佣金,按成交额比例计费时设置该值(仅期货有效) |
| close_fixed_today_commission | float | 平今仓佣金,按每手固定计费时设置该值(仅期货有效,且与 close_today_commission 不能同时设置) |
| min_commission | float | 最低佣金(不包含印花税) |
返回值
None
举例
python
def initialize(context):
# 股票类每笔交易时的手续费:买入佣金万分之三;卖出佣金万分之三 + 千分之一印花税;最低佣金 5 元
set_order_cost(
OrderCost(
close_tax=0.001,
open_commission=0.0003,
close_commission=0.0003,
close_today_commission=0,
min_commission=5
),
type='stock'
)
# 输出:None设置滑点
set_slippage-设置滑点
用于设置撮合成交时的滑点模型,用来模拟冲击成本。 仅初始化时设置有效,必须在 initialize(context) 中调用。
函数
python
set_slippage(object, type=None, ref=None)参数
| 参数字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| object | FixedSlippage / FixedPercent | 是 | 滑点模型对象,支持固定值或百分比。 |
| type | str | 否 | 交易品种。可选:股票 'stock' / 基金 'fund' / 债券 'bond' / 期货 'futures'。当前版本仅支持 'stock',建议显式传入 type='stock'。 |
| ref | str | 否 | (暂不支持)标的代码。用于为特定标的单独设置滑点;若未来支持,通常需同时指定 type。 |
| 滑点模型分类 |
- 固定值滑点:
FixedSlippage(x)- 逻辑:成交价偏移 $x/2$。
- 示例:
FixedSlippage(0.02)表示总价差 0.02 元。若当前价 10.0元,买入价为 10.01,卖出价为 9.99。
- 百分比滑点:
FixedPercent(p)- 逻辑:成交价偏移基准价的 $p/2$。
- 示例:
FixedPercent(0.002)表示总比例 0.2%。若当前价 10.0元,买入价为 10.01,卖出价为 9.99。
返回
- None
举例
python
def initialize(context):
# 为全部交易品种设定固定值滑点(当前版本实际仅对股票有意义)
set_slippage(FixedSlippage(0.02))
# 输出: None
# 为股票设定滑点为百分比滑点(覆盖上面的设置)
set_slippage(FixedPercent(0.00246), type='stock')
# 输出: None设置或者更新此策略要操作的股票池
set_universe-设置或更新策略的股票池(universe)。 可通过 context.universe 获取设置后的值。该股票池常用于:
- 统一管理策略关注标的集合
- 作为部分接口的默认 security 范围。- [支持] 行情函数缺省调用: 调用
history()或get_price()时,若不传标的参数(security_list或security),系统将自动请求当前universe中的全量标的数据。 - [支持] 回调数据过滤: 决定了
handle_data(context, data)中data字典的范围。data仅包含universe内标的的行情快照,具备自动过滤功能。 - [支持] 动态实时更新: 支持在
handle_data等运行阶段随时调用。更新后,context.universe立即改变,且后续触发的data范围及行情接口缺省值将同步指向新股票池。
函数
python
set_universe(security_list)参数
| 字段名 | 字段类型 | 说明 |
|---|---|---|
| security_list | str / list[str] | 股票代码或股票列表。示例:'sz000001' 或 ['sz000001','sh600000'] |
返回
- None
说明
| 项 | 说明 |
|---|---|
| context.universe 类型 | context.universe 属性返回值为 只读元组(Tuple),例如:('sz000001','sh600000') |
| 是否可运行中更新 | 支持在运行阶段调用,更新后 context.universe 会立即变化,且会在后续交易日持续保持,直到再次调用 set_universe |
| 项 | 说明 |
举例
python
def initialize(context):
set_universe(['sz000001', 'sh600000'])
log.info(context.universe)
# 输出: ('sz000001', 'sh600000')
def handle_data(context, data):
# 运行中动态更新股票池
set_universe(['sz000001'])
log.info(context.universe)
# 输出: ('sz000001',)