在 GitHub 上查看

预备时段箱体策略图

平静的夜盘总要在某处结束。本图先测量市场在两个夜间时点之间保持的区间,等待交易时段开盘,然后一次性进入预备状态——把该箱体的上沿和下沿冻结为将要交易的两个价格。此后它盯住订单簿的最优报价,一旦触及其中一个被冻结的价位,就立即买入或卖出。

策略概览

  • 订阅五分钟K线并带中间更新,最终值(Final value)方块只放行已收盘的K线;图中每一个决策都在完成的K线上做出。
  • 工作时间(Working time)方块标出测量窗口,K线类型的变量(Variable)由该信号触发,因此只有落在夜间窗口内的K线才会到达指标——箱体只由该窗口构建,别无其他来源。
  • 作用于这一过滤后数据流的最高值(Highest)和最低值(Lowest)就是箱体的上沿和下沿,两个变量保存最后的读数,使图的其余部分在测量结束数小时之后,仍能在任意一根K线上读取该箱体。
  • 市场深度(Market depth)用于读取最优卖价和最优买价,另有两个变量按K线节拍保存这两个报价:订单簿在一根K线内会更新数百次,永远无法与基于K线构建的条件对齐。
  • 公式(Formula)把箱体换算成以价格百分比表示的宽度,以及按该宽度度量的边缘余量,因此同样的两项设置,在报价以万计的交易品种和以个位数计价的交易品种上含义相同。
  • 第二个工作时间方块开启交易时段,一个逻辑条件汇总四个答案:箱体足够窄、卖价离上沿有距离、买价离下沿有距离、且持仓为空仓。
  • 标志位(Flag)把该条件变成每个时段仅一次的预备事件,并冻结两个价位;其背后的箱体可能在下一个夜盘被重新绘制,但已预备的价位不会移动。
  • 入场是在空仓状态下、当保存的报价触及其被冻结的价位时发出的市价委托单,此后由持仓保护(Position protection)接管该笔交易。

入场与出场规则

  • 做多入场: 在交易时段之内,箱体已预备且持仓为空仓,按K线保存的最优卖价触及被冻结的上沿价位。持仓修改(Position modify)以市价买入相应的委托量。
  • 做空入场: 在同一交易时段之内,且同样处于已预备与空仓的条件下,按K线保存的最优买价跌至被冻结的下沿价位。持仓修改以市价卖出相应的委托量。
  • 离场: 图上没有离场信号。仓位一旦建立,就由持仓保护接管,并在距入场价百分之一的止盈或止损处平仓,其当前价取自订单簿而非K线。成交的入场同时把预备状态写回零,因此一个交易时段只产生一笔交易,下一次预备要等到第二天。

参数

参数 默认值 说明
Candles 00:05:00 整张图所运行的K线序列的时间周期。
Box From 02:00:00 测量箱体的窗口的开始时间。
Box Until 07:59:59 测量窗口的结束时间;在此之前开盘的最后一根K线仍计入。
Box Top Length 72 箱体上沿取自测量窗口中的多少根K线。
Box Bottom Length 72 箱体下沿取自测量窗口中的多少根K线。
Max Box Width, % 3 仍被视为足够平静、可以交易的最大箱体宽度,以价格百分比表示。
Edge Margin, % 20 预备时刻价格必须离边沿多远,以箱体高度的百分比表示。
Session From 08:00:00 允许预备和入场的交易时段的开始时间。
Session Until 20:00:00 交易时段的结束时间;此后标志位被释放,预备状态被清除。
Order Volume 0.01 两个入场方向发出的委托量。
Take Profit, % 1 止盈距离,以入场价的百分比表示。
Stop Loss, % 1 止损距离,以入场价的百分比表示。

图表详情

  • 箱体是对落入测量窗口的K线按所设长度计算的滚动最高值与最低值,而不是每晚从零重建的区间。窗口早期,前一夜的尾部仍留在缓冲区中;到窗口结束时,读数恰好对应刚刚测量的这一夜,而正是此时它们被使用。
  • 预备状态以数字保存,而不是以标志位的输出保存。标志位只发出一次真值,随后保持沉默,因此入场条件能够在每根K线上读取的,是这样一个变量:预备时写入 1,时段结束时写入 0,入场之后同样写入 0。
  • 凡是进入比较或逻辑条件的数值,都通过保存用的变量在每根收盘K线上重新发出。比较只有在其两侧自上次触发以来都有新值到达时才会触发,因此每天只捕获一次的价位必须逐根K线地继续传递下去。
  • 预备条件在交易时段的每一根K线上检查,而不只是在时段的第一分钟:价格首次稳稳处于窄箱体内部的那一刻,就是价位被冻结的时刻。因此预备与最早可能的入场之间,始终至少相隔一根K线。
  • 入场是在触及价位时发出的市价委托单,而保护性离场按入场价的百分比设定,而不是按箱体的对侧边沿,因此交易的两端以相同单位表示,更换交易品种后依然成立。

使用方法

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