3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台进行回测时,如果发现累计盈亏的亏损额大于您计算出的手续费,最常见的原因是回测引擎默认计算了滑点(Slippage)成本。
滑点是指在真实交易中,委托价格与实际成交价格之间的价差。为了让回测结果更逼近真实的交易环境,ptrade 引擎在撮合成交时,默认会加入滑点成本。
根据 ptrade API 文档,平台提供了两种滑点设置方式,且都有默认值:
set_slippage):默认滑点比例为 0.1(即千分之一)。最终成交价格 = 委托价格 ± 委托价格 * slippage / 2。set_fixed_slippage):默认固定滑点为 0.0。如果您在策略中没有显式地关闭滑点,系统会按照默认的比例滑点扣除额外的交易成本,这就是导致累计盈亏与纯手续费计算不符的原因。
如果您希望在回测中只计算手续费,不计算滑点(例如为了纯粹验证交易逻辑),您需要在策略的 initialize 函数中,显式地将滑点设置为 0。
def initialize(context):
# 设置股票池
g.security = '600570.SS'
set_universe(g.security)
# 1. 将比例滑点设置为 0
set_slippage(slippage=0.0)
# 2. 将固定滑点设置为 0(可选,默认为0)
set_fixed_slippage(fixedslippage=0.0)
# 3. 设置您预期的手续费率(例如万分之三,最低5元)
set_commission(commission_ratio=0.0003, min_commission=5.0)
def handle_data(context, data):
# 您的交易逻辑
pass
set_commission) 和 滑点 (set_slippage / set_fixed_slippage) 的设置。