什么是K线放大器回测模式

Premium账户持有人可以通过使用K线放大器选项在他们的策略回测中获得更真实的订单执行。该工具使用intrabar检查来更深入地了解K线内的价格变动,从而实现更精确的订单成交。选中后,K线放大器模式将仅使用历史K线的 OHLC 值替换经纪商模拟器必须对价格变动做出的假设。

K线放大器使用的intrabar时间周期随图表的时间周期动态调整。 此表列出了用于逐渐更高图表时间周期的intrabar时间周期:

图表时间周期,T

使用的Intrabar时间周期

1S < T < 30S

1S

30S <= T < 5

5S

5 <= T < 30

15S

30 <= T < 60

1

60 <= T < 240

5

240 <= T < D

15

D <= T < W

60

W <= T < 2W

120

T >= 2W

D

表 1. 使用的Intrabar时间周期 

下面是一个使用止损单而不使用K线放大器选项的策略示例:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)
Java

经纪商模拟器在 #10381 K线上放置止损单,并在满足stop = 157.0条件后立即在下一根K线上执行价格为157.0的订单。经纪商模拟器估计,在K线内部,价格从“收”到“低”,然后到“高”(触发入场),然后到“收”。 几根K线后(当前时间周期为11天),触发了以stop price = 156.0平仓的条件:

启用K线放大器时(参数 use_bar_magnifier = true),退场和入场价格不变; 但是,该仓位的退场发生在入场发生的同一根K线内:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)
Java

如果我们检查同一商品的较低时间周期图(60分钟图表,根据intrabar时间周期表)并找到对应于K线10382的时间周期,我们可以看到在每小时周期上,达到157.0并触发入场,价格跌破156.0,满足stop = 156.0条件: 

启用K线放大器后,经纪商模拟器可以在回测期间从较短的时间周期内访问价格变化,使其行为更类似于在同一时间段内对策略进行前向测试时发生的情况。 

可以在策略的“设置/属性”窗口中切换相应的输入来切换K线放大器选项:

请注意,此选项有一个限制:该策略可以从较低的时间周期请求不超过100,000根K线。 这可能适用于具有大量历史数据的商品(其中图表上的K数 * 每个图表K线数的较低时间周期K线数 > 100000),图表上的首次交易可能不受K线放大器的影响。从图表末尾开始,可能受K线放大器影响的K线数可以粗略计算为:

last_bar_index - (100000 / ( 1 / Num of Lower Timeframe Bars per Chart Bar)

结果值将是一个粗略的近似值,因为较低时间周期K线的数量可能因一根K线而有所不同。