设为首页收藏本站

 找回密码
 注册
查看: 11056|回复: 16

原创策略分享ITF_Breakout_V1(带源码) [复制链接]

Rank: 3Rank: 3

精华
0
UID
116726
积分
166
帖子
57
主题
8
阅读权限
40
注册时间
2013-4-2
最后登录
2014-7-16
发表于 2013-4-10 17:19:29 |显示全部楼层
简单而又实用的策略,因为简单,普适性较好,相信很多朋友有想到过这种策略,只是存在细节的不同.适用于if和其他几个商品.开发文档在附件里面.
随便上几张策略开发文档的截图
  1. //------------------------------------------------------------------------
  2. // 简称: ITF_Breakout_V1
  3. // 名称: 国贸期货上海营业部量化交易组客户QQ群:186100158 欢迎加入!
  4. // 类别: 公式应用
  5. // 类型: 用户应用
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric Lots(1);
  10.         Numeric TimesBreakout(1);  //当天每个关键点位突破开仓次数;
  11.         Numeric StopRatio(0.4); //追踪止损空间为当天振幅的倍数;
  12.         Numeric TimeBegin(9.05); //开盘至此时的高低点被突破开仓;
  13.         Numeric TimeEnd(14.50);  //最后交易时间;
  14.         Numeric TimeExit(14.55); //收盘清仓时间;

  15. Vars
  16.         NumericSeries DayHigh;     //当天最高价;
  17.         NumericSeries DayLow;      //当天最低价;
  18.         NumericSeries DayOpen;     //当天开盘价;
  19.         NumericSeries DayOpenHigh; //当天开盘后一定时间内的最高价;
  20.         NumericSeries DayOpenLow;  //当天开盘后一定时间内的最低价;
  21.         NumericSeries DayHigh_1;   //前一交易日最高价;
  22.         NumericSeries DayLow_1;    //前一交易日最低价;
  23.         NumericSeries StopFollowingSpace; //追踪止损空间;
  24.         NumericSeries DayRange;    //当天振幅=DayHigh-DayLow;
  25.         NumericSeries TimesBreakoutLong(0);  //突破开多次数;
  26.         NumericSeries TimesBreakoutShort(0); //突破开空次数;
  27.         NumericSeries BarsDayHigh;  //当天最高价bar的索引;
  28.         NumericSeries BarsDayLow;   //当天最低价bar的索引;
  29.         Numeric MinPoint;
  30.         Numeric MyPrice;
  31. Begin
  32.         MinPoint = MinMove*PriceScale;
  33.         //当天最高价最低价;
  34.         If(Date!=Date[1])
  35.         {
  36.                 DayHigh = High;
  37.                 DayLow = Low;
  38.                 DayOpen = Open;
  39.                 DayHigh_1 = DayHigh[1];
  40.                 DayLow_1 = DayLow_1[1];
  41.                 DayOpenHigh = DayHigh;
  42.                 DayOpenLow = DayLow;
  43.                 TimesBreakoutLong = 0;
  44.                 TimesBreakoutShort = 0;
  45.         }
  46.         else
  47.         {
  48.                 DayHigh = Max(High,DayHigh[1]);
  49.                 DayLow = Min(Low,DayLow[1]);
  50.         }
  51.         If(Time<TimeBegin/100)
  52.         {
  53.                 DayOpenHigh = DayHigh;
  54.                 DayOpenLow = DayLow;
  55.         }
  56.         // Commentary("DayHigh="+Text(DayHigh));
  57.         // Commentary("DayLow="+text(DayLow));
  58.         Commentary("DayOpenHigh="+Text(DayOpenHigh));
  59.         Commentary("DayOpenLow="+Text(DayOpenLow));
  60.        
  61.         DayRange = DayHigh - DayLow; //当日振幅;
  62.         StopFollowingSpace = DayRange*StopRatio; //追踪止损空间;
  63.        
  64.         If(High>DayHigh[1])
  65.         {
  66.                 BarsDayHigh = CurrentBar;
  67.         }
  68.         If(Low<DayLow[1])
  69.         {
  70.                 BarsDayLow = CurrentBar;
  71.         }
  72.         //平仓2:追踪止损,回撤幅度达到当日振幅的0.382;
  73.         If(BarsSinceEntry>0 and DayRange/DayOpen>=1/100)
  74.         {
  75.                 If(Low<=DayHigh[1]-StopFollowingSpace[1] and MarketPosition==1)
  76.                 {
  77.                         MyPrice = Min(Open,DayHigh[1]-StopFollowingSpace[1]);
  78.                         Sell(Lots,MyPrice);
  79.                         PlotString("追踪止损","追踪止损",High,White);
  80.                 }
  81.                 If(High>=DayLow[1]+StopFollowingSpace[1] and MarketPosition==-1)
  82.                 {
  83.                         MyPrice = Max(Open,DayLow[1]+StopFollowingSpace[1]);
  84.                         BuyToCover(Lots,MyPrice);
  85.                         PlotString("追踪止损","追踪止损",High,White);
  86.                 }
  87.         }
  88.         //平仓3:方向开仓条件成立;
  89.         // If(High>DayOpenHigh)
  90.         // {
  91.                 // MyPrice = Max(Open,DayOpenHigh)+MinPoint;
  92.                 // BuyToCover(Lots,MyPrice);
  93.         // }
  94.         // if(Low<DayOpenLow)
  95.         // {
  96.                 // MyPrice = Min(Open,DayOpenLow)-MinPoint;
  97.                 // Sell(Lots,MyPrice);
  98.         // }
  99.        
  100.         //开仓;
  101.         If(Time>=TimeBegin/100)
  102.         {
  103.                 if(High>DayOpenHigh and TimesBreakoutLong<TimesBreakout and MarketPosition!=1)
  104.                 {
  105.                         MyPrice = Max(Open,DayOpenHigh)+MinPoint;
  106.                         Buy(Lots,MyPrice);
  107.                         TimesBreakoutLong = TimesBreakoutLong + 1;
  108.                 }
  109.                 if(Low<DayOpenLow and TimesBreakoutShort<TimesBreakout and MarketPosition!=-1)
  110.                 {
  111.                         MyPrice = Min(Open,DayOpenLow)-MinPoint;
  112.                         SellShort(Lots,MyPrice);
  113.                         TimesBreakoutShort = TimesBreakoutShort + 1;
  114.                 }
  115.         }
  116.         //平仓1:收盘清仓;
  117.         If(Time>=TimeExit/100 and MarketPosition!=0)
  118.         {
  119.                 If(MarketPosition==1)
  120.                 {
  121.                         Sell(Lots,Open);
  122.                 }
  123.                 If(MarketPosition==-1)
  124.                 {
  125.                         BuyToCover(Lots,Open);
  126.                 }
  127.         }
  128.          
  129. End

  130. //------------------------------------------------------------------------
  131. // 编译版本        GS2010.12.08
  132. // 用户版本        2013/04/10 09:36
  133. // 版权所有       
  134. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  135. //                        每一版本的TrabeBlazer公式修改和重写的权利
  136. //------------------------------------------------------------------------
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
傻了吧 + 25

