1.Dual Thrust 交易策略

1.1Dual 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的最低价。

1.2具体原理公式:

1、首先计算:
(1)N日High的最高价HH, N日Close的最低价LC;
(2)N日Close的最高价HC,N日Low的最低价LL;
(3)Range = Max(HH-LC,HC-LL)
(4)BuyLine = Open + K1×Range
(5)SellLine = Open + K2×Range

2.构造系统
(1)当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;
(2)当价格向下突破下轨时,如果当时持有多仓,泽县平川,再开空仓;如果没有仓位,则直接开空仓;

2.本策略思路

1.当突破上界(Buyline),做多,并加均线过滤条件与交易量突变。
2.当突破下界(Sellline),做空,并加均线过滤条件与交易量突变。
3.出场使用滚动平均价止盈止损

3.策略代码分享

function DualThrust( N,freq,K1,K2,stop_rate )
%DualThrust思想加均线过滤条件加交易量变动
% Detailed explanation goes here
HandleList=traderGetHandleList();
TargetList=traderGetTargetList();
global TT
global eprice
if isempty(TT)||isempty(eprice)
TT=zeros(length(TargetList),1);
eprice=zeros(length(TargetList),1);
end
[ValidCash,MarketCap,OrderFrozen,MarginFrozen,PositionProfit] = traderGetAccountInfo(HandleList);
lags=60;
for i=1:length(TargetList)
[name,lastTD,Multiple,MinMove,TradingFeeOpen,TradingFeeClose,TradingFeeCloseToday,LongMargin,ShortMargin] = traderGetFutureInfo(TargetList(i).Market,TargetList(i).Code);
[time,open,high,low,close,volume,turnover,openinterest]=traderGetKData(TargetList(i).Market,TargetList(i).Code,‘day’,freq,0-lags,0,false,‘FWard’);
[Position,Frozen,AvgPrice] = traderGetAccountPosition(HandleList,TargetList(i).Market,TargetList(i).Code);
if length(close)<lags
continue;
end
sharenum=floor((ValidCash+MarketCap)0.8/length(TargetList)/close(end)/Multiple);
HH=max(high(end-N:end-1));
HC=max(close(end-N:end-1));
LC=min(close(end-N:end-1));
LL=min(low(end-N:end-1));
Range=max(HH-LC,HC-LL);
buyline=open(end)+K1
Range;
sellline=open(end)-K2Range;
if TT(i)1
eprice(i)=AvgPrice;
TT(i)=0;
end
if Position0
if close(end)>buyline&&close(end)>mean(close(end-4:end))&&volume(end)>mean(volume(end-5:end))
orderID=traderBuy(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum,0,‘Market’,‘buy’);
if orderID~=0
TT(i)=1;
end
elseif close(end)<sellline&&close(end)<mean(close(end-4:end))&&volume(end)>mean(volume(end-5:end))
orderID=traderSellShort(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum,0,‘Market’,‘sell’);
if orderID~=0
TT(i)=1;
end
end
elseif Position>0
if close(end)>eprice(i)
(1+3stop_rate)
eprice(i)=close(end);
elseif close(end)<eprice(i)
(1-stop_rate)
traderPositionTo(HandleList,TargetList(i).Market,TargetList(i).Code,0,0,‘Market’,‘stoplong’);
end
else
if close(end)<eprice(i)(1-3stop_rate)
eprice(i)=close(end);
elseif close(end)>eprice(i)*(1+stop_rate)
traderPositionTo(HandleList,TargetList(i).Market,TargetList(i).Code,0,0,‘Market’,‘stoplong’);
end
end
end
end
3.2执行文件

targetList1 = traderGetCodeList(‘dce000’);
targetList2 =traderGetCodeList(‘czce000’);
targetList3 = traderGetCodeList(‘shfe000’);
targetList=[targetList1,targetList2,targetList3];
targetList=targetList([2 7 8 10 33 40 43 44 45 47]);
K1=0.5;
K2=0.5;
stop_rate=0.05;
freq=1;
N=10;
AccountList(1) = {‘FutureBackReplay’};
traderRunBacktest(‘DualThrust’,@DualThrust,{ N,freq,K1,K2,stop_rate },AccountList(1),targetList,‘day’,1,20100103,20161101,‘FWard’);

4.回测表现

随机挑选十支交易量活跃不同品种的期货自2010年1月至2016年11月进行日频回测

