开拓者期货期权程序化系统交易论坛

标题: 【源码】恒温器策略 [打印本页]

作者: sorakiraa    时间: 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
复制代码
简单的翻译了一下,某些指标与原帖有点出入。。。。。。
作者: 闭关修炼    时间: 2013-1-11 09:37:05

本帖最后由 闭关修炼 于 2013-1-11 09:44 编辑

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

好像加载以后没有开平仓信号哦
不知道怎么回事
作者: ggyyff    时间: 2013-1-11 15:52:02

谢谢 分享
作者: 趋势跟踪    时间: 2013-1-11 19:39:00

顶!!!
谢谢楼主无私分享!
作者: bluefox    时间: 2013-1-11 21:08:27

这策略传说很是厉害 谢谢楼主的无私奉献
作者: flyfish    时间: 2013-1-12 14:12:24

这个也搞出来了?牛
作者: henry2    时间: 2013-1-12 14:18:32

多谢楼主分享。试了下,只有第一个信号,我也没找出原因
作者: henry2    时间: 2013-1-12 14:27:25

henry2 发表于 2013-1-12 14:18
多谢楼主分享。试了下,只有第一个信号,我也没找出原因

params swingtrenswitch(50) 应该是params swingtrendswitch(50)
作者: tcx    时间: 2013-1-12 17:17:11

这个模型需要修改的,不能拿上来就用
作者: 无心    时间: 2013-1-12 17:28:29

要把所有的行情当成趋势
或者把所有的行情当成盘整
这样盈利的可能反而大些
作者: 受伤的小鱼    时间: 2013-1-13 04:25:09

本帖最后由 受伤的小鱼 于 2013-1-13 04:27 编辑

您的自定义函数mylowestbar其实就是公式自带数lowestbar。
这类函数是序列函数,在进行赋值计算时不要放在条件内,以免条件限制导致取值不完全,运算结果不符合。
可修改公式如下:

01.aa = MyLowestBar(MACDValue, 5);

02.    If(CrossOver(MACDValue[1], AvgMACD[1]))

03.    {

04.            lotNumeric("oint", MACDValue, 0, Blue);

05.            MACDLowPointIndex = aa;

06.    }
复制代码
楼主,关于这点你得提醒下新手啊!比如那个closed(1),当然我没细看你的代码!只是说一下啊!莫见怪啊!
作者: sorakiraa    时间: 2013-1-14 08:41:37

这个是以前写的
问题比较多

序列函数那个问题

可以单独提个用户函数出来

TB应该是用C编的

我是学Java的,老是说我对C里面的指针很反感
作者: 846132116    时间: 2013-1-14 09:02:16

sorakiraa 发表于 2013-1-14 08:41
这个是以前写的
问题比较多


作者: sorakiraa    时间: 2013-1-16 09:08:35

家纺3362 发表于 2013-1-15 22:18
这个不知道哪里有点不对,帮我看看

我不知道你说的问题是什么

不过你开仓用High,Low进行判断,盘中可能出现信号消失和反复开仓
作者: jun_lin76    时间: 2013-4-26 10:23:27

谢谢 分享
作者: qustzhl    时间: 2013-5-22 19:26:47

反正我就觉得一大堆代码  交易思想能简单说一下么
作者: semutter    时间: 2013-11-25 23:35:15

无心 发表于 2013-1-12 17:28
要把所有的行情当成趋势
或者把所有的行情当成盘整
这样盈利的可能反而大些 ...

为什么啊?不是很明白啊
作者: sunsnake    时间: 2014-2-9 11:14:36

这个看上去不错,要试试看
作者: 几何    时间: 2014-2-9 21:03:20

希望LZ将代码的逻辑翻译过来才是。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2