延迟反转交易时段策略图
本图在信号与委托之间放入了两样东西:一段等待和一只时钟。围绕移动平均线画出一条百分比通道,价格离开该通道即被视为反转。反转发生的当时并不交易,而是交给延迟模块,由它数满固定数量的已完成K线,只有从另一端输出的脉冲才被允许接近下单模块——而且还要工作时段模块判定此刻处于交易时段之内。
策略概览
- 整张图的每一个分支都由同一条K线序列驱动:周期三十分钟,且只取已完成的K线。
- 移动平均线给出通道中轴;一个常量保存灵敏度,两个公式把二者换算成上下两条边界——即均线加上、减去均线乘以灵敏度所得的值。
- 两个交叉模块把收盘价与这两条边界作比较。其中一个在收盘价自下向上穿越上边界时触发;另一个的接线方向相反,把下边界接到向上方向的输入端,因此它在收盘价向下跌破下边界时触发。
- 每次交叉都会给各自的延迟模块上膛。延迟模块对上膛之后到达的已完成K线计数,数满即释放一个脉冲,于是信号在之后才被执行,而不是在产生它的那根K线上执行。
- 工作时段模块读取每根K线的时间,判断该时刻是否处于交易时段之内;一个逻辑非把同一个标志翻转为“时段之外”标志。
- 每个方向各有一个逻辑与,把释放出的脉冲与时段标志合并,因此落在工作时间之外的脉冲会被丢弃,而不是排队等待。
- 开仓通过持仓修改(Position modify)模块以市价委托完成,这些模块被设置为仅在空仓状态下开仓,因此一个延迟信号只开一次仓,同方向的重复脉冲无法叠加加仓。
- 第三个持仓修改模块负责平掉任何已有持仓,它由三个来源驱动:两个方向的延迟信号以及时段之外标志;图表面板绘制K线、均线、两条通道边界、委托和成交。
入场与出场规则
- 做多入场: 收盘价自下向上穿越通道上边界,多头延迟随之上膛。经过设定数量的已完成K线之后,延迟模块释放脉冲;若此刻时钟处于交易时段之内,多头持仓修改模块便按市价买入设定的委托数量。由于该模块仅在空仓时开仓,已有持仓时买入会被跳过——那时同一个脉冲已经转而送到了平仓模块。
- 做空入场: 收盘价向下跌破通道下边界,空头延迟随之上膛。经过设定数量的已完成K线之后脉冲到达,若时钟处于交易时段之内,空头持仓修改模块便按市价卖出设定的委托数量,同样只在空仓状态下执行。
- 离场: 有两样东西会结束一笔交易。任一方向的延迟信号既接到自己的开仓模块,也接到平仓模块,因此一个被延迟持有的、与当前持仓方向相反的反转信号会按市价把仓位平掉;随后的开仓要等待下一个信号,因为开仓模块只在空仓状态下工作。另一样是时钟:工作时段标志一旦变为假,逻辑非模块便在每根K线上触发,平仓模块把持仓平掉,并保持空仓,直到交易时段重新开始。在空仓状态下,平仓模块什么也不做。这里没有止损模块,也没有止盈模块。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Candles | 00:30:00 | 整张图所依赖的那条唯一K线序列的周期。 |
| Average Length | 20 | 绘制通道中轴的移动平均线的周期长度。 |
| Corridor Sensitivity | 0.004 | 通道半宽相对于均线的比例——默认值为每侧百分之零点四。调高它,反转更少见、幅度更大;调低它,边界被穿越的次数会大幅增加。 |
| Long Signal Delay | 2 | 在向上反转与可能触发买入的脉冲之间所计数的已完成K线数量。设为 1 表示下一根K线;数值越大,信号被持有的时间越长。 |
| Short Signal Delay | 2 | 在向下反转与可能触发卖出的脉冲之间所计数的已完成K线数量。 |
| Session Start | 08:00:00 | 工作时段的开始时间。在此之前释放的脉冲会被丢弃,图保持空仓。 |
| Session End | 20:00:00 | 工作时段的结束时间。从这一刻起,时段之外标志会在每根K线上平掉任何已有持仓,直到交易时段重新开始。 |
| Order Volume | 1 | 开仓时发送的委托数量,以手为单位;平仓模块始终平掉全部已有持仓。 |
图表详情
- 交叉模块给出的是事件,而不是状态。它只在两条序列位置互换的那根K线上发声,因此每次反转只给延迟模块上膛一次,而不会在价格停留于通道之外的每根K线上反复上膛。
- 交叉模块也会以假值的形式报告相反的方向,而延迟模块的上膛输入端与下单触发端都会忽略假值,因此某个交叉模块的向下部分既无法给向上分支上膛,也无法触发它。
- 在延迟模块计数期间,第二次上膛会被忽略。于是一连串密集的反转只产生一个脉冲,而不是一列排队的脉冲,计数是真正的暂停,而不是累加。
- K线模块只输出已完成的K线。正在形成的K线的每次更新携带的是该K线的开始时间,据此构造的委托其时间戳落后于模拟器时钟,会被拒绝。
- 交易时段取自K线自身的时间,而不是取自系统时钟,因此回放的行为与实盘运行完全一致,同一张图无需任何改动即可用于回测。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。