Backtrader 文档学习- Broker - Slippage

Backtrader 文档学习- Broker - Slippage

1.概述

回测无法保证真实的市场条件。无论市场模拟有多好,在真实市场条件下都可能发生滑点。这意味着:

  • 请求的价格可能无法与真实市场的价格匹配
    集成的回测broker支持滑点。以下参数可以传递给broker ,具体参数见前一章。

2.How it works

滑点是如何工作的

为了决定何时应用滑点,考虑订单执行类型:

  • Close 不适用滑点
    此订单与close价格匹配,此价格是当天的最后一个价格。滑点不可能发生,因为订单只能在会话的最后一个tick发生,是一个唯一的价格,没有容差。
  • Market 应用滑点
    请检查slip_open是否打开,设置为True。因为Market订单将与下一个K线的开盘价格匹配。
  • Limit 应用滑点,遵循以下逻辑:
    • 如果匹配价格将是开盘价格,则根据参数slip_open,应用滑点。如果应用,则价格永远不会比请求的limit价格更低(差)。
    • 如果匹配价格不是limit价格,则应用滑点,并将其限制在high/low上。在这种情况下,slip_mlimit参数决定是否会在超过上限时发生匹配 。
    • 如果匹配价格是limit价格,则不用滑点 。
  • Stop 一旦订单被触发,则适用与Market订单相同的逻辑
  • StopLimit 一旦订单被触发,则适用与Limit订单相同的逻辑

滑点试图在模拟和可用数据的限制内,提供最真实的可能回测交易方法 。

3.Configuring slippage

每次运行时,cerebro引擎都会为每个运行实例化一个broker,并使用默认参数。有两种方法可以更改设置操作:

使用方法配置滑点:

  • 配置百分比的滑点

BackBroker.set_slippage_perc(perc, slip_open=True, slip_limit=True,
slip_match=True, slip_out=False)

  • 配置固定点的滑点

BackBroker.set_slippage_fixed(fixed, slip_open=True, slip_limit=True,
slip_match=True, slip_out=False)

替换经纪人,如下所示:

import backtrader as bt

cerebro = bt.Cerebro()
#0.5%的百分比滑点设置
cerebro.broker = bt.brokers.BackBroker(slip_perc=0.005)  # 0.5%

4. 示例

包含一个使用订单执行类型市场和使用信号的多头/空头方法的示例。
应该允许理解逻辑, 无滑点运行和供以后参考的初始图:

(1)无滑点
python ./slippage.py
01 2005-03-22 SELL Size: -1 / Price: 3040.55
02 2005-04-11 BUY  Size: +1 / Price: 3088.47
03 2005-04-11 BUY  Size: +1 / Price: 3088.47
04 2005-04-19 SELL Size: -1 / Price: 2948.38
05 2005-04-19 SELL Size: -1 / Price: 2948.38
06 2005-05-19 BUY  Size: +1 / Price: 3034.88
07 2005-05-19 BUY  Size: +1 / Price: 3034.88
08 2005-08-26 SELL Size: -1 / Price: 3258.45
09 2005-08-26 SELL Size: -1 / Price: 3258.45
10 2005-09-13 BUY  Size: +1 / Price: 3353.61
11 2005-09-13 BUY  Size: +1 / Price: 3353.61
12 2005-10-19 SELL Size: -1 / Price: 3330.00
13 2005-10-19 SELL Size: -1 / Price: 3330.00
14 2005-11-14 BUY  Size: +1 / Price: 3405.94
15 2005-11-14 BUY  Size: +1 / Price: 3405.94
16 2006-01-26 SELL Size: -1 / Price: 3578.92
17 2006-01-26 SELL Size: -1 / Price: 3578.92
18 2006-02-03 BUY  Size: +1 / Price: 3677.05
19 2006-02-03 BUY  Size: +1 / Price: 3677.05
20 2006-04-20 SELL Size: -1 / Price: 3820.93
21 2006-04-20 SELL Size: -1 / Price: 3820.93
22 2006-05-02 BUY  Size: +1 / Price: 3839.24
23 2006-05-02 BUY  Size: +1 / Price: 3839.24
24 2006-05-16 SELL Size: -1 / Price: 3711.46
25 2006-05-16 SELL Size: -1 / Price: 3711.46
26 2006-07-04 BUY  Size: +1 / Price: 3664.59
27 2006-07-04 BUY  Size: +1 / Price: 3664.59
28 2006-07-27 SELL Size: -1 / Price: 3649.29
29 2006-07-27 SELL Size: -1 / Price: 3649.29
30 2006-07-28 BUY  Size: +1 / Price: 3671.71
31 2006-07-28 BUY  Size: +1 / Price: 3671.71
32 2006-12-04 SELL Size: -1 / Price: 3935.81
33 2006-12-04 SELL Size: -1 / Price: 3935.81
34 2006-12-19 BUY  Size: +1 / Price: 4121.01
35 2006-12-19 BUY  Size: +1 / Price: 4121.01

看第一个成交的原始数据:

2005-03-22,3040.55,3053.18,3021.66,3050.44,0,0

用的是开盘价成交 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值