设为首页收藏本站

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

【源码】恒温器策略 [复制链接]

Rank: 4

精华
0
UID
112594
积分
333
帖子
281
主题
8
阅读权限
50
注册时间
2012-9-20
最后登录
2013-12-4
跳转到指定楼层
1#
发表于 2013-1-11 09:08:47 |只看该作者 |倒序浏览
本帖最后由 sorakiraa 于 2013-1-14 09:08 编辑

原帖请见金字塔:
【震荡+趋势混合策略】恒温器策略

by RogarZ

源码:
  1. Params
  2.         Numeric bollinglengths(50);
  3.         Numeric trendliqlength(50);
  4.         Numeric numstddevs(2);
  5.         Numeric swingprcnt1(0.5);
  6.         Numeric swingprcnt2(0.75);
  7.         Numeric atrlength(10);
  8.         Numeric swingtrendswitch(50);
  9. Vars
  10.                 BoolSeries swing(False);
  11.                 NumericSeries cmival;
  12.                 NumericSeries buyeasierday(0);
  13.                 NumericSeries selleasierday(0);
  14.                 NumericSeries trendlokbuy;
  15.                 NumericSeries trendloksell;
  16.                 NumericSeries trendbuypt;
  17.                 NumericSeries trendsellpt;
  18.                 NumericSeries keyofday;
  19.                 NumericSeries ma1;
  20.                 NumericSeries midd;
  21.                 Numeric swingprotstop;       
  22.                 Numeric atr;
  23.                 Numeric swingbuypt;
  24.                 Numeric swingsellpt;
  25. Begin
  26.         Commentary("BarInterval= "+Text(BarInterval));
  27.                 cmival=Abs(Close[1]-Close[31])/(Highest(High[1],30)-Lowest(Low[1],30));
  28.                 trendloksell=Average(Low[1],3*240/BarInterval);
  29.                 trendlokbuy=Average(High[1],3*240/BarInterval);
  30.                 keyofday=(HighD(0)+LowD(0)+CloseD(0))/3;
  31.                 If(Date<>Date[1]){
  32.                 If(CloseD(1)>keyofday[1])
  33.                 {
  34.                 selleasierday=1;//空头日
  35.                 }Else{
  36.                 buyeasierday=1;//多头日
  37.                 }
  38. }
  39.         Atr=XAverage(TrueRange,atrlength*240/BarInterval);
  40. If(buyeasierday==1){
  41.         swingbuypt=OpenD(0)+swingprcnt1*atr;
  42.         swingsellpt=OpenD(0)-swingprcnt2*atr;
  43. }
  44. If(selleasierday==1){
  45.         swingbuypt=OpenD(0)+swingprcnt2*atr;
  46.         swingsellpt=OpenD(0)-swingprcnt1*atr;
  47. }
  48. swingbuypt=Max(swingbuypt,trendlokbuy);
  49. swingsellpt=Min(swingsellpt,trendloksell);

  50. PlotNumeric("Buy",swingbuypt);
  51. PlotNumeric("Sell",swingsellpt);

  52. ma1=Average(Close[1],trendliqlength);//趋势均线
  53. midd=Average(Close[1],bollinglengths);//布林中线
  54. trendbuypt=midd+numstddevs*StandardDev(Close[1],bollinglengths);
  55. trendsellpt=midd-numstddevs*StandardDev(Close[1],bollinglengths);

  56. If(cmival<swingtrendswitch/100)
  57. {
  58.         If(MarketPosition==0&&High[1]>=swingbuypt)
  59.         //开多仓
  60. {
  61.                                 Buy(1,Max(Open,swingbuypt));
  62.                                 swing=True;
  63. }
  64.         If(MarketPosition==0&&Low[1]<=swingsellpt)
  65.         //开空仓
  66. {
  67.                                 SellShort(1,Min(Open,swingsellpt));
  68.                                 swing=True;
  69. }
  70. If(MarketPosition>0&&Low[1]<=swingsellpt)
  71. //多头反手
  72. {
  73.                                 SellShort(1, Min(Open,swingsellpt));
  74.                                 swing=True;
  75. }
  76. If(MarketPosition<0&&High[1]>=swingbuypt)
  77. //空头反手
  78. {
  79.                                 Buy(1, Max(Open,swingbuypt));
  80.                                 swing=True;
  81. }
  82. }Else{
  83.         swingprotstop=atr*3;
  84.         If(MarketPosition==0&&High[1]>=trendbuypt)
  85. //开多仓
  86. {
  87.         Buy(1,Max(Open,trendbuypt));
  88.         swing=False;
  89. }
  90. If(MarketPosition==0&&Low[1]<=trendsellpt)
  91. //开空仓
  92. {
  93.         SellShort(1,Min(Open,trendsellpt));
  94.         swing=False;
  95. }
  96. If(MarketPosition>0&&swing)
  97. //多头止损
  98. {
  99.         If(Low[1]<=EntryPrice-swingprotstop)
  100. {
  101.         Sell(1,Min(Open, EntryPrice-swingprotstop));
  102. }Else If(Low[1]<=ma1)
  103. {
  104.         Sell(1,Min(Open,ma1));
  105. }
  106. }
  107. If(MarketPosition<0&&swing)
  108. //空头止损
  109. {
  110.         If(High[1]>=EntryPrice+swingprotstop)
  111. {
  112.         BuyToCover(1,Max(Open, EntryPrice+swingprotstop));
  113. }Else If(High[1]>=ma1)
  114. {
  115.         BuyToCover (1,Max(Open,ma1));
  116. }
  117. }
  118. }

  119. End
