🚀 AI 一键生成 joinquant 策略代码

深入理解 set_slippage(FixedSlippage) 固定滑点设置

joinquant | 发布时间: 2025/12/23
以下内容由 EasyQuant 生成。

问题描述

如何在回测中设置每笔交易固定 0.02 元的滑点?

解决方案

在 JoinQuant(聚宽)回测中,要设置每笔交易固定 0.02 元的滑点,需要在 initialize 函数中使用 set_slippage 函数,并配合 FixedSlippage 对象来实现。

设置方法

FixedSlippage(0.02) 表示设定一个固定的价差为 0.02 元。在实际交易撮合时:

  • 买入:成交价 = 原本成交价 + 0.01 元
  • 卖出:成交价 = 原本成交价 - 0.01 元

代码示例

以下是一个完整的最小策略示例,展示了如何在初始化阶段设置该滑点:

# -*- coding: utf-8 -*-

def initialize(context):
    # 设置我们要操作的股票,这里以平安银行为例
    g.security = '000001.XSHE'
    
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)
    
    # -----------------------------------------------------------
    # 设置固定滑点:价差为 0.02 元
    # 效果:交易时买入价增加 0.01 元,卖出价减少 0.01 元
    set_slippage(FixedSlippage(0.02))
    # -----------------------------------------------------------
    
    # 每天运行一次
    run_daily(market_open, time='every_bar')

def market_open(context):
    # 简单的买入示例
    if g.security not in context.portfolio.positions:
        order(g.security, 1000)
        log.info("买入股票,滑点将导致成交价上浮 0.01 元")

详细说明

  1. 函数位置set_slippage 必须在 initialize(context) 函数中调用。
  2. 参数解释
    • FixedSlippage(0.02):创建一个固定值滑点对象。参数 0.02 代表双边总价差。
    • 如果不指定 type 参数,该滑点设置将默认应用于所有交易品种(股票、基金等)。
  3. 针对特定品种设置
    如果只想对股票设置该滑点,可以指定 type='stock'
    set_slippage(FixedSlippage(0.02), type='stock')
    

Q&A

Q: FixedSlippage(0.02) 是指每股成本增加 0.02 元吗?
A: 不是。FixedSlippage(0.02) 定义的是买卖之间的价差。系统在撮合时取价差的一半应用到单边交易中。因此,买入时价格增加 0.01 元,卖出时价格减少 0.01 元,单次交易的额外成本是 0.01 元/股。

Q: 如果不设置 set_slippage,系统默认滑点是多少?
A: 如果没有调用 set_slippage 函数,聚宽系统默认使用的滑点是 PriceRelatedSlippage(0.00246),即按照成交价格的 0.246% 计算滑点。

Q: 除了固定滑点,还支持百分比滑点吗?
A: 支持。可以使用 PriceRelatedSlippage(value) 来设置百分比滑点。例如 set_slippage(PriceRelatedSlippage(0.002)) 表示滑点为当时价格的 0.2%(买入加 0.1%,卖出减 0.1%)。