返回首页
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!
当前位置: 主页 > 程序化交易策略 >

浅谈程序化交易中的旗型交易策略

时间:2017-09-14 09:00来源:未知 作者:admin 点击:
旗型交易策略 旗型(Flag)与三角旗型(Pennant)一直以来都是可靠的中继型态的 程序化交易 策略,代表的是是主要上涨或下跌趋势的短暂停顿。旗形走势的型态就像一面挂在旗杆顶上的旗帜,这型态通常在急速而又大幅的市场波动中出现,股价经过一连串紧密的短期波

  旗型交易策略

  旗型(Flag)与三角旗型(Pennant)一直以来都是可靠的中继型态的程序化交易策略,代表的是是主要上涨或下跌趋势的短暂停顿。旗形走势的型态就像一面挂在旗杆顶上的旗帜,这型态通常在急速而又大幅的市场波动中出现,股价经过一连串紧密的短期波动后,形成一个稍徽与原来趋势呈相反方向倾斜的长方形,这就是旗形走势。

  

程序化交易的模型回测数据图片

 

  

 

  以下提供一个国外论坛关于旗型(Flag)的程序化交易策略,可以看一下外国人如何描述旗型以及利用旗型发展程序化交易策略

  INPUT:

  MAXFLDUR(15), //Max Flag Duration

  FLAGMIN(2.5), // Max Atr in lowest point in flag

  PX(23), //Max Pole Duration.

  UPT1BARS(70), // Bars for Uptrend leading to flag

  POLEMIN(5.5), //Min ATR Height of the pole

  LBF(50), // Min distance between flags

  ATRmin(5),// Min volatility change

  K(1.2), //Profit Target constant

  timeexit(100), //Time exit bars

  ATRLL(3),BSEMIN(5), // Stop loss below flag

  ATRTRAIL(3),TRAILBARS(5), // Trailing stop parameters

  BSEINACT(70),ATRINACT(4); // Inactivity exit parameter

  vars:X1(0),X2(0),LRSX2(0),LRSX1(0),POLE(0),ptarget(0),BSE(0),TOP(0),BOTTOM(0),X3(0),L3(0),Y23(0),FLAGBOT(0),UPT1(0),LF(0),TARGETPER(0);

  // FLAG CALCULATION

  X1=HighestBar(C,MAXFLDUR)[2];//FLAG DURATION EX POLETOP

  X2=X1 1; // FLAG DURATION INCLUDING POLE TOP

  LF=LOWEST(C,X2);

  TOP=Highest(C,X2)[2];

  X2=IFF(LINEARREGSLOPE(C,X1)[1]<0 AND TOP-LF

  IF X2>2 AND X2<=MAXFLDUR THEN begin //LIMITS FLAG DURATION

  Y23=LOWestBar(C,PX X2); // POLE BOTTOM BAR

  BOTTOM=LOWEST(C,(PX X2));// POLE BOTTOM

  POLE=TOP-BOTTOM;

  IF TOP-BOTTOM>POLEMIN*AvgTrueRange(40) AND Y23>X2

  THEN BEGIN

  TOP=Highest(C,X2)[2];

  FLAGBOT=LOWEST(C,X2);

  UPT1=BOTTOM-LOWEST(L,UPT1BARS); // UPTREND LEADING TO FLAG

  LRSX1=LINEARREGSLOPE(C,X1)*100;//SLOPE IN FLAG

  LRSX2=LINEARREGSLOPE(C,X1-1)[2]*100; //SLOPE IN FLAG BEFORE BREAKOUT

  Condition1 =TOP-LF<0 OR LRSX2<0); // LIMITS FLAG SLOPE BETWEEN 0 AND -3 ATR

  Condition2=POLE>POLEMIN*AvgTrueRange(40) ; // LIMITS MINPOLE HEIGHT

  Condition3= UPT1>0; // UPTREND LEADING TO FLAG

  Condition4=(barssinceexit(1)=0 or barssinceexit(1)>LBF) ; // LIMITS DISTANCE BETWEEN SUCCESIVE FLAGS

  Condition5= (AvgTrueRange(40)/AvgTrueRange(40)[Y23]-1)*100>ATRmin; // VOLATILITY

  If MARKETPOSITION=0 AND CONDITION1 AND CONDITION2 AND CONDITION3 and condition4 and condition5

  THEN BEGIN

  Buy("Flag") NEXT BAR AT HIGHEST(C,X1) STOP;

  END;END;END;

  {EXIT CONDITIONS}

  if MARKETPOSITION =1 THEN BEGIN

  BSE=BARSSINCEENTRY;

  X3=HighestBar(C,MAXFLDUR)[BSE 2]-BSE 1;

  TOP=Highest(C,X3)[BSE 1];

  BOTTOM=LOWEST(C,(PX X3))[BSE 1];

  POLE=(TOP-BOTTOM)/(BOTTOM .0001)*100;

  targetPER=K*POLE;

  ptarget=(1 TARGETPER/100)*ENTRYPRICE;

  L3=LOWEST(L,X3)[BSE];

  // PROFIT TARGET

  If C>=ptarget then SELL ("pTARGET") THIS bar at CLOSE;

  // STOP

  IF BSE>BSEMIN THEN SELL ("UNDER FLAG") NEXT bar at L3-ATRLL*AvgTrueRange(40) STOP;

  //TRAILING STOP

  IF C

  THEN SELL("TRAIL") NEXT BAR AT MARKET;

  // INACTIVITY EXIT

  IF BSE>BSEINACT AND C

  // TIME EXIT

  If BSE>timeexit

  then SELL("TIME") next bar at open;

  END;

  以下为台指期(TXF1-15K)回测

  

 

  以下为德国DAX指数(DAX-15K)回测

  

 

  后记:

  型态似乎很难用简单的方式完整描述。例如常见的M头及W底,到底要往前追溯几根K线才比较好呢? 参数要设定多少较佳?程序化交易码写得长,岛状过度最佳化的疑虑就会出现。

(责任编辑:admin)
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!
------分隔线----------------------------
云量化商城
如果您会开发策略,请进!大量项目等待与您合作!
推荐内容
量化投资培训