1、基本原理
1)在今天的收盘时,计算两个值:最高价-最低价,收盘价-最低价;取这两个值较大的值,乘以k值,计算后的值称之为触发值;
2)在第二天开盘时,记录开盘价;当价格超过“开盘价+触发值”时马上买入,或者价格低于“开盘价-触发值”时马上卖空;
2、公式
Dual Thrust在Range的设置上,引入前N日的四个价位,Range = Max(HH-LC,HC-LL)来描述震荡区间的大小。
其中HH 是N日High的最高价,LC是N日Close的最低价,HC是N日Close的最高价,LL是N日Low的最低价,如下图所示。

这种方法使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪。Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。具体分为两步来实现:
当K1<K2时,多头相对容易被触发,当K1>K2时,空头相对容易被触发。因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。
3、优化
1)因为是一个趋势跟踪,可以引入ADX指标来在大概率出现趋势的时候缩小K值,在震荡环境下扩大K值,来减少开仓。
2)减少同一天的二次开仓。亏损不加仓,盈利加仓,但是不超过5个仓位。
3)设置保护性止损。
4、策略
策略:
(1)当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;
(2)当价格向下突破下轨时,如果当时持有多仓,则先平仓,再开空仓;如果没有仓位,则直接开空仓;
策略的核心代码如下:

14年1月1日至今的回溯结果如下:

策略收益还是不错的,最大回撤是21.16%。
5、改进Dual Thrust策略
在前人的基础上,初始策略中Ks、Kx的值均为0.7,然后加入绝对值止盈止损,加入KDJ指标,对市场趋势进行跟踪,动态调整Ks、Kx的值,当市场处于多头市场时(K>50,D>50,J>50),调整Ks为0.6使之小于Kx(值为0.7),此时容易触发多头的条件,当市场处于空头市场(K<50,D<50,J<50),调整Kx为0.6使之小于Ks(值为0.7),此时容易触发空头的条件。
策略验证
策略核心代码:

改进的策略在原先的策略基础上,利用KDJ指标计算了K、D、J的值,如果三者均大于50,则改变k1的值为0.6,如果均小于50,则改变k2的值为0.6。
改进的DualThrust策略14年1月1日至今的回溯结果如下:

收益要高于改进前的策略,更为明显的是,最大回撤变得相当小,为1.93%。