【点宽专栏】Dual Thrust 交易策略相关推荐

  1. python量化外汇交易_用Python实现一个Dual Thrust数字货币量化交易策略

    Dual Thrust交易算法介绍 Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略.它通常用于期货,外汇和股票市场.Dual Thrust的概念属于典型的突破交易 ...

  2. python 用while输出数字金字塔_用Python实现一个Dual Thrust数字货币量化交易策略

    Dual Thrust交易算法介绍 Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略.它通常用于期货,外汇和股票市场.Dual Thrust的概念属于典型的突破交易 ...

  3. 第四章:经典量化策略集锦(第四篇:进军交易系统,从 Dual Thrust 中学“趋势”)

    导语: "趋势"这个字眼,大家肯定不陌生,炒股票的老股民天天口里说着 "趋势为王", 那么今天我们向大家介绍一个趋势跟踪交易系统:Dual Thrust ,其简 ...

  4. 幽灵交易策略_程序化策略里,幽灵交易者策略的虚拟账户应该怎么设置?

    大作业写完了,直接把俺的大作业搬过来吧-- 基于幽灵选股者交易策略的综合分析 By S. 一.背景知识概述 幽灵选股者从"幽灵选股者"的名字可以看出,该策略的核心在于"幽 ...

  5. 【点宽专栏】海龟策略在商品期货市场资金流策略中的应用——点宽精选

    图片 本文为点宽-泰迪杯获奖作品 挖掘目标 运用日级K 线数据对2011-2013 年数据刻画资金流向,发现资金流向对未来期货的影响,并使用持仓量.成交量和价格结合进行量化选标的,最后将选择的标的运用 ...

  6. 聚宽量化交易策略基本框架

    JoinQuant-TWist 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习做量化交易.毕 ...

  7. 量化交易 聚宽 羊驼交易策略

    量化交易 聚宽 羊驼交易策略 # 导入函数库 from jqdata import *# 初始化函数,设定基准等等 def initialize(context):# 设定沪深300作为基准set_b ...

  8. 【点宽专栏】虚拟遗憾最小化(CFR)之量化择时与交易

    谷歌DeepMind公司研发的AI围棋AlphaGo在去年嗨翻天的时候,让我觉得现在的机器学习学习技术真的很NB,因为自己的专业,私下一直有关注机器学习在量化投资这块的一些实践.昨天看到广发出了一篇名 ...

  9. 缠论 python 量化_【JoinQuant聚宽社区干货】量化学习资料、经典交易策略、Python入门...

    ======================= 量化投资学习资料 ======================= 量化投资经典学习资料下载:http://www.joinquant.com/post/ ...

  10. 5种经典程序化日内交易策略

    日内交易一般有手工和程序化两种,收益来说手工收益要大于程序化. 国内程序化交易还处于起步阶段,本文摘取了海外比较公开的日内交易策略思想给予大家一些分享. 在做程序化交易的过程中,首先要碰到的问题是如何 ...

最新文章

  1. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
  2. 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)
  3. Vector用法(C++ Primer中文版)
  4. stm32f746 linux,在Linux系统下搭建STM32开发环境--Nucleo-F429ZI
  5. mysql 统计_mysql数据统计级别技巧
  6. 源代码下载 第六章 注解式控制器详解
  7. 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机
  8. php mysql 平均分_平均评级计算mysql php
  9. C语言的延时程序怎么改,C语言编程,怎么用按键来改变延时的长短?
  10. spss选择主要特征_SPSS统计作图教程:一维箱线图
  11. 数据库基础(2)选择,投影,连接,除法运算
  12. 图形数字化工具 - getData
  13. 整理:周鸿祎谈如何写商业计划书
  14. vue json对象转数组_vue的数据驱动原理及简单实现
  15. Visual Studio 2008下载地址汇总及相关注册破解方法.
  16. 给设计师提供的十大无代码网站编辑器
  17. 支持IEC 61850的设备,数据如何能有效的采集管理,如何实现数据可视化?
  18. 消费机 mysql_消费机软件主要构成
  19. python三大_Python之三大器
  20. mysql1214_mysql – #1214 – 使用的表类型不支持FULLTEXT索引

热门文章

  1. 缺少软件测试项目?最好试试这套方法
  2. 【开发工具】【Bus Hound】USB抓包工具(Bus Hound)的使用
  3. 分享四个黑科技app,每一个都让你好用到停不下来
  4. 2019深圳杯获奖论文_我校研究生喜获2019年“深圳杯”数学建模挑战赛决赛三等奖...
  5. 怎么查看SAP用户化指南(SPRO --> SAP参考IMG)里各个功能的事务代码
  6. 双向循环链表(图文讲解)
  7. linux操作系统和ucos操作系统,嵌入式操作系统ucos与linux比较
  8. 直播丨易鲸捷HTAP融合型分布式数据库EsgynDB SQL编译器详解
  9. 电气专业标准规范大全html,电气专业规范大全
  10. 2018年大学生设计竞赛浙江赛区C题-无线充电电动小车-试题分析