[金字塔源码] 恒温器策略

0
回复
3654
查看
[复制链接]

294

主题

20

回帖

1380

积分

专栏作家

积分
1380
来源: 2020-5-30 11:32:26 显示全部楼层 |阅读模式
[size=+0]策略简述
/ H7 H) G/ {/ ~- P

CMI指标小于20时,策略处于震荡模式

若处于趋买市

最新价>max(开盘价+0.5*10ART3日平均低价),做多。

最新价>max(开盘价-0.75*10ART3日平均高价),做空。

若处于趋卖市

最新价>max(开盘价-0.75*10ART,3日最低价),做多。

最新价>max(开盘价+0.5*10ART3日最高价),做空。

1 L, g4 w8 C5 y# w& w" Z. b

CMI指标大于20时,策略处于趋势模式

趋势策略使用布林带策略。

进入趋势模式后,有震荡模式下的持仓,以开仓价+-310ATR为出场条件。

+ e; C; q1 w  t* N- M, d# v


) a: ^& H7 t( ?# I3 E
策略详述

恒温器策略以其能够在震荡和趋势市场中自动调节交易行为而得名。看到自动调节的字眼,很多人会觉得这一定是个高级神秘的策略。但事实恰恰相反,这是个简单的策略组合,这类策略的关键在于将不同市场状态下能成功应用的策略相结合。

市场状态转换,我们采用CMI指标(市场波皱指标)作为评判标准
" x/ _6 T: h7 m
CMI值小于20,短周期震荡模式下运用的是区间突破结合模式识别策略我们将系统归于震荡模式。模式识别依靠关键价指标(关键价指标是(high+low+close)/3),如果当收盘价高于昨天的关键价,我们推测明天的市场是熊市(趋卖市),反之亦然。但是我们需明白,我们不是神算,不可能预测明天的市场,所以我们是计划以熊市手段去操作,但仍可以做多,只不过需要走出一定的行情。

CMI值大于20,该策略系统在趋势模式下(长周期)运用的是个类似布林通道策略(常规布林策略此处不做介绍)值得称道的是,该模型考虑了趋势模式下,原有震荡持仓的处理问题。因为震荡模式的出场是以3日高低均价为准。但是把这个标准放在趋势模式下就不合时宜了,该策略的方法是以开仓价+-310ATR为出场条件(一个相对较长期的条件)
4 r& W, g4 r4 k, N+ Y; y6 X. q' |5 S

代码- B- U$ @3 J. v: G2 f  x9 R0 B* @3 O
  1. //策略:恒温器系统1 H3 \! a( B' ~, o
  2. //类型:中长期通道突破
  3. //版本:1.0
  4. //修订时间:2012.11.6
  5. //Designed By Rogarz

  6. //中间变量
  7. input:m(50,5,300,30),N(1.25,0.1,10,0.1),ss(1,1,100,1),k1(0.5,0.1,1,0.1),k2(0.75,0.1,1,0.1);
  8. variable:A:=0;//0表示仓位是在趋势模式下下单  1表示在震荡模式下下单8 [7 h9 ^# a" A) ~" r7 P
  9. MID :  MA(CLOSE,M);//布林中轨0 |: z( q& Y5 ~2 S3 C
  10. UPPER:MID + N*STD(CLOSE,M);//布林上轨
  11. LOWER:MID - N*STD(CLOSE,M);//布林下轨7 @$ P! k- l* u) m/ E
  12. 今开:=callstock(stklabel,vtopen,6,0);) f; }+ e  p' U( q! Q* @
  13. CMI:=abs(close-ref(close,29))/(hhv(high,30)-LLV(L,30))*100;//0-100 取值越大,说明趋势越强,CMI<20震荡模式,反之为趋势
  14. 关键价:(high+low+close)/3;//关键价的计算,国外常称作中枢价格(pivot point)7 U8 b; n9 r/ q
  15. ATR10:=ma(tr,10);' S! E+ Z5 U: T
  16. 3日均低价:=ma(L,3);( F6 B2 h$ C7 b( P0 f0 V4 j9 P
  17. 3日均高价:=ma(h,3);" G. ~7 C  g6 l" o
  18. 手数:=ss;

  19. //交易条件$ u  i* ?, e% K, ?. ]" P. R
  20. if C<关键价 then begin
  21. 趋买市开多平空条件:=C>max(今开+k1*ATR10,3日均低价);7 V4 k( Z3 O) l
  22. 趋买市开空平多条件:=C
  23. end2 C( a0 C3 x+ M
  24. if c>关键价 then begin1 O$ c. r; e( T' \: t
  25. 趋卖市开多平空条件:=C>max(今开+k2*atr10,3日均低价);4 e  p2 E! `& z# p7 k" \
  26. 趋卖市开空平多条件:=C+ y6 P. B' P/ |
  27. end
  28. 趋势开多条件:=c>upper;; p2 X3 u  S7 V1 J
  29. 趋势开空条件:=c
  30. 趋势平多条件:=c; _+ a+ j# X6 }, Z5 Z
  31. 趋势平空条件:=c>mid;! ?5 L7 l, E! k' x; {9 V
  32. 震荡多单平仓条件:=c<=enterprice-3*atr10;2 T* V/ h" k4 F9 o6 a0 j* M
  33. 震荡空单平仓条件:=c>=enterprice+3*ATR10;# i3 V- w! e$ f; P1 a

  34. //交易系统7 M- F6 T/ s3 g; c$ p
  35. if cmi<20 then begin {震荡模式}
  36.    if C<关键价 then begin: r# b1 |5 @. m3 i1 o5 j9 d0 E. s
  37.    趋买市平空:sellshort(趋买市开多平空条件 and holding<=0,手数,market);
  38.    趋买市平多:sell(趋买市开空平多条件 and holding>=0,手数,market);/ |( n$ D& b8 @
  39.    趋买市开多:buy(趋买市开多平空条件 and holding<=0,手数,market);
  40.    趋买市开空:buyshort(趋买市开空平多条件 and holding>=0,手数,market);
  41.    A:=1;
  42.    end
  43.    if c>关键价 then begin
  44.    趋卖市平空:sellshort(趋卖市开多平空条件 and holding<=0,手数,market);
  45.    趋卖市平多:sell(趋卖市开空平多条件 and holding>=0,手数,market);: c$ r- D# P" c  @3 t- z
  46.    趋卖市开多:buy(趋卖市开多平空条件 and holding<=0,手数,market);
  47.    趋卖市开空:buyshort(趋卖市开空平多条件 and holding>=0,手数,market);
  48.    a:=1;
  49.    end
  50. end
  51. if cmi>=20 then BEGIN {趋势模式}
  52. if a:=1 then begin //趋势模式下原震荡模式下仓位处理
  53.     震荡多单平仓:sell(震荡多单平仓条件 and holding>0,手数,market);5 M0 m& L6 g* q- F
  54.     震荡空单平仓:sellshort(震荡空单平仓条件 and holding<0,手数,market);
  55.     a:=0;
  56.     end 2 B9 w1 w# B7 W
  57. if a:=0 then begin
  58. 趋势平空:sellshort(趋势平空条件 and holding<0,手数,market);  p+ F* L& p( W1 K% \0 B9 X
  59. 趋势平多:sell(趋势平多条件 and holding>0,手数,market);" i* E; T4 h1 X
  60. 趋势开多:buy(趋势开多条件 and holding<=0,手数,market);
  61. 趋势开空:buyshort(趋势开空条件 and holding>=0,手数,market);; Y/ e, a$ I& f" A) B' v
  62. A:=0;  A/ i. x4 Y+ s
  63. end, c/ x# W/ b9 v8 d9 r5 b2 D+ ], Y
  64. end0 q6 J4 O. M# a7 W' t
  65. //注意先平后开原则  N) @2 P. N4 y& x
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信