点差过滤入场模板策略图
这里的信号刻意做得很朴素:一根 K 线收盘价高于自身开盘价,同时价格向上穿越一条慢速移动平均线。这张图真正要讲的,是横在信号与下单之间的所有环节——从订单簿读出的点差、把两次入场拉开距离的冷却期,以及按权益而不是固定数字算出来的下单手数。
策略概览
- 已完成的 4 小时 K 线送入一条 50 周期简单移动平均线,以及两个转换器——它们分别从每根 K 线中取出开盘价和收盘价。
- K 线的阴阳由两次比较得出:收盘价高于开盘价为阳线,收盘价低于开盘价为阴线。
- 一个前值块(Previous value)保存上一根 K 线,另一个保存上一次的均线值,于是穿越只需用两次普通比较读出,而不必再挂一个单独的指标。
- 市场深度块(Market depth)提供最优买价和最优卖价,由公式相减得到点差。结果存入一个变量,并由 K 线触发释放,因此入场条件所比较的点差与其余条件属于同一时刻。
- 策略盈亏块(Strategy P&L)写入一个承载已实现盈亏的变量,一个公式把它加到初始资金上,第二个公式再把这份权益换算成下单手数:权益乘以风险比例,除以收盘价,保留三位小数。
- 由一个变量和 min(a + 1, n) 公式构成的计数器,统计自上一次成交以来经过的 K 线数量,在满八根之前禁止新的入场。
- 两个方向的入场都只在空仓状态下触发,因此这张图同一时间只持有一笔仓位,也从不加仓。
- 出场条件是出现反向颜色的 K 线,仓位保护块(Position protection)在此之上再加上 0.7% 的止盈和 0.5% 的止损。
入场与出场规则
- 做多入场: 一根阳线,其上一根收盘价不高于上一次的均线值,而本根收盘价高于当前均线值,同时点差不超过限制、当前处于空仓、冷却期已过。仓位调整块(Position modify)按算出的手数以市价买入。
- 做空入场: 一根阴线,其上一根收盘价不低于上一次的均线值,而本根收盘价低于当前均线值,点差、空仓和冷却方面的条件与多头相同。仓位调整块(Position modify)按同样算出的手数以市价卖出。
- 离场: 阴线平掉多头,阳线平掉空头:两个条件汇入一个组合块(Combination),触发同一个设为平仓的仓位调整块(Position modify),因此两个方向都不需要各自的出场模块。仓位保护块(Position protection)独立盯着入场成交,可以在盈利 0.7% 或亏损 0.5% 时更早了结这笔交易。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Candles | 04:00:00 | 整张图所使用的 K 线周期。 |
| SMA Length | 50 | 与收盘价作比较的简单移动平均线的周期长度。 |
| Spread Limit | 50 | 仍允许入场的最大点差,以价格单位计。对报价点差较宽的品种可以调高。 |
| Start Capital | 1000000 | 权益计算的起点资金;交易前请把它设为账户的真实规模。 |
| Risk Fraction | 0.3 | 单笔仓位所投入的权益份额,以小数表示:0.3 即百分之三十。 |
| Cooldown Bars | 8 | 一笔成交之后需要经过多少根已完成的 K 线,才允许下一次入场。 |
| Take Profit, % | 0.7 | 止盈距离,按入场价的百分比计。 |
| Stop Loss, % | 0.5 | 止损距离,按入场价的百分比计。 |
图表详情
- K 线模块共有八个下游:均线、两个转换器、保存上一根 K 线的前值块、点差变量、已实现盈亏变量、冷却计数器和图表面板。
- 订单簿的刷新频率远高于 K 线,所以它给出的点差不会被直接拿去比较。一个变量记住最新值,并在 K 线收盘时释放,这样入场条件的每一项都走在同一个时钟上。
- 已实现盈亏变量从零开始,只有在第一笔交易平仓之后才会取到数值,这样手数公式从第一根 K 线起就有输入。
- 两个入场模块共用同一个手数公式,因此多头和空头按同一条规则确定手数。
- 冷却计数器由策略成交模块复位,也就是说任何一笔成交——无论是入场还是保护性出场——都会重新开始八根 K 线的等待。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。