总评分: 威望 + 25   查看全部评分

Rank: 3Rank: 3

精华
0
UID
116726
积分
166
帖子
57
主题
8
阅读权限
40
注册时间
2013-4-2
最后登录
2014-7-16
发表于 2013-4-10 17:23:18 |显示全部楼层
策略开发文档附件放不上去,附件的允许的容量也太小了 ,有兴趣了解的朋友加群后在共享里面下载吧.

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4647
积分
1403
帖子
432
主题
31
阅读权限
60
注册时间
2009-6-16
最后登录
2019-10-27
发表于 2013-4-10 19:16:29 |显示全部楼层
本帖最后由 liq77 于 2013-4-10 19:22 编辑

前几年不错。今年的业绩没有亮点。。。当然,分享精神值得赞扬!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
116726
积分
166
帖子
57
主题
8
阅读权限
40
注册时间
2013-4-2
最后登录
2014-7-16
发表于 2013-4-10 21:08:40 |显示全部楼层
liq77 发表于 2013-4-10 19:16
前几年不错。今年的业绩没有亮点。。。当然,分享精神值得赞扬!

使用道具 举报

Rank: 2

精华
0
UID
113294
积分
100
帖子
63
主题
12
阅读权限
30
注册时间
2012-11-3
最后登录
2023-9-11
发表于 2013-4-11 12:57:34 |显示全部楼层

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
116726
积分
166
帖子
57
主题
8
阅读权限
40
注册时间
2013-4-2
最后登录
2014-7-16
发表于 2013-4-12 13:19:27 |显示全部楼层
本帖最后由 米小兔 于 2013-4-12 13:21 编辑

