设为首页收藏本站

 找回密码
 注册
查看: 15309|回复: 11
打印 上一主题 下一主题

请教--如何编写ATR棘轮法? [复制链接]

Rank: 2

精华
0
UID
88478
积分
113
帖子
7
主题
3
阅读权限
30
注册时间
2011-12-23
最后登录
2012-6-12
跳转到指定楼层
1#
发表于 2011-12-25 16:54:06 |只看该作者 |倒序浏览
新人第一帖,请多指教

atr指标扎根于市场的波动性,有着极强的自适应性。只要大致了解某个市场的波动强度,就可以拿atr来设置入场、出场(止损或者止盈)和头寸管理(一套完整的系统的要素),因此算是我心目中的万能指标了。只要基本符合市场的波动性,我们可以随手编出一大堆无需太多优化和指标而且收益不错的系统。

ATR棘轮法是国外的一个出场策略,10多年前就已经出现了,个人认为这个思路是相当棒的,就是不知道如何写成模型进行测试。

中文翻译及原文如下:
http://www.360doc.com/content/10/0124/13/690250_14281366.shtml

根据这个策略,追踪止损的移动受到三个因素的影响:持仓时间的增加、原始止损点的正向(赢利方向)移动、市场正向(赢利方向)波动性的增加(即atr数值本身的波动),而且市场正向波动性增加对止损位的影响还和持仓时间成正比。因此作者建议入场10根线以及浮盈达到1ATR后再设置这个方法,过早的启动会导致持仓时间因素给止损位的移动带来太大的乘数效应。

个人认为,可能并不是所有的周期和市场都适用这个方法,比如我主要操作国内期货日内5分钟周期,每天只有54根k线,持仓时间有限,这种方法可能不如传统的追踪止损来得简单方便。但是对于15分钟线的日间操作或者1分钟线的日内操作来说可能就挺不错的,至于国外的24小时开盘的品种也许就更好用了。

这个策略将时间因素、市场波动和跟踪止损的思想很好的融合在一起,即便实战不管用,只要能编出这种系统,一可以启发大家的思路,二可以让我这样的编程菜鸟学到很多编程知识。以前我老是想,国外那些互相分享策略的不是傻子吗?有钱自己不去赚,后来等我从市场的迷茫中走出来后发现,我才是真正的傻子。一个优秀的相同的策略可以有成千上万种开仓点和平仓点,自己实际用的入场和出场点从来都不是最优的,但至少是当下适合自己的,而且是正期望值的。分享策略只会让策略本身经受考验和修正,变得更加完善(不是完美),或者衍生出其他的好策略。一个好的系统首先是要求在最差环境下还能生存下来,其次才是能赚多少钱。如果一个系统非要达到某种苛刻的条件才能赚钱,那么这种系统就很危险。

具体涉及到系统的话,原文的思路(以做多为例):
1、整个系统atr指标参数设置为20,即20日平均真实波幅,公式里用的数值取前一根k线的对应值,防止当前数值变化造成的信号闪烁。
2、开仓条件只要简单符合突破型趋势系统就行了,比如价格突破某根线。
3、开仓后初始止损设在开仓价下方1.5ATR(20),而且只准上移不准下移(这点最要紧)。
4、第10根k线以及浮盈达到1ATR(20)后启动棘轮,初始位置设置在开仓后出现的谷底(当然不会低于初始止损位)。
5、棘轮时间乘数先定为原文的0.05吧,与初始止损一样,棘轮永远只能上移不能下移(这点最要紧)。
6、两个止损中破一个就平仓。

我的想法:有时候刚入场不久就开始震荡,或者干脆是在震荡市入场,震荡持续比较长的时间后,突然反向运动。对于这种情况,根据原文中提到的“最初使用较小的移动量,等到巨大赢利后使用较大的移动量”,可以将初始限价止损变成一个很小的棘轮,进场后立刻启动,靠时间来上移止损位(不准下移),靠小棘轮试图在震荡市中保本平仓。当然如果刚进去就大幅反向了,那就没办法了。如果运气很好,赢利如期而至,那我们就可以在这个小棘轮运转的同时启动大棘轮,用来最大限度地保护利润。

我的想法只是纸上谈兵,很可能在具体场景中不能赚钱,但是运用波动性来跟踪止损的思路是非常明确的,接下来就看各位了。

Rank: 2

精华
0
UID
88478
积分
113
帖子
7
主题
3
阅读权限
30
注册时间
2011-12-23
最后登录
2012-6-12
2#
发表于 2011-12-25 16:55:13 |只看该作者
回复 1# laiyimeng123

自沙,顺便再给个波动止损的文章    http://www.360doc.com/content/10/1212/04/1154798_77271860.shtml

使用道具 举报

Rank: 1

