随机入场配合逐笔跟踪止损策略图
大多数图把方块都花在判断何时入场上。本图几乎不在这上面花力气,而是把全部功夫放在如何离场。入场只是抛硬币:随机数(Random)方块在每根收盘K线上抽取一个数字,它落在阈值的哪一侧就决定做多还是做空。接下来发生的事才是本例的重点 —— 跟踪止损按逐笔成交的每一笔成交价重新定价,而不是每根K线才调整一次。
策略概览
- 五分钟K线序列是整张图的时钟。每一根收盘K线就是一次抽取、一次入场尝试;除此之外没有任何东西推动入场逻辑。
- 随机数方块由这根K线触发,抽取一个 0 到 1 之间的数字。与阈值比较得到做多一侧,对同一结果取逻辑非(NOT)则得到做空一侧,因此一次比较同时服务两个方向。
- 当前持仓由一个变量按K线节拍采样:变量在输入端保存该值,并在K线触发时释放;把这个保存下来的值与零比较,就是空仓判断。
- 两个逻辑与(AND)门把抛硬币的结果与空仓判断组合起来。它们的输入都按K线节拍到达,因此每个门在每根收盘K线上恰好判定一次。
- 两个入场方块都带有已有持仓条件,因此一个不断给出“是”的门无法在已经存在的仓位上继续加仓 —— 该图同一时间只持有一个仓位,也从不反手。
- 逐笔成交流与K线一同订阅,一个转换器从每一笔已成交的逐笔数据中读出价格。
- 仓位保护(Position protection)通过组合(Combination)接收入场成交,并在其 Price 接口上接收这个逐笔价格。跟踪功能已开启,因此每一笔让交易盈利更多的成交都会把止损拖在自己后面,离场是在K线之间决定的,而不是在K线上。
- 图表面板画出K线、两个入场委托、保护性止损委托以及每一笔成交,因此一个仓位的完整生命过程都能在一块面板上读出来。
入场与出场规则
- 做多入场: 在一根收盘K线上,抽到的数字低于阈值,且保存下来的持仓为零。做多门通过,仓位修改(Position modify)以市价买入设定的委托数量。
- 做空入场: 在同一根收盘K线上,抽到的数字等于或高于阈值 —— 也就是做多比较结果被逻辑非取反 —— 且保存下来的持仓为零。仓位修改以市价卖出设定的委托数量。
- 离场: 没有离场信号,也没有止盈。从第一笔成交起,这笔交易就归仓位保护管理:它把止损设在距入场价 0.5% 的位置,并且在跟踪开启的情况下,随着更优价格成交,多头时向上、空头时向下把止损带着走。一旦有成交价触及该位置,仓位就被市价委托平掉,于是下一根收盘K线又可以自由地再抛一次硬币。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Candles | 00:05:00 | K线序列的时间周期。一根收盘K线就是一次抛硬币、一次入场尝试。 |
| Coin Threshold | 0.5 | 抽到的数字所比较的值。取 0.5 时两个方向概率相同;取更小的值会让做多更少,取更大的值会让做多更多。 |
| Order Volume | 1 | 委托数量,单位为手。 |
| Trailing Stop, % | 0.5 | 跟踪止损距离,以入场价的百分比表示。 |
图表详情
- 随机数方块取自策略自身的随机源,而不是全局随机源,因此同一段历史重放两次,会得到同样的抽取序列和同样的一组交易。
- 止损写成入场价的百分比,而不是固定数量的最小变动价位。同样的价格单位距离,在报价约 65 000 的品种上是一回事,在报价约 5 的品种上则完全是另一回事;只有百分比这种形式在两者上都站得住。
- 用逐笔成交给 Price 接口供数,正是离场足够精细的原因。如果改用K线收盘价来定价,同样的止损每小时只会被检验十二次。
- 止损是连续跟踪的:价格每一次改善都会让它移动,不需要价格先额外走出一段距离才允许止损继续前移。
- 只要仓位为空,每一根收盘K线都会尝试入场,因此该图通常都持有仓位,保护性止损也总有仓位可管。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。