交易时段窗口突破策略图
只有在还有对手可以交易的时候,突破才值得参与。本图计算二十根K线的区间,当一根已完成的K线收盘于该区间之外时建立仓位;如果这根K线不属于当日固定的时段窗口,则完全不采取任何动作。入场之后的一切都交给按百分比设定的止损和止盈。
策略概览
- 整张图由单一的五分钟K线序列驱动,并且只发布已完成的K线,因此每一个决策都是在一根不会再变化的K线上做出的。
- 最高值(Highest)与最低值(Lowest)两个指标的周期都是二十根K线,且都只在指标形成后输出,分别承载近期区间的上边界和下边界。
- 前值(Previous value)把每条边界向前平移一根K线。正是这个平移把区间变成了突破位:被判定的那根K线不允许成为它必须突破的那条边界的组成部分。
- 一个转换器读取当前K线的收盘价,两个比较模块把它与两条平移后的边界进行对比。
- 工作时间(Working time)每根K线只回答一个问题——这根K线是否属于交易窗口——并与比较模块在同一节拍上返回一个简单的真或假。
- 两个逻辑条件把突破与时段窗口结合起来,因此窗口之外的价位突破不会产生任何结果,当天剩下的时间里这张图都处于静默状态。
- 两个入场都是固定数量的市价委托,并且都带有“开仓”(Open position)条件,因此委托只会在空仓状态下发出,绝不会对已有仓位加仓或反手。
- 持仓保护(Position protection)接收入场成交和K线收盘价,并从此接管这笔交易,在达到固定的盈利或亏损百分比时把它平掉。
入场与出场规则
- 做多入场: 一根已完成的K线收盘价高于向前平移一根K线取得的二十根K线最高值,并且这根K线属于交易窗口。持仓修改(Position modify)以市价买入设定的委托数量;“开仓”条件只在持仓为空时才放行该委托。
- 做空入场: 一根已完成的K线收盘价低于向前平移一根K线取得的二十根K线最低值,并且满足同样的窗口条件。持仓修改以市价卖出设定的委托数量,同样只在空仓状态下执行。
- 离场: 图中没有出场信号。仓位一旦开出,就由持仓保护接管:它以入场成交价为基准计价,跟踪K线收盘价,并在盈利 1.5% 或亏损 0.5% 时平仓——目标是风险的三倍。窗口只管入场,因此在窗口末端开出的仓位会一直存续到窗口结束之后,直到触及两条边界之一。其间出现的反向突破会被忽略,因为“开仓”条件会拦下任何不是从空仓发出的入场。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Candles | 00:05:00 | K线序列的时间周期;只有已完成的K线才会进入图中。 |
| Breakout High Length | 20 | 计算上边界所用的K线数量,之后再施加一根K线的平移。 |
| Breakout Low Length | 20 | 计算下边界所用的K线数量。保持与上边界周期相同,使两条边沿描述同一个区间。 |
| Session From | 12:00:00 | 交易窗口的开始时刻(当日时间)。在此之前开盘的K线无法触发入场。 |
| Session Until | 21:00:00 | 交易窗口的结束时刻。在此之后开盘的K线无法触发入场;已经开出的仓位不受影响。 |
| Order Volume | 1 | 两个市价入场发送的固定数量。 |
| Take Profit, % | 1.5 | 止盈距离,按入场价的百分比计。 |
| Stop Loss, % | 0.5 | 止损距离,按入场价的百分比计。 |
图表详情
- 两个区间指标都设为仅在形成后输出且只取最终值,因此任何未完成的读数都无法移动边界,前二十根K线也完全不会产生信号。
- 一根K线的平移作用在指标输出上,而不是作用在价格上。向前回退一步的指标值,正是当前这根K线尚未存在时那条边界所处的位置,而突破本来就应该以此为基准来衡量。
- 工作时间读取它所接收数值携带的时间戳。K线携带的是自己的开盘时间,因此只有开盘时间落在窗口之内的K线才算处于窗口之内。
- 两个入场的成交在到达持仓保护之前被合并成一条数据流,因此单个保护模块同时覆盖多头和空头。
- 持仓保护以K线收盘价作为价格输入,因此止损和止盈是按照与入场决策相同的已完成K线价格来衡量的,并且每根K线检查一次。
使用方法
将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。