在 GitHub 上查看

通道确认延迟策略图

信号出现的那一刻并不一定要立即执行。本图在移动平均线上方构建一条波动率通道带,当收盘价突破该带时,本图并不买入。它转而启动一个延迟块,等待固定数量的K线,然后才再次提出同一个问题:价格是否仍在通道带之上?决定交易的是那一刻的答案,而不是当初触发等待的那个答案。

策略概览

  • 整个图表由一条五分钟K线序列驱动,且只使用已完成的K线。
  • 移动平均线给出中轨,标准差给出带宽;一个公式把它们组合成上轨:中轨加上倍数乘以标准差。
  • 两个比较把整幅图景归结为两个问题:收盘价是否高于通道带,收盘价是否低于中轨。
  • 一个逻辑条件把突破与“当前不是多头持仓”结合起来,启动入场延迟块。在该块计数期间,后续突破被忽略,因此一次等待不会被下一根K线重新开始。
  • 延迟块计数结束时发出一个脉冲,第二个逻辑条件把该脉冲与重新计算的突破、已经走完的冷却期以及仍为空仓的持仓状态结合在一起。没有这第二个条件,本图就会盲目买入,依据的是一个可能早已消失的信号。
  • 出场以镜像方式按同样的结构搭建:持有多头时收盘价跌破中轨会启动第二个延迟块,其脉冲与仍然成立的“跌回中轨之下”结合,平掉这笔交易。
  • 与此并行运行着一个冷却计数器:每一次自身成交都把它归零,每根K线都让它递增直到上限,一个比较在足够多的K线过去之前挡住新的入场。
  • 入场和出场都是通过持仓修改(Position modify)块发出的市价委托,从空仓开仓并整体平仓;图表面板绘制K线、两个指标、委托和成交。

入场与出场规则

  • 做多入场: 收盘价收在上轨之上,同时当前不是多头持仓,这会启动入场延迟。设定数量的K线之后,延迟释放出脉冲;如果此刻收盘价仍在通道带之上、自上次成交以来的冷却期已经走完、持仓仍为空仓,持仓修改块就按设定的委托数量以市价买入。
  • 做空入场: 本图没有做空入场。在通道带下方它只是袖手旁观;针对多头持仓它唯一会发出的委托,就是把它平掉的那一笔。
  • 离场: 持有多头时收盘价收在中轨之下,这会启动出场延迟。设定数量的K线之后脉冲到来;如果收盘价仍低于中轨、持仓仍为多头,负责平仓的持仓修改块就以市价卖出全部持仓。这里没有止损,也没有止盈块:本图讲的是等待确认,而结束一笔交易的只有中轨。

参数

参数 默认值 说明
Candles 00:05:00 整个图表所依据的那一条K线序列的周期。
Middle Line Length 40 绘制中轨、同时构成通道带一半来源的移动平均线长度。
Deviation Length 40 决定带宽的标准差长度;通常与中轨长度保持一致。
Band Multiplier 1.1 上轨位于中轨之上多少倍标准差处。调高它可以得到更少、更极端的突破。
Entry Confirm Candles 3 入场延迟在突破与可能买入的复查之间要计数的K线数量。
Exit Confirm Candles 3 出场延迟在跌回中轨之下与可能平仓的复查之间要计数的K线数量。
Cooldown Candles 8 自身成交之后必须经过多少根K线才允许新的入场。
Order Volume 1 入场时发出的委托数量(手);出场始终平掉已有的全部持仓。

图表详情

  • 延迟块统计的是它被启动之后到达它的数值,而不是连续为真的K线。计数期间重复启动会被忽略,触发之后该块会自行复位,因此这段等待是真正的暂停,而不是对合格K线的累计。
  • 正因如此,释放出的脉冲才要与一次重新进行的比较结合,而不是直接去下委托。脉冲说明等待已经结束;比较说明等待的理由是否依然存在。
  • 这里的确认长度被刻意设成大于一根K线,好让延迟块有看得见的作用。把两个延迟都设为一根K线,本图就会在突破那根K线上直接交易,也就是去掉暂停的同一套结构。
  • K线块只输出已完成的K线。正在形成的K线的更新带的是该K线开盘的时间,据此生成的委托时间落后于当前时钟,会被拒绝。
  • 冷却是计数器而不是计时器:一个在K线之间保持数值的变量,由自身成交复位,由一个以冷却长度为上限的公式递增,因此它不会漂移,也永远不会永久性地封死入场。

使用方法

将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。