修改:
  1) 修正最后交易时间限制的bug;
  2) 加上交易信号的文字注释;
  3) 增加参数RangeRatio,振幅相对一开盘价达到一定值启用追踪止损;
  1. //------------------------------------------------------------------------
  2. // 简称: ITF_Breakout_V1
  3. // 名称: 国贸期货上海营业部量化交易组客户QQ群:186100158
  4. // 类别: 公式应用
  5. // 类型: 用户应用
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric Lots(1);
  10.         Numeric TimesBreakout(1);  //当天每个关键点位突破开仓次数;
  11.         Numeric StopRatio(0.4);  //追踪止损空间为当天振幅的倍数;
  12.         Numeric RangeRatio(1);   //振幅相对一开盘价达到一定值启用追踪止损;
  13.         Numeric TimeBegin(9.05); //开盘至此时的高低点被突破开仓;
  14.         Numeric TimeEnd(14.50);  //最后交易时间;
  15.         Numeric TimeExit(14.55); //收盘清仓时间;
  16.         Numeric Offset(0); //滑价补偿;

  17. Vars
  18.         NumericSeries DayHigh;     //当天最高价;
  19.         NumericSeries DayLow;      //当天最低价;
  20.         NumericSeries DayOpen;     //当天开盘价;
  21.         NumericSeries DayOpenHigh; //当天开盘后一定时间内的最高价;
  22.         NumericSeries DayOpenLow;  //当天开盘后一定时间内的最低价;
  23.         NumericSeries DayHigh_1;   //前一交易日最高价;
  24.         NumericSeries DayLow_1;    //前一交易日最低价;
  25.         NumericSeries StopFollowingSpace; //追踪止损空间;
  26.         NumericSeries DayRange;    //当天振幅=DayHigh-DayLow;
  27.         NumericSeries TimesBreakoutLong(0);  //突破开多次数;
  28.         NumericSeries TimesBreakoutShort(0); //突破开空次数;
  29.         NumericSeries BarsDayHigh;  //当天最高价bar的索引;
  30.         NumericSeries BarsDayLow;   //当天最低价bar的索引;
  31.         Numeric MinPoint;
  32.         Numeric MyPrice;

  33. Begin
  34.         MinPoint = MinMove*PriceScale;
  35.         //当天最高价最低价;
  36.         If(Date!=Date[1])
  37.         {
  38.                 DayHigh = High;
  39.                 DayLow = Low;
  40.                 DayOpen = Open;
  41.                 DayHigh_1 = DayHigh[1];
  42.                 DayLow_1 = DayLow_1[1];
  43.                 DayOpenHigh = DayHigh;
  44.                 DayOpenLow = DayLow;
  45.                 TimesBreakoutLong = 0;
  46.                 TimesBreakoutShort = 0;
  47.         }
  48.         else
  49.         {
  50.                 DayHigh = Max(High,DayHigh[1]);
  51.                 DayLow = Min(Low,DayLow[1]);
  52.         }
  53.         If(Time<TimeBegin/100)
  54.         {
  55.                 DayOpenHigh = DayHigh;
  56.                 DayOpenLow = DayLow;
  57.         }
  58.         // Commentary("DayHigh="+Text(DayHigh));
  59.         // Commentary("DayLow="+text(DayLow));
  60.         Commentary("DayOpenHigh="+Text(DayOpenHigh));
  61.         Commentary("DayOpenLow="+Text(DayOpenLow));
  62.        
  63.         DayRange = DayHigh - DayLow; //当日振幅;
  64.         StopFollowingSpace = DayRange[1]*StopRatio; //追踪止损空间;
  65.        
  66.         If(High>DayHigh[1])
  67.         {
  68.                 BarsDayHigh = CurrentBar;
  69.         }
  70.         If(Low<DayLow[1])
  71.         {
  72.                 BarsDayLow = CurrentBar;
  73.         }
  74.         //平仓2:追踪止损,回撤幅度达到当日振幅的0.382;
  75.         If(BarsSinceEntry>0 and DayRange[1]/DayOpen>=RangeRatio/100)
  76.         {
  77.                 //平多;
  78.                 If(Low<=DayHigh[1]-StopFollowingSpace and MarketPosition==1)
  79.                 {
  80.                         MyPrice = Min(Open,DayHigh[1]-StopFollowingSpace)-Offset*MinPoint;
  81.                         Sell(Lots,MyPrice);
  82.                         PlotString("追踪止损","追踪止损",High,White);
  83.                 }
  84.                 //平空;
  85.                 If(High>=DayLow[1]+StopFollowingSpace and MarketPosition==-1)
  86.                 {
  87.                         MyPrice = Max(Open,DayLow[1]+StopFollowingSpace)+Offset*MinPoint;
  88.                         BuyToCover(Lots,MyPrice);
  89.                         PlotString("追踪止损","追踪止损",High,White);
  90.                 }
  91.         }
  92.         //平仓3:反向开仓条件成立;
  93.         If(High>DayOpenHigh[1] and MarketPosition==-1)
  94.         {
  95.                 MyPrice = Max(Open,DayOpenHigh[1])+MinPoint;
  96.                 BuyToCover(Lots,MyPrice);
  97.                 PlotString("反向突破","反向突破",High,White);
  98.         }
  99.         if(Low<DayOpenLow[1] and MarketPosition==1)
  100.         {
  101.                 MyPrice = Min(Open,DayOpenLow[1])-MinPoint;
  102.                 Sell(Lots,MyPrice);
  103.                 PlotString("反向突破","反向突破",High,White);
  104.         }
  105.        
  106.         //开仓;
  107.         If(Time>=TimeBegin/100 and time<=TimeEnd/100)
  108.         {
  109.                 if(High>DayOpenHigh and TimesBreakoutLong<TimesBreakout and MarketPosition!=1)
  110.                 {
  111.                         MyPrice = Max(Open,DayOpenHigh)+MinPoint+Offset*MinPoint;
  112.                         Buy(Lots,MyPrice);
  113.                         TimesBreakoutLong = TimesBreakoutLong + 1;
  114.                 }
  115.                 if(Low<DayOpenLow and TimesBreakoutShort<TimesBreakout and MarketPosition!=-1)
  116.                 {
  117.                         MyPrice = Min(Open,DayOpenLow)-MinPoint-Offset*MinPoint;
  118.                         SellShort(Lots,MyPrice);
  119.                         TimesBreakoutShort = TimesBreakoutShort + 1;
  120.                 }
  121.         }
  122.         //平仓1:收盘清仓;
  123.         If(Time>=TimeExit/100 and MarketPosition!=0)
  124.         {
  125.                 If(MarketPosition==1)
  126.                 {
  127.                         Sell(Lots,Open-(Offset-1)*MinPoint);
  128.                 }
  129.                 If(MarketPosition==-1)
  130.                 {
  131.                         BuyToCover(Lots,Open+(Offset-1)*MinPoint);
  132.                 }
  133.         }


  134. End

  135. //------------------------------------------------------------------------
  136. // 编译版本        GS2010.12.08
  137. // 用户版本        2013/04/10 09:36
  138. // 版权所有       
  139. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  140. //                        每一版本的TrabeBlazer公式修改和重写的权利
  141. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 1

