在 GitHub 上查看

报价动量同步策略图

动量以相邻两根K线收盘价之间的变化来度量。本图把刚刚完成的那根K线的收盘价与它之前一根的收盘价相比较,并要求价格朝着前一根K线已有的方向,至少走出固定数量的价格单位。所有读数都取自同一条五分钟节拍,因此参考价格、方向过滤和持仓检查始终保持同步,信号绝不会由属于不同时刻的数值拼凑而成。

策略概览

  • 所交易品种的已完成五分钟K线,是本图订阅的唯一行情数据,下游的一切都按这一节拍运行。
  • 前值 (Previous value) 保存的是整根前一K线,而不是单个数字,两个转换 (Converter) 模块从中读取它的收盘价和开盘价。
  • 这个前一收盘价就是参考价格:一个公式 (Formula) 在它之上加上 Momentum Step,另一个公式减去同一步长,从而得到当前这根K线的多头触发价位和空头触发价位。
  • 第三个转换模块读取刚刚完成的那根K线的收盘价,两个比较 (Comparison) 模块把它与这两个价位相对照。
  • 方向过滤取自前一根K线的形态:它的收盘价与自身开盘价相比,因此阳线只允许做多,阴线只允许做空。
  • 持仓 (Position) 模块与零的比较说明账户是否为空仓,这使本图不会在已有的交易之上继续加仓。
  • 两个逻辑条件 (Logical condition) 汇集方向、动量和空仓三项,各自驱动一个持仓修改 (Position modify) 模块,按市价以固定数量开仓,并且只从空仓开始。
  • 持仓保护 (Position protection) 接收入场成交和当前收盘价,按固定百分比的止盈或止损把这笔交易平掉;本图没有其他离场方式。

入场与出场规则

  • 做多入场: 前一根K线收盘价高于自身开盘价,刚刚完成的那根K线收盘价高于前一收盘价加上 Momentum Step,且持仓为空仓。持仓修改模块按市价买入 Order Volume。
  • 做空入场: 前一根K线收盘价低于自身开盘价,刚刚完成的那根K线收盘价低于前一收盘价减去同样的步长,且持仓为空仓。持仓修改模块按市价卖出 Order Volume。
  • 离场: 本图中没有离场信号。自入场成交的那一刻起,这笔交易就归持仓保护模块管理,它会在相对入场价 0.5% 的盈利处或 0.5% 的亏损处将其平掉。保护按K线收盘价计价,因此这些价位每根K线检查一次;在持有持仓期间,反向的读数会被忽略:下一次入场要等到持仓重新变为空仓。

参数

参数 默认值 说明
Candles 00:05:00 整个图形所运行的K线序列的时间框架。
Momentum Step 5 以价格单位计的、相对前一收盘价的距离;已完成的K线必须越过它,才允许入场。
Order Volume 0.01 下单数量,以手计。
Take Profit, % 0.5 止盈距离,以入场价的百分比表示。
Stop Loss, % 0.5 止损距离,以入场价的百分比表示。

图表详情

  • 前值模块被设置为保存一根K线,而不是一个数字,各个字段随后由转换模块读取;正是这一点,使参考价格和方向过滤来自同一根K线。
  • 入场条件写成两个价格水平,而不是写成与某个阈值的差值——这在算术上是同一件事的另一种看法,同时让图表能显示出产生每次入场的那个价位。
  • 两个入场模块都只从空仓开仓,因此在持仓交易期间重复出现的信号不会带来任何代价,也不会为反手或加码发出任何订单。
  • 每个常量都由K线序列触发,因此它在每根K线上发出自己的值;一个从不触发的常量会让它所在的比较缺少第二个操作数,条件也就永远无法成形。
  • Momentum Step 是以价格自身单位计的绝对距离,而不是百分比,因此在报价数量级不同的品种上必须重新调整;而止盈和止损是百分比,可以原样沿用。

使用方法

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