双品种投票面板策略图
覆盖两个品种的投票面板。每根小时 K 线走完后,每个品种都会与自身上一小时的 K 线在七个价格读数上逐一比较——开盘价、最高价、最低价、收盘价、中间价、典型价和加权收盘价——上涨的读数投出一票看涨,下跌的读数投出一票看跌。两个得分相加成为唯一的判决,交易品种仅凭这个判决买入或卖出。图中没有任何指标:整个决策完全由 K 线价格、算术运算和比较搭建而成。
策略概览
- 两个 K 线(Candles)方块为整张图供给数据。一个运行在策略自身的品种上,也正是被交易的那个;另一个由 Security 变量指向某个指定的品种,因此第二个品种是一项设置,而不是接线上的决定。
- 两条数据流都只取走完的 K 线。用仍在形成中的 K 线去计票,会在一小时之内反复变化,并让由此产生的委托被打上该小时开盘时刻的时间。
- 在每条数据流上,前值(Previous value)方块保存整根往前一步的 K 线,转换器分别从当前 K 线和保存下来的那根 K 线中读出开盘价、最高价、最低价和收盘价。先保存 K 线,再读取它的字段——只有这个顺序才能在每根 K 线上都返回数值。
- 这八个数字进入每个品种各自的一个公式(Formula)。七个 sign() 项,每个读数一项,各自返回 +1、0 或 -1,相加得到的结果就是看涨票数减去看跌票数,落在 -7 到 +7 之间。sign 使得在公式内部进行比较成为可能——公式本身没有办法返回真或假。
- 参考品种的得分由一个关闭了“输入即触发”的变量采样到交易品种的 K 线上:得分到达输入端后停在那里等待,交易 K 线到达触发端时把它放出去。两条数据流永远不会在同一瞬间跳动,正是这一步让第二个品种走在被交易品种的时钟上。
- 第二个公式把两个得分相加成为面板判决,取值在 -14 到 +14 之间,判决与构成它的两个得分一起画在图表上 K 线的下方。
- 一个阈值同时管住两个方向。一次比较把判决与阈值相比,一个单行公式把它的符号翻转,第二次比较再把判决与翻转后的值相比——因此提高这项设置会以相同的幅度同时收紧做多和做空的条件。
- 持仓由一个变量对齐到当前 K 线上,并以三种方式与零比较:空仓允许开仓,多头或空头允许平仓。四个 AND 逻辑门驱动四个持仓修改(Position modify)方块——两个开仓、两个平仓——第二块图表面板把参考品种画在交易品种旁边。
入场与出场规则
- 做多入场: 在一根走完的 K 线上,面板判决高于阈值——两个品种合计把十四票中的明显多数投向上方——并且当前是空仓。做多的逻辑门触发,持仓修改(Position modify)在“开仓(Open position)”条件下以市价买入设定的委托数量,因此随后一根重复同样判决的 K 线不会再往持仓上加码。
- 做空入场: 镜像的情形:判决低于取负后的阈值,十四票中的多数指向下方,并且当前是空仓。做空的逻辑门触发,第二个持仓修改方块以市价卖出设定的委托数量,同样在“开仓”条件下执行。
- 离场: 没有止损,也没有止盈。开出仓位的面板同样负责把它交还回去:持有多头时判决跌到取负后的阈值以下,就触发平仓的逻辑门,平仓(Close position)以市价把整个持仓交还;持有空头时判决升到阈值以上,在另一侧做同样的事。由于平仓方块平掉的是当前敞口而不是卖出一个固定数量,平仓永远不会把仓位翻到反向——面板转向后,图先回到空仓状态,下一根依旧给出同样读数的 K 线才会开出新的方向。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Reference Instrument | TONUSDT@BNBFT | 第二个品种,它的 K 线投出另一半选票;它必须与被交易的品种一起可以从连接中取到。 |
| Traded Candles | 01:00:00 | 交易 K 线的时间框架:读取判决并发出委托的节拍。 |
| Reference Candles | 01:00:00 | 参考 K 线的时间框架。请与交易 K 线保持一致,否则两个得分就是在长度不同的时间段上计出来的,它们的和也就不再是字面上的含义。 |
| Vote Threshold | 2 | 两个品种必须投出多大的多数才会开仓,以及判决必须朝相反方向摆动多远才会把仓位交还回去。它按票数计算,面板一共投出十四票。 |
| Order Volume | 1 | 委托数量,以手为单位。 |
图表详情
- 每个委托方块都被设置为不要求在线连接,因此这张图在历史数据上的表现与在实时行情上一致;若保持默认设置,方块会在回放数据上扣住每一笔交易操作。
- 入场方块带“开仓(Open position)”条件,出场方块带方向相反的“平仓(Close position)”条件。没有条件时,方块会对每一次触发它的持仓变化都动作,一个判决就会变成一串委托。
- 每一个常量——零、阈值和委托数量——都由交易 K 线触发。变量是在它的触发端上发出数值的,而不是在被赋值时发出,因此一个没有被触发的常量会让它旁边的比较在整个运行过程中保持沉默。
- 完全重复、没有变化的读数根本不投票:sign 对未变化的数值返回零,所以只有真实的波动才被计入,某个品种走平的一小时就直接把决定权留给另一个品种。
- 阈值使这块面板从一触即发变成一个过滤器。取零时,图会对最微弱的多数就动作,几乎每根 K 线都反向一次;提高之后,它会一直等到两个品种足够一致,并在这期间的分歧中把仓位持有下去。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。