精华
0
UID
110134
积分
38
帖子
14
主题
2
阅读权限
10
注册时间
2012-4-22
最后登录
2013-7-31
3#
发表于 2012-4-24 17:18:47 |只看该作者
不错,谢谢推荐。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
4#
发表于 2012-5-9 15:14:08 |只看该作者
  1. Params

  2.         Numeric Lots(1);
  3.         Numeric nOffset(3);
  4.         Numeric HLength(5);
  5.         Numeric LLength(5);
  6.         Numeric AtrLength(0.05);
  7.         Numeric myBarsSinceEntry(9);
  8.        
  9. Vars
  10.        
  11.         NumericSeries HHH;
  12.         NumericSeries LLL;
  13.         NumericSeries HHH1;
  14.         NumericSeries LLL1;       
  15.         NumericSeries Atr;
  16.         Numeric myPrice;
  17.         NumericSeries StopLine;
  18.         NumericSeries LastPrice;
  19.         Numeric MinPoint;


  20. Begin

  21.         MinPoint = MinMove*PriceScale;
  22.         HHH = Highest(High,HLength);
  23.         LLL = Lowest(Low,LLength);
  24.         HHH1 = Highest(High,10);
  25.         LLL1 = Lowest(Low,10);
  26.        
  27.        
  28.        
  29.         Atr = AvgTrueRange(10);
  30.        
  31.        
  32.         If(MarketPosition==1)
  33.         {
  34.                 //LLL1 = Max(LLL1,LastPrice);
  35.                 LLL1 = Max(LLL1,LLL1[1]);
  36.                 //PlotNumeric("LLL1",LLL1);
  37.                
  38.                 If(BarsSinceEntry>myBarsSinceEntry || High>LastPrice+Atr[1])
  39.                 {
  40.                         StopLine = Max(StopLine,LLL1[1] + (BarsSinceEntry)*Atr[1]*AtrLength);
  41.                 }
  42.                
  43.                 PlotNumeric("多头止损:",StopLine);
  44.                
  45.                 If(Low<StopLine)
  46.                 {
  47.                         myPrice = Min(Open,StopLine) - MinPoint*nOffset;
  48.                         Sell(Lots,myPrice);
  49.                        
  50.                 }               
  51.         }
  52.         If(MarketPosition==-1)
  53.         {
  54.                 //HHH1 = Min(HHH1,LastPrice);
  55.                 HHH1 = Min(HHH1,HHH1[1]);
  56.                 //PlotNumeric("HHH1",HHH1);
  57.                
  58.                 If(BarsSinceEntry>myBarsSinceEntry || Low<LastPrice-Atr[1])
  59.                 {
  60.                         StopLine = Min(StopLine,HHH1[1] - (BarsSinceEntry)*Atr[1]*AtrLength);
  61.                 }
  62.                 PlotNumeric("空头止损:",StopLine);
  63.                
  64.                 If(High>StopLine)
  65.                 {
  66.                         myPrice = Max(Open,StopLine) + MinPoint*nOffset;
  67.                         BuyToCover(Lots,myPrice);
  68.                        
  69.                 }
  70.         }       
  71.        
  72.        
  73.         If(MarketPosition<>1)
  74.         {
  75.                 If(High>HHH[1])
  76.                 {
  77.                         myPrice = Max(Open,HHH[1]);
  78.                         Buy(Lots,myPrice + MinPoint*nOffset);
  79.                         LastPrice = myPrice;
  80.                         StopLine = myPrice - Atr[1]*1.5;
  81.                         Return;
  82.                 }
  83.         }
  84.         If(MarketPosition<>-1)
  85.         {
  86.                 If(Low<LLL[1])
  87.                 {
  88.                         myPrice = Min(Open,LLL[1]);
  89.                         SellShort(Lots,myPrice - MinPoint*nOffset);
  90.                         LastPrice = myPrice;
  91.                         StopLine = myPrice + Atr[1]*1.5;
  92.                         Return;
  93.                 }
  94.         }       
  95.        
  96.        
  97.         If(time == 0.1510)
  98.         {
  99.                 Sell(Lots,Open - MinPoint*nOffset);
  100.                 BuyToCover(Lots,Open + MinPoint*nOffset);
  101.         }

  102. End
复制代码
我看了楼主推荐的原文,按照自己的理解大致写了一下,有不对的地方大家一起改正,开仓只是用了突破固定周期高低点。重点在于启动止损部分。

使用道具 举报

Rank: 2

精华
0
UID
110938
积分
70
帖子
44
主题
6
阅读权限
30
注册时间
2012-6-13
最后登录
2012-12-10
5#
发表于 2012-10-22 16:55:59 |只看该作者

使用道具 举报

Rank: 4

精华
0
UID
112594
积分
333
帖子
281
主题
8
阅读权限
50
注册时间
2012-9-20
最后登录
2013-12-4
6#
发表于 2012-10-29 10:22:43 |只看该作者
测试效果还行

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1896
积分
1979
帖子
117
主题
33
阅读权限
70
注册时间
2008-7-16
最后登录
2013-11-16
7#
发表于 2012-10-29 22:07:07 |只看该作者
马了个克的。。。。。。。。。。。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117784
积分
147
帖子
67
主题
17
阅读权限
40
注册时间
2013-4-5
最后登录
2013-10-22
8#
发表于 2013-8-18 18:11:05 |只看该作者
:::::)::)::)

使用道具 举报

Rank: 1

精华
0
UID
98503
积分
49
帖子
11
主题
2
阅读权限
10
注册时间
2012-2-18
最后登录
2014-5-4
9#
发表于 2014-1-14 22:07:59 |只看该作者
道勤 发表于 2012-5-9 15:14
我看了楼主推荐的原文,按照自己的理解大致写了一下,有不对的地方大家一起改正,开仓只是用了突破固定周期 ...

好文!

使用道具 举报

Rank: 1

精华
0
UID
176120
积分
39
帖子
29
主题
4
阅读权限
10
注册时间
2013-11-22
最后登录
2014-5-14
10#
发表于 2014-1-16 08:39:11 |只看该作者
好文章,学习了

使用道具 举报

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

bottom

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

GMT+8, 2024-5-17 17:59

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部