[MC源码] [策略分享] ATR波段突破策略

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

294

主题

20

回帖

1380

积分

专栏作家

积分
1380
来源: 2020-5-30 14:12:14 显示全部楼层 |阅读模式
參考自FuturesNote
区间突破最常使用在日内程序里,不过波段的程序使用起来也不差,基本逻辑就是由开盘向上涨多少要突破作多,向下跌多少要突破做空,很单纯,最主要的因素只有这个突破的临界点是如何决定?

基本突破策略是以开盘点为准,涨XX点作多,跌XX点作空,如果没翻就摆到收盘,这样的逻辑在近年是很难获利,但波段突破策略就不一样了

Average True Range(ATR) 平均真实范围,利用这个好用的指标,当行情波动大时,这个区间确认也应该放大,波动小时,则区间也小,因此加上波动性的指标有用处,ATR比其它波动性指标直接方便的是它本身就是价格的表示,而不是比例或无法对应的数字。例如ATR 100点,就是近期日高低点差平均在100点,而开盘后往上50点或往下50点的区间内都很正常,那我们设定的突破逻辑就是市价涨超过50点作多,跌超过50点作空。宽客之家
代码范例:
此策略是波段突破策略。根据ATR要调用多少个周期,来求出开仓的委托价格,此策略适用于多商品多周期,可以自己调整参数跟周期测试即可,底下是测试的IF 20 min 的绩效结果,手续费单边100元,仅供参考。
  1. input:atrlen(2),endtime(1500),m(2100),n(9300);
  2. var:j(0),atr(0),trx(0);
  3. array:tr[10](0);
  4. //定义变量、参数、以及一维数组

  5. if date<>date[1] then begin
  6. trx=0;
  7. //当隔日时给trx赋值为0
  8. for j=0 to atrlen-1 begin
  9. value1=(highD(j+1)-lowD(j+1));
  10. value2=absvalue(highD(j+1)-closeD(j+2));
  11. value3=absvalue(lowd(j+1)-closed(j+2));
  12. //在一个循环中给value1、value2、value3变量赋值

  13. tr[j]=maxlist(value1,value2,value3);
  14. //把三者的最大值依次储存在数组中
  15. if j=atrlen-1 then begin
  16.   for j=0 to (atrlen-1) begin
  17.     trx=trx+tr[j];
  18.   end;
  19. //给trx赋值在一个循环运算后
  20. atr=trx/atrlen;
  21. end;
  22. end;
  23. end;
  24. //对atr求平均

  25. if time<endtime then begin
  26. buy next bar at (openD(0)+atr/2 ) stop;
  27. sellshort next bar at (opend(0)-atr/2) stop;
  28. end;
  29. //在收盘前以当天的开盘价加减atr/2去委托限价单,满足条件开仓

  30. setstopcontract;
  31. setstoploss(m);
  32. setprofittarget(n);
  33. //设置止盈止损。
复制代码



回复

使用道具 举报

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