Skip to content

设置函数

策略里和界面同时设置了参数时,优先使用策略里设置的参数。

设置需要作为判断的基准

set_benchmark-设置需要作为判断的基准

用于设定策略收益对比的基准。设置后,回测结果页的基准收益曲线将以此为准。仅初始化时设置有效,必须在 initialize(context) 中调用。默认是沪深 300。

函数

python
set_benchmark(security)

参数

参数名类型必填默认值说明示例
securitystr沪深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)

参数

参数名类型必填说明
modestr设置参数的名称(见下方 mode可选值表)
valueany对应参数的取值
mode含义value默认值备注
'order_volume_ratio'设定成交量比例,根据实际行情限制每个订单的成交量。float: 0.0 ~ 1.01.0超过此比例的订单将部分成交或撤单
'match_with_order_book'设定是否启用盘口撮合模式bool: TrueFalseFalse仅仿真环境有效,回测环境将自动忽略此项
'futures_margin_rate'设置期货保证金比例。可为不同品种的标的设置不同比例的保证金。floatdict交易所标准除中金所股指期货外,其他品种使用合约单边保证金机制,对于一个合约的双向持仓只收较大的一边的保证金。中金所股指期货使用跨品种单边保证金,对于所有中金所股指期货标的,只收取双向持仓中更大的一边的保证金。示例:{'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)

参数

参数名类型必填说明
costOrderCostOrderCost对象,用于配置各类税费与佣金(见下方字段说明)
typestr品种类型:股票 stock/ 基金 fund/债券 bond/期货futures(期货暂不支持
refstr / None暂不支持

cost-OrderCost 字段说明

字段名类型说明
close_taxfloat卖出时印花税(仅股票类标的收取,其他品种不收),印花税规则会根据历史规则变动
open_commissionfloat买入时佣金,按成交额比例计费时设置该值
open_fixed_commissionfloat买入时佣金,按每手固定计费时设置该值(仅期货有效,且与 open_commission 不能同时设置)
close_commissionfloat卖出时佣金,按成交额比例计费时设置该值
close_fixed_commissionfloat卖出时佣金,按每手固定计费时设置该值(仅期货有效,且与 close_commission 不能同时设置)
close_today_commissionfloat平今仓佣金,按成交额比例计费时设置该值(仅期货有效)
close_fixed_today_commissionfloat平今仓佣金,按每手固定计费时设置该值(仅期货有效,且与 close_today_commission 不能同时设置)
min_commissionfloat最低佣金(不包含印花税)

返回值

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)

参数

参数字段名类型必填说明
objectFixedSlippage / FixedPercent滑点模型对象,支持固定值或百分比。
typestr交易品种。可选:股票 'stock' / 基金 'fund' / 债券 'bond' / 期货 'futures'。当前版本仅支持 'stock',建议显式传入 type='stock'。
refstr(暂不支持)标的代码。用于为特定标的单独设置滑点;若未来支持,通常需同时指定 type。
滑点模型分类
  1. 固定值滑点FixedSlippage(x)
    • 逻辑:成交价偏移 $x/2$。
    • 示例FixedSlippage(0.02) 表示总价差 0.02 元。若当前价 10.0元,买入价为 10.01,卖出价为 9.99。
  2. 百分比滑点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_listsecurity),系统将自动请求当前 universe 中的全量标的数据。
  • [支持] 回调数据过滤: 决定了 handle_data(context, data)data 字典的范围。data 仅包含 universe 内标的的行情快照,具备自动过滤功能。
  • [支持] 动态实时更新: 支持在 handle_data 等运行阶段随时调用。更新后,context.universe 立即改变,且后续触发的 data 范围及行情接口缺省值将同步指向新股票池。

函数

python
set_universe(security_list)

参数

字段名字段类型说明
security_liststr / 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',)