复制代码
简单的翻译了一下,某些指标与原帖有点出入。。。。。。

Rank: 1

精华
0
UID
113367
积分
29
帖子
9
主题
0
阅读权限
10
注册时间
2012-11-7
最后登录
2013-2-22
2#
发表于 2013-1-11 09:37:05 |只看该作者
本帖最后由 闭关修炼 于 2013-1-11 09:44 编辑

强烈支持
谢谢楼主的分享!

好像加载以后没有开平仓信号哦
不知道怎么回事

使用道具 举报

Rank: 4

精华
0
UID
50057
积分
304
帖子
175
主题
17
阅读权限
50
注册时间
2011-6-27
最后登录
2015-1-4
3#
发表于 2013-1-11 15:52:02 |只看该作者
谢谢 分享

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
12330
积分
838
帖子
254
主题
15
阅读权限
60
注册时间
2010-6-16
最后登录
2017-4-25
4#
发表于 2013-1-11 19:39:00 |只看该作者
顶!!!
谢谢楼主无私分享!

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1896
积分
1979
帖子
117
主题
33
阅读权限
70
注册时间
2008-7-16
最后登录
2013-11-16
5#
发表于 2013-1-11 21:08:27 |只看该作者
这策略传说很是厉害 谢谢楼主的无私奉献

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15203
积分
1411
帖子
397
主题
35
阅读权限
60
注册时间
2010-8-14
最后登录
2017-12-29
6#
发表于 2013-1-12 14:12:24 来自手机 |只看该作者
这个也搞出来了?牛

使用道具 举报

Rank: 1

精华
0
UID
113112
积分
28
帖子
6
主题
2
阅读权限
10
注册时间
2012-10-25
最后登录
2020-8-19
7#
发表于 2013-1-12 14:18:32 |只看该作者
多谢楼主分享。试了下,只有第一个信号,我也没找出原因

使用道具 举报

Rank: 1

精华
0
UID
113112
积分
28
帖子
6
主题
2
阅读权限
10
注册时间
2012-10-25
最后登录
2020-8-19
8#
发表于 2013-1-12 14:27:25 |只看该作者
henry2 发表于 2013-1-12 14:18
多谢楼主分享。试了下,只有第一个信号,我也没找出原因

params swingtrenswitch(50) 应该是params swingtrendswitch(50)

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
112403
积分
168
帖子
126
主题
6
阅读权限
40
注册时间
2012-9-7
最后登录
2013-6-21
9#
发表于 2013-1-12 17:17:11 |只看该作者
这个模型需要修改的,不能拿上来就用

使用道具 举报

Rank: 4

精华
0
UID
114056
积分
394
帖子
174
主题
10
阅读权限
50
注册时间
2012-12-13
最后登录
2013-10-31
10#
发表于 2013-1-12 17:28:29 |只看该作者
要把所有的行情当成趋势
或者把所有的行情当成盘整
这样盈利的可能反而大些

使用道具 举报

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

bottom

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

GMT+8, 2024-5-12 12:54

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部