在 GitHub 上查看

逐笔尖峰反向策略图

尖峰在收盘价上是看不出来的。价格可以偏离二十分钟前所处的位置半个百分点,又在这一分钟结束之前回到原处,而记录下它的那根 K 线看上去与其他 K 线并无二致。本图改为盯住逐笔成交:每一笔已成交的价格都与二十根 K 线之前的收盘价相比较,第一笔偏离得足够远的成交就为交易的一侧上膛。委托随后反向发出——上涨则卖出,下跌则买入——并在尖峰出现的那根 K 线收盘时送出。

策略概览

  • 一分钟 K 线序列是本图的时钟。只有已完成的 K 线才会继续向下传递,因此参考价、释放计时以及已上膛信号变成委托的时刻,全部以已收盘的 K 线来计数。
  • 逐笔成交与 K 线一同订阅,一个转换器从每一笔已成交中读出价格。该成交价、而不是 K 线收盘价,才是整张图的当前价格。
  • 一个前值(Previous value)方块保留二十根 K 线之前的那根 K 线,转换器取出它的收盘价。这就是当前价格所要比较的参考值,它足够久远,使得单独一分钟的噪声无法触及阈值。
  • 一个变量保存该参考值,并在每一笔成交时将它释放,于是其后的公式两个输入都按逐笔成交的节奏刷新。公式以百分比算出最新成交与参考收盘价之间的距离,并设有保护:参考值为零时完全不产生结果。
  • 第二个公式对该百分比取负,这样一个阈值常数即可服务于两个方向:与它比较回答的是上涨的情形,对取负后的数值做同样的比较则回答下跌的情形。
  • 每个方向各有一个标志(Flag)。第一笔越过阈值的成交会置位其标志,标志发出单个脉冲;同一波行情之后的每一笔成交都被忽略,因此一次尖峰只产生一个决策,而不是一百个。
  • 该脉冲为一个设为一个数值的 N 值(N values)方块上膛,方块在下一根完成的 K 线上把它释放出去。决策在 K 线之间、在逐笔成交上作出,而委托则在 K 线上送出。
  • 持仓修改(Position modify)在开仓条件下以市价开仓,因此已经持有仓位的图绝不会再加仓。随后由持仓保护(Position protection)接管这笔交易,它的 Price 接口同样由逐笔成交馈入。

入场与出场规则

  • 做多入场: 最新一笔已成交价格低于二十根 K 线之前的收盘价,且距离达到或超过阈值,同时下跌标志处于空闲。标志发出它唯一的那个脉冲,单值保持在当前这根 K 线收盘时将其释放,持仓修改以市价买入设定的委托手数。
  • 做空入场: 最新一笔已成交价格高于二十根 K 线之前的收盘价,且距离达到或超过阈值,同时上涨标志处于空闲。标志发出它唯一的那个脉冲,并在尖峰出现的那根 K 线收盘时,由持仓修改以市价卖出设定的委托手数。
  • 离场: 没有离场信号,也没有自己的平仓规则。持仓保护接过开仓成交,并在距成交价 0.6% 处设置止盈、0.3% 处设置止损;由于它的 Price 接口由逐笔成交馈入,两个价位在每一笔已成交上都会被检验,而不是每分钟一次。哪一个先被触及,就以市价委托平掉仓位,图在释放计时走完之前很久就已回到空仓。

参数

参数 默认值 说明
Candles 00:01:00 K 线序列的时间框架。它是本图的时钟:参考收盘价、释放计时以及已上膛信号变成委托的时刻,都以这些 K 线来计数。
Lookback Bars 20 参考收盘价向前取多少根 K 线。数值越大,衡量行情的窗口越长,同样的阈值也越难达到。
Spike Threshold, % 0.3 最新一笔成交需要离参考收盘价多远(以百分比计),这波行情才算作尖峰。一个数值同时服务于两个方向。
Cooldown Bars 30 尖峰之后要经过多少根完成的 K 线,标志才被释放、图才可以再次作出反应。
Order Volume 1 委托规模,以手计。
Take Profit, % 0.6 止盈距成交价的距离,以百分比计,在每一笔已成交上检验。
Stop Loss, % 0.3 止损距成交价的距离,以百分比计,在每一笔已成交上检验。

图表详情

  • 从逐笔成交读取当前价格,正是让这一比较变成尖峰探测器的原因。一波偏离三分之一个百分点、又在同一分钟内折返的行情,在收盘价上几乎不留痕迹,但它的每一笔成交都要经过这一比较,而第一笔越线的成交就置位了标志。
  • 参考值取的是二十根 K 线之前的收盘价,而不是上一根之前的那根收盘价。在一分钟之内,即便剧烈的行情幅度也很小,而低到足以对它作出反应的阈值,会在普通噪声上就触发。
  • 正是这些标志让一次尖峰只对应一笔交易。标志会一直保持置位,直到释放计时数满三十根完成的 K 线,因此一波不断延伸的行情不会在上行途中被卖出三次。
  • 尽管决策是在一笔成交上作出的,委托的时点却由 K 线给出:单值保持把已上膛的信号交给它之后第一根完成的 K 线,开仓委托带的就是那根 K 线的时间。
  • 两个保护距离都是成交价的百分比,而不是固定的跳数,因此同样的数字在报价约 65 000 的品种上和报价约 5 的品种上含义相同。

使用方法

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