在 GitHub 上查看

多周期 SMA 投票策略图

单条均线转为上行说明不了什么;三条均线在三个不同周期上同时转为上行,才是值得交易的趋势。每个周期投出正一、负一或零的一票,同步(Sync)把三票汇集成一组,只有当三票一致时才开仓。

策略概览

  • 三个 K 线模块以五分钟、十五分钟和一小时的周期读取同一个标的,每个模块都只放行已收盘的 K 线。
  • 每条序列各自输入一条简单移动平均线,前值(Previous value)模块则保存这条均线在上一根 K 线时的取值。
  • 一个公式把这一对数值变成一票:均线高于此前取值时为正一,低于时为负一,没有变动时为零。
  • 五分钟和十五分钟的投票先存入变量,由小时投票放行,因此三条线路到达同步时都属于同一个时刻。
  • 同步为每一票保留一条线路,并让三者一同输出;若没有它,小时读数会比五分钟读数晚一小时到达,三者根本无法比较。
  • 同步之后,每一票都与零比较,两个逻辑条件提出图中唯一关心的问题:三票是否指向同一方向。
  • 该结论被锁存到下一根已收盘的五分钟 K 线上——所有委托都以这一节拍标注时间——随后持仓调整(Position modify)在空仓状态下以市价开仓。
  • 在同一五分钟节拍上采样的持仓与零比较:当持仓在场而结论相反时,以市价平仓,新的方向则在随后一根 K 线上建立。

入场与出场规则

  • 做多入场: 在小时节拍上三票均为正一:五分钟、十五分钟和小时均线各自都高于自己上一根 K 线的取值。该结论被带到下一根已收盘的五分钟 K 线,持仓调整(Position modify)在那里以市价买入委托量,且仅在空仓状态下执行。
  • 做空入场: 在同一节拍上三票均为负一:每条均线都低于自己上一根 K 线的取值。在下一根已收盘的五分钟 K 线上,持仓调整以市价卖出委托量,同样仅在空仓状态下执行。
  • 离场: 没有止盈、止损,也没有定时器。持仓一直保留,直到三个周期反向排列为止:相反的结论连同持仓比较,会在交易 K 线上以市价平仓;待持仓重新归零后,新方向的入场在下一根 K 线上完成。三票不一致时什么都不改变,持仓保持原样。

参数

参数 默认值 说明
Fast Candles 00:05:00 最快一票的周期,也是执行结论并为委托标注时间的节拍。
Medium Candles 00:15:00 中间一票的周期。
Slow Candles 01:00:00 最慢一票的周期,也是汇集并统计三票的节拍。
Fast SMA Length 13 五分钟均线的平均长度。
Medium SMA Length 13 十五分钟均线的平均长度。
Slow SMA Length 13 小时均线的平均长度。
Order Volume 1 委托规模(以手为单位),两个入场方向共用;平仓时按持仓的实际数量了结。

图表详情

  • 三条均线都只输出已形成的最终值,因此仍在生成中的 K 线永远无法改变任何一票。
  • 把每个周期化简为其斜率的符号,才使三者具有可比性:小时均线和五分钟均线处于不同的量级,而正一和负一不存在这个问题。
  • 两个较快的投票通过一个由小时投票放行的变量进入同步。这是刻意为之:若各条线路逐个到达,同步就会一直持有一组永远凑不齐的数据,其后的所有环节都不会再触发。
  • 同步会为放行的这组数据打上它所属时刻的时间戳,而到小时收盘时,这个时刻已经落后于当前时间。通往委托的链路上没有任何环节读取该时间戳——结论会被第二次锁存到承载交易的那根已收盘五分钟 K 线上。
  • 两个方向的入场都以持仓状况为条件,因此在每根五分钟 K 线上重复出现的结论不会叠加委托:只要持仓还在,重复的信号就直接被拒绝。

使用方法

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