带冷却锁的趋势切换
在快速的K线序列上,两条指数移动平均线交叉的次数远多于趋势真正改变的次数,而在同一价位附近接连出现的交叉会让账户塞满互相抵消的入场。本示意图取用一次交叉,把它消耗掉,然后把这一方向锁定固定根数的K线。锁由标志块(Flag)担任,重新打开它的倒计时由延迟值块(Delay value)完成,而启动倒计时的是组合块(Combination)——它把两个方向的成交合并成一条名为“发生了一次入场”的信号线。
策略概览
- 同一序列的已完成K线送入一条快速和一条慢速指数移动平均线;示意图中没有任何环节会对仍在形成中的K线作出反应。
- 两个交叉块(Crossing)读取同一对均线,只是输入端互换,因此其中一个恰好在快线上穿慢线的那根K线上为真,另一个恰好在快线下穿慢线的那根K线上为真。
- 持仓块(Position)与零比较,给出账户是空仓、多头还是空头,正是这个答案把一次交叉从单纯的观察变成被允许的信号。
- 每个方向各有一个标志块。入场信号是它的触发端,而标志块只在第一次被置位时放行,因此该方向的第二个以及此后的每一个信号都被静默丢弃。
- 入场由持仓修改块(Position modify)完成,它只在账户空仓时开仓,从而让被允许的信号与真正下达的委托保持一致。
- 两个入场块把各自的成交送入同一个组合块,这一条信号线既装载延迟值块,又把成交交给持仓保护块(Position protection),并在图表上画出成交点。
- 延迟值块在成交之后开始计数已完成的K线,计数走完时发出一个脉冲;该脉冲接入两个标志块的复位端,两个方向随即重新开放。
- 持仓期间出现的反向交叉由第二个组合块汇集并平掉这笔交易,而止盈与止损距离可以让它更早结束。
入场与出场规则
- 做多入场: 在账户空仓时,快线在一根已完成K线上上穿慢线。把这两个事实连接起来的逻辑条件触发多头方向的标志块;如果该标志块仍被此前的多头入场锁着,信号就到此为止,不会下达任何委托。否则标志块触发一次,持仓修改块按设定的数量以市价买入,标志块则保持置位,直到倒计时将其释放。
- 做空入场: 在账户空仓时,快线在一根已完成K线上下穿慢线。信号按同样的规则通过空头方向的标志块,持仓修改块以相同数量按市价卖出。两个标志块彼此独立,因此多头方向被锁住并不妨碍开出空头。
- 离场: 持多头时的下穿与持空头时的上穿在一个组合块中汇合,触发一个设为平仓的持仓修改块,平仓数量由它自行算出。持仓保护块在入场成交上并行运行,可在止盈或止损距离处更早结束这笔交易。任何反手都不会用一笔委托完成:仓位先回到空仓,反方向要等到某次交叉发现账户空仓且该方向未被锁定时才会开出。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Candles | 00:05:00 | 示意图中一切所依据的K线序列的周期。它同时决定冷却时间的单位——冷却按该序列的K线根数计算。 |
| Fast EMA Length | 14 | 快速指数移动平均线的长度。 |
| Slow EMA Length | 40 | 慢速指数移动平均线的长度。要让它明显大于快线;长度相近的均线会不停交叉,过滤工作就会全落到锁存器身上。 |
| Cooldown Candles | 72 | 一次入场成交之后该方向保持锁定的已完成K线根数。调高会让交易变得稀疏,调低则会让震荡行情连续产生多次入场。 |
| Volume | 1 | 单次入场的规模,以合约单位计。两个方向都使用该值。 |
| Take Profit, % | 1.5 | 止盈距离,按入场价的百分比计。 |
| Stop Loss, % | 1 | 止损距离,按入场价的百分比计。 |
图表详情
- 标志块从不发出 false。它是锁存器而不是闸门:它只在被置位的那一刻给出输出,凡是被它拦下的,都是以保持沉默的方式拦下的——正因如此,重新打开一个方向靠的是复位端,而不是逻辑非。
- 延迟值块只能从空闲状态开始计时。倒计时进行中落地的成交不会延长它,因此这段暂停是从一连串成交中的第一笔算起,而不是从最近一笔算起。
- 倒计时由K线序列本身驱动:K线进入计数输入端并使其递减,因此暂停以根数表示,跟随所选周期而不是挂钟时间。
- 复位脉冲同时打开两个方向,而两个方向是分别锁定的。在暂停期间从未交易过的那个方向,会被另一个方向付出代价换来的脉冲解锁——这正是按方向分设锁存器与单一全局计时器之间刻意保留的差别。
- 入场条件要求账户空仓,入场块也有意拒绝在其他状态下工作:锁存器会被信号消耗掉,因此一个无法成交的信号会白白浪费该方向的暂停。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。