在 GitHub 上查看

窄幅区间限价括弧策略图

行情停止波动,往往意味着它正在为下一次波动做准备。本图测量每根K线的高度,找出高度收缩到最近几根K线中最小值的那一刻,并用两条价位把这根K线括起来:上方是它的最高价,下方是它的最低价。收盘价先越过哪一条,就由它决定交易方向。

策略概览

  • 已完成的15分钟K线送入三个转换器,分别读取每根K线的最高价、最低价和收盘价。
  • 一个公式用最高价减去最低价,从而把每根K线归结为一个数字:它的振幅。
  • 最低值(Lowest)指标作用于这个数字而不是价格,给出最近六根K线中的最小振幅;再由一个公式乘以挤压系数(Squeeze Factor),得到一根K线必须落入的宽度,才算窄幅。
  • 另一条分支把同样的测量在前一根K线上重建一遍:前值(Previous value)给出前一根K线,两个转换器和一个公式算出它的振幅,另一个前值方块取出最低值指标在当时的读数。
  • 一个逻辑条件把三个答案组合起来:当前K线是窄幅的、它前面那根不是、并且持仓为空。这就是挤压。
  • 出现挤压时,这根K线的最高价和最低价被写入两个变量,并在随后的K线中持续保持这两个价格:这就是括弧。第三个变量将它置为待触发状态。
  • 从下一根K线开始,两个比较方块把收盘价与这两条价位对照;当收盘价越过其中一条、括弧处于待触发状态且持仓为空时,一个逻辑条件放行一笔市价入场。
  • 两个图表面板画出结果:一个显示价格连同括弧价位、委托和成交,另一个显示K线振幅与它的挤压上限。

入场与出场规则

  • 做多入场: K线收盘价高于括弧上沿价位,括弧处于待触发状态,且持仓为空。持仓修改(Position modify)按市价买入下单量(Order Volume)。
  • 做空入场: K线收盘价低于括弧下沿价位,同样要求括弧处于待触发状态、持仓为空。持仓修改按市价卖出该下单量。
  • 离场: 本图没有自己的离场信号。两个入场信号经组合(Combination)方块合并成一路成交流,送入持仓保护(Position protection):由它接管持仓,并在从成交价起算盈利550个价格单位或亏损550个价格单位时平仓。同一路成交流还会解除括弧的待触发状态,因此已经交易过的价位不会被再次交易。

参数

参数 默认值 说明
Candles 00:15:00 整个图所使用的K线周期。
Period 6 最低值指标计算最小振幅所覆盖的K线根数。
Squeeze Factor 1.08 当前K线比最近的最小振幅宽多少,仍可算作窄幅。
Expansion Factor 1.05 前一根K线必须比它自己的最近最小振幅宽多少,挤压才算是新出现的。
Order Volume 1 下单量,以手为单位。
Take Profit 550 从成交价起算的止盈距离,以价格单位计。
Stop Loss 550 从成交价起算的止损距离,以价格单位计。

图表详情

  • 挤压是把一根K线与它自身的近期历史作比较,因此无需事先规定多窄才算窄:挤压系数只说明当前振幅要接近最近的最小振幅到什么程度。
  • 扩张系数(Expansion Factor)守住同一思路的另一侧。没有它,一连串同样平静的K线会不断重复发出信号;要求前一根K线宽于它自己的上限,意味着信号标记的是波动骤然收缩的那一刻,而不是整段平静区间。
  • 最低值指标接收的是一个数字而不是K线,正是这一点让一个普通的价格指标充当了波动率计量器。
  • 括弧由挤压置为待触发,由入场成交解除,其价位一直保留到下一次挤压将它们替换。因此一个括弧要么被交易掉,要么等到新的挤压出现,而不会按K线根数到期。
  • 挤压还要求持仓为空,所以在有持仓运行时价位永远不会被改写;而两个入场方块上的持仓条件也会拒绝在已有持仓之上再下一笔委托。

使用方法

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