在 GitHub 上查看

包络线多重交叉策略图

快速均线与慢速均线并不会在某一个干净利落的点位相交:它们在同一区域内反复触碰、分开、再触碰。本图接受这一事实,并把这个区域拆成三条水平线——围绕慢速均线在其上下各画出一条窄带边线,再加上慢速均线本身。每条线都配有自己的交叉块,两个组合块(Combination)把六个彼此独立的交叉汇聚成一条多头信号流和一条空头信号流,于是整条信号阶梯最终只汇入一对下单块。

策略概览

  • 单一交易品种的已完成K线同时送入两条指数移动平均线(一快一慢),以及一个从同一根K线中取出收盘价的转换块。
  • 两个公式块取慢速均线,按固定比例上下缩放,得到上包络线和下包络线;慢速均线位于两者之间,于是图中有三条水平参考线,而不是一条。
  • 三个交叉块分别盯住快速均线上穿下包络线、上穿慢速均线和上穿上包络线,每个块使用自己的一对输入。
  • 另外三个交叉块处理同样的三条线,但输入互换——线在上、快速均线在下——因此它们报告的是快速均线下穿这些线。
  • 一个组合块把三个上穿合并成一条信号流,另一个组合块把三个下穿合并起来;从这里开始,整条阶梯在每个方向上只剩一路信号。
  • 每条信号流都要经过收盘价与快速均线的比较来确认,因此只有当价格位于快线的同一侧时,穿越才算作开仓信号。
  • 开仓是在空仓状态下以固定数量发出的市价委托;反方向的信号流则不经确认,直接驱动一个平仓块。
  • 持仓保护块(Position protection)接管每一笔开仓成交,为其配上按百分比计算的止盈和跟踪止损。

入场与出场规则

  • 做多入场: 多头信号流触发:快速均线上穿了下包络线、上穿了慢速均线,或上穿了上包络线。比较块确认这根K线收盘于快速均线之上,两个结果在一个逻辑条件中汇合,持仓修改块(Position modify)便按下单数量以市价买入。其中的开仓设置只在持仓为空仓时才放行这笔委托。
  • 做空入场: 空头信号流以同样的方式触发,只是穿越方向完全镜像:快速均线下穿了上包络线、下穿了慢速均线,或下穿了下包络线。比较块确认这根K线收盘于快速均线之下,持仓修改块便从空仓状态按下单数量以市价卖出。
  • 离场: 有两件互不相干的事情可以结束一笔交易。反方向的信号流不经价格确认便触发平仓块:任何一次下穿都会平掉多头持仓,任何一次上穿都会平掉空头持仓。与此同时,持仓保护块盯着开仓成交,读取收盘价,并在止盈或跟踪止损处了结交易——以先到者为准。

参数

参数 默认值 说明
Candles 00:15:00 其余全部计算所依据的K线序列周期。
Fast EMA Length 10 快速指数移动平均线的周期——负责实施穿越的那条线。
Slow EMA Length 30 慢速指数移动平均线的周期——带子围绕其绘制的那条线。
Envelope Buffer 0.003 带子的半宽,以慢速均线的比例表示:0.003 表示包络线位于其上方和下方各 0.3% 处。
Order Volume 1 两个开仓方向共用的委托数量,以手为单位。
Take Profit, % 1.5 止盈距离,按开仓价格的百分比计。
Stop Loss, % 0.8 止损距离,按开仓价格的百分比计;当持仓向有利方向变动时,它会跟随移动。

图表详情

  • 正是这两个组合块让整条阶梯保持可读。没有它们,六个交叉中的每一个都得各自连线到下单块;而增加第四条水平线,就意味着要把图的整个右半部分重画一遍。
  • 交叉块会报告穿越的方向,下穿到达时是一个负值信号,而下单触发会悄无声息地把它忽略掉。正因如此,下穿这一组才做成三个输入互换的独立块,而不是把上穿那一组取反。
  • K线只订阅已完成的。尚未走完的K线在更新时带的是该K线开盘时刻的时间戳,而时间戳早于当前时刻的委托会被拒绝。
  • 开仓使用的是开仓条件,因此在已有交易进行时到来的信号不会造成任何后果:该块报告数量无效,不会发出委托。仅这一项设置,就完成了在开仓条件内显式加一层持仓过滤所要做的工作。
  • 这条带子是刻意做窄的。它是慢速均线周围的一个缓冲区,而不是波动率通道,所以多出的两条线会在普通交叉附近就触发,起到加厚信号的作用,而不是取代它。

使用方法

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