在 GitHub 上查看

跨品种 MACD 比较策略图

该图只交易一个品种,但依据两个品种作出决策。在被交易品种和参考品种上分别计算 MACD,所比较的不是两者的价格,而是两者的动量:当被交易的一方在快线读数上较弱、而在慢线读数上仍然较强时,图会把这视为尚未收敛的差距并买入。反向情形则卖出。

策略概览

  • 指数(Index)模块按表达式构建一个合成品种,并把它交给第二个 K 线模块——第二个品种正是通过这种方式才进入图中。
  • 两条腿都以相同的时间框架订阅 K 线序列:一条基于策略品种,另一条基于 Index 生成的品种。
  • 同步(Sync)为每条腿各保留一条线路,并让两者一起输出,因此被交易品种的读数与参考品种的读数始终描述同一根 K 线,而不是哪条序列先到就用哪条。
  • 每条腿各有自己的 MACD,转换器从中取出三个数值:MACD 线、信号线,以及其下方那根 K 线的收盘价。
  • 每条腿再用两个公式把它们换算成该腿自身价格的百分比——柱状图,即 MACD 减信号线,以及信号线本身。当两个品种的价格相差若干数量级时,直接比较原始数值毫无意义。
  • 四个变量在被交易品种的 K 线上读取这四个百分比,因此比较以及随后的委托都由被交易的品种来定时,而不是由最后收盘的那条腿。
  • 比较模块把两条腿并排放在一起——柱状图对柱状图、信号线对信号线——四个逻辑条件再加入持仓状态,每个动作一个闸门:开多、开空、平多、平空。
  • 入场为固定数量的市价委托,且只在空仓时发出;反向读数负责平仓,持仓保护(Position protection)按入场价的百分比带有止盈和止损。

入场与出场规则

  • 做多入场: 在被交易品种的一根 K 线上,其柱状图位于参考柱状图之下,而其信号线位于参考信号线之上,且当前为空仓。快线读数表明被交易的一方落后,慢线读数表明它仍然领先,图便把这一对读数视为有待补上的滞后。持仓修改(Position modify)以市价买入委托量。
  • 做空入场: 在被交易品种的一根 K 线上,其柱状图位于参考柱状图之上,而其信号线位于参考信号线之下,且当前为空仓。持仓修改以市价卖出委托量。
  • 离场: 有两条离场途径,任何一条都可能先触发。反向读数会平掉持仓:多头在柱状图领先于参考、而信号线落后于参考时离场,空头则为相反的一对。二者都是设为平仓的持仓修改,因此数量取自持仓本身,一次委托内不会反手——图回到空仓状态,等待新的信号。与此无关地,持仓保护跟随每一笔入场成交,在相对入场价盈利 1.6% 或亏损 0.8% 时平仓。

参数

参数 默认值 说明
Reference Security TONUSDT@BNBFT * 1 指数模块据以构建参考品种的表达式。它指定一个品种并乘以 1,价格因此保持不变,同时使该设置仍然是一个算术表达式。
Traded Candles 00:15:00 被交易 K 线序列的时间框架,也是每笔委托构建所依据的节奏。
Reference Candles 00:15:00 参考 K 线序列的时间框架。它必须与被交易的一致,否则两条腿永远不会落入同一根 K 线。
Sync Interval 00:15:00 同步把两条腿归入的时间桶长度;与 K 线的长度相同。
Traded MACD Fast 12 在被交易品种上构建的 MACD 的快速移动平均长度。
Traded MACD Slow 26 同一 MACD 的慢速移动平均长度。它与快速长度之间的差距决定了一段行情要持续多久,柱状图才会作出反应。
Traded MACD Signal 9 同一 MACD 的信号线长度;柱状图正是相对这条线来度量的。
Reference MACD Fast 12 在参考品种上构建的 MACD 的快速移动平均长度。每条腿各自带有三个长度,因此两者可以分别调整,但只有在两者设置相同时,两个柱状图的比较才有意义。
Reference MACD Slow 26 参考 MACD 的慢速移动平均长度。除非有意在不同的周期上度量这两个品种,否则应使其与被交易的一致。
Reference MACD Signal 9 参考 MACD 的信号线长度。出于同样的理由,应使其与被交易的一致。
Order Volume 1 委托数量,以手为单位。
Take Profit, % 1.6 止盈距离,以入场价的百分比表示。
Stop Loss, % 0.8 止损距离,以入场价的百分比表示。

图表详情

  • 两个 K 线模块都只接受已完成的 K 线。未完成 K 线的更新携带的是该 K 线开盘的时间,据此构建的委托会比其发出的时刻更早。
  • 同步按其中各数值的最早时间放行一组数据,正因如此,同步的输出不会直接到达委托:四个变量会在被交易品种的 K 线上重新读取这些数值,委托正是按那根 K 线的节奏构建的。代价是比较所用的是最后一对已完成的读数,相对它所作用的那根 K 线滞后一根。
  • 每个保存常量的变量——零和委托量——都由被交易品种的 K 线触发。没有触发源的变量会保留其数值而永不输出,等待它的条件也就永远无法凑齐。
  • 两个 MACD 模块都只输出已形成的最终值,因此比较在每条腿都具备完整指标之后才开始,并且不会在一根 K 线内部变动。
  • 每条同步线路的两端都要连接。送入而从未取出的数值会让该模块一直等待它,策略将无法启动。

使用方法

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