Dual Thrust策略在期货中的python代码实现

一、Dual Thrust策略介绍

Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用、适用度广的特点,其思路简单、参数很少,配合不同的参数、止盈止损和仓位管理,可以为投资者带来长期稳定的收益,被投资者广泛应用于股票、货币、贵金属、债券、能源及股指期货市场等。

在Dual Thrust交易系统中,对于震荡区间的定义非常关键,这也是该交易系统的核心和精髓。它的逻辑原型是较为常见的日内交易策略之一开盘区间突破策略,以今日开盘价加减一定比例的昨日振幅,确定上下轨。日内突破上轨时平空做多,突破下轨时平多做空。Dual Thrust系统使用Range = Max(HH-LC,HC-LL)来描述震荡区间的大小。其中HH是N日High(最高价)的最高价,LC是N日Close(收盘价)的最低价,HC是N日Close的最高价,LL是N日Low(最低价)的最低价。

二、开盘区间突破策略基本原理

  • 在今天的收盘,计算两个值:最高价-收盘价,和收盘价-最低价。然后取这两个值较大的那个,乘以k值。把结果称为触发值。
  • 在明天的开盘,记录开盘价,然后在价格超过上轨(开盘+触发值)时马上买入,或者价格低于下轨(开盘-触发值)时马上卖空。
  • 没有明确止损。这个系统是反转系统,也就是说,如果在价格超过(开盘+触发值)时手头有一口空单,则买入两口。同理,如果在价格低于(开盘-触发值)时手上有一口多单,则卖出两口。

三、策略实现

1.计算

  • HH:N日High的最高价
  • LC:N日Close的最低价
  • LL:N日Close的最高价HC,N日Low的最低价
  • 范围:Range = Max( HH – LC , HC – LL )
  • 上轨(买入):BuyLine = Open + K1 * Range ;(其中Open为开盘价)
  • 下轨(卖出):SellLine = Open + K2 * Range

2.构造系统

  • 当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓。
  • 当价格向下突破下轨时,如果当时持有多仓,则先平仓,再开空仓;如果没有仓位,则直接开空仓。

3.策略代码实现工具

模拟、实盘交易开源框架:TqSdk

TqSdk文档:http://doc.shinnytech.com/pysdk/latest/index.html

4.策略源代码

https://github.com/shinnytech/tqsdk-python/blob/master/tqsdk/demo/dualthrust.py

四、回测

1.回测初始设置

  • 初始账户资金:100万
  • 回测日期:2018.11.13 —— 2018.11.28
  • 策略参数:过去N日天数:5; 上轨K1:0.2; 下轨K2:0.5
  • 多头、空头开仓手数:30手
  • 回测时盘口行情quote的更新频率:和订阅的tick的更新频率一致

2.回测结果

Dual Thrust 策略回测结果
合约代码 合约品种 收益率 风险度 最大回撤 年化夏普率
SHFE.au1812 13.71% 84.95% 2.04% 8.87
SHFE.rb1812 螺纹钢 11.50% 6.30% 4.99% 5.93

3.上表回测结果中SHFE.au1812的累计收益走势图

策略参考:https://xueqiu.com/5256769224/32429363

发表评论

电子邮件地址不会被公开。