精华
0
UID
116953
积分
19
帖子
9
主题
0
阅读权限
10
注册时间
2013-3-16
最后登录
2013-4-14
发表于 2013-4-12 22:07:26 |显示全部楼层
米小兔 发表于 2013-4-12 13:19
修改:
  1) 修正最后交易时间限制的bug;
  2) 加上交易信号的文字注释;

后一版本比前一版本IF888测试结果相差很大,什么原因呢?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
116726
积分
166
帖子
57
主题
8
阅读权限
40
注册时间
2013-4-2
最后登录
2014-7-16
发表于 2013-4-17 15:10:24 |显示全部楼层
交易机器 发表于 2013-4-12 22:07
后一版本比前一版本IF888测试结果相差很大,什么原因呢?

修改了一个不起眼的未来数据的代码

使用道具 举报

高级操盘手

你不理财,财不理你

Rank: 10Rank: 10Rank: 10

精华
0
UID
116980
积分
37669
帖子
416
主题
12
阅读权限
200
注册时间
2013-3-17
最后登录
2021-5-12
发表于 2013-4-17 23:51:50 |显示全部楼层
不管怎么样,这个分享的精神值得赞扬

使用道具 举报

Rank: 4

精华
0
UID
26116
积分
377
帖子
84
主题
15
阅读权限
50
注册时间
2011-2-18
最后登录
2015-8-26
发表于 2013-4-18 00:25:30 |显示全部楼层
支持分享,不过简单突破近两年表现的确有些郁闷

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-4-19 05:30

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部