Board logo

标题: R-Breaker交易系统模型原理说明及示意图 [打印本页]

作者: 龙听    时间: 2018-3-9 09:37     标题: R-Breaker交易系统模型原理说明及示意图


R-Breaker是一种短线交易策略,它结合了趋势和反转两种交易方式。

交易系统的基本原理如下:
1. 根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价、观察卖出价、反转
卖出价、反转买入价、观察买入价、突破卖出价。
以此来形成当前交易日盘中交易的触发条件。这里,通过对计算方式的调整,可以调节六个价格间的距离,进一步改变触发条件。


2. 追踪盘中价格走势,实时判断触发条件。具体条件如下:
当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位(反手、开仓)做空;
当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位(反手、开仓)做多;
 在空仓的情况下,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多;
 在空仓的情况下,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空。


3. 设定止损条件。当亏损达到设定值后,平仓。
4. 设定过滤条件。当前一个交易日波幅过小,该交易日不进行交易。
5. 在每日收盘前,对所持合约进行平仓。
6. 可使用1分钟、5分钟或10分钟等高频数据进行判断。


作者: 龙听    时间: 2018-3-9 09:38

TS源码:
  1. {R-Breaker}
  2. {***********SystemSetup*******************
  3. Trading between 9:15 and 14:29 ChicagoTime only
  4. MMStop $1000
  5. Close End of Day
  6. 10 min Time Frame
  7. ******************************************}

  8. input:notbef(715),notaft(1229);
  9. var:{input:}f1(.35),f2(0.07),f3(.25),reverse(2.00),
  10. rangemin(1.15),xdiv(3);
  11. var:ssetup(0),bsetup(0),senter(0),benter(0),bbreak(0),sbreak(0),
  12. ltoday(0),hitoday(9999),startnow(0),div(0),
  13. rfilter(false);

  14. if currentbar=1 then startnow=0;
  15. div=maxlist(xdiv,1);
  16. if d>d[1] then begin
  17. startnow=startnow+1;
  18. ssetup=hitoday[1]+f1*(c[1]-ltoday[1]);
  19. senter=((1+f2)/2)*(hitoday[1]+c[1])-(f2)*ltoday[1];
  20. benter=((1+f2)/2)*(ltoday[1]+c[1])-(f2)*hitoday[1];
  21. bsetup=ltoday[1]-f1*(hitoday[1]-c[1]);
  22. bbreak=ssetup+f3*(ssetup-bsetup){(1.3625*hitoday[1]+.45*c[1])-.8125*ltoday[1]};
  23. sbreak=bsetup-f3*(ssetup-bsetup){(1.3625*ltoday[1]+.45*c[1])-.8125*hitoday[1]};
  24. hitoday=h;
  25. ltoday=l;
  26. rfilter=hitoday[1]-ltoday[1]>=rangemin;
  27. end;
  28. if h>hitoday then hitoday=h;
  29. if l
  30. if t>=notbef and t=2 and rfilter and
  31. date>entrydate(1) then begin
  32. if hitoday>=ssetup and marketposition>-1 then
  33. SELL("Rlev SE") senter+(hitoday-ssetup)/div stop;
  34. if ltoday<=bsetup and marketposition<1 then
  35. BUY("Rlev LE") benter-(bsetup-ltoday)/div stop;
  36. if marketposition=-1 then
  37. BUY("RbUP LE") entryprice+reverse stop;
  38. if marketposition=1 then
  39. SELL("RbDN SE") entryprice-reverse stop;
  40. if marketposition=0 then
  41. BUY("Break LE") bbreak stop;
  42. if marketposition=0 then
  43. SELL("Break SE") sbreak stop;
  44. end;
  45. if t>=notaft and t<>sess1endtime then begin
  46. if marketposition=-1 then
  47. EXITSHORT("RbUP SX") entryprice+reverse stop;
  48. if marketposition=1 then
  49. EXITLONG("RbDN LX") entryprice-reverse stop;
  50. EXITSHORT("Late SX") h+.05 stop;
  51. EXITLONG("Late LX") l-.05 stop;
  52. END;
复制代码



中轨上顶部区间:ssetup:=昨日最高+0.35*(昨天收盘-昨天最低);
中轨上区间:senter+(昨最高-中轨上顶部区间)/3 // senter:=((1+0.07)/2*(昨最高+昨最低)-0.07*昨天最低;
中轨下区间:benter-(中轨下顶部区间-昨最低)/3 // benter:=((1+0.07)/2*(昨最高+昨最低)-0.07*昨天最高;
中轨下顶部区间:bsetup:=昨最低-0.35*(昨最高-昨收盘);
上轨:bbreak:=(ssetup+0.25*(ssetup-bsetup);
下轨:sbreak:=bsetup-0.25*(ssetup-bsetup);
当价格直接突破上轨,开多。 否则, 当今日最高价大于中轨上区间,并且小于上轨运行,价格如果下穿中轨上区间后,开空。
当价格直接突破下轨,开空。 否则, 当今日最低价小于中轨下区间,并且大于下轨运行,价格如果上穿中轨下区间后,开多。
作者: 龙听    时间: 2018-3-9 09:38

R-Breaker金字塔上源码:
  1. runmode:0;
  2. input:notbef(090000);
  3. input:notaft(145500);
  4. input:f1(0.35);
  5. input:f2(0.07);
  6. input:f3(0.25);
  7. input:myreverse(1);
  8. input:rangemin(0.2);
  9. input:xdiv(3);
  10. variable:ssetup=0;
  11. variable:bsetup=0;
  12. variable:senter=0;
  13. variable:benter=0;
  14. variable:bbreak=0;
  15. variable:sbreak=0;
  16. variable:ltoday=0;
  17. variable:hitoday=999999;
  18. variable:startnow=0;
  19. variable:div=0;
  20. variable:rfilter=false;
  21. i_reverse:=myreverse*(callstock(stklabel,vtopen,6,0)/100);
  22. i_rangemin:=rangemin*(callstock(stklabel,vtopen,6,0)/100);
  23. if barpos=1 then begin
  24. startnow:=0;
  25. div:=max(xdiv,1);
  26. end
  27. hh:=ref(hitoday,1);
  28. cc:=ref(close,1);
  29. ll:=ref(ltoday,1);
  30. if date>ref(date,1) then begin
  31. startnow:=startnow+1;

  32. ssetup:=hh+f1*(cc-ll);
  33. senter:=((1+f2)/2)*(hh+cc)-f2*ll;
  34. benter:=((1+f2)/2)*(ll+cc)-f2*hh;
  35. bsetup:=ll-f1*(hh-cc);
  36. bbreak:=ssetup+f3*(ssetup-bsetup);
  37. sbreak:=bsetup-f3*(ssetup-bsetup);

  38. hitoday:=high;
  39. ltoday:=low;

  40. rfilter:=hh-cc>=rangemin;
  41. end
  42. if high>hitoday then hitoday:=high;
  43. if low<ltoday then ltoday:=low;
  44. if time>=notbef and time<notaft and startnow>=2 and rfilter then begin
  45. if hitoday>=ssetup and holding>=0 then begin
  46. if low<=senter+(hitoday-ssetup)/div then begin
  47. sell(1,holding,limitr,senter+(hitoday-ssetup)/div);
  48. sellshort(1,1,limitr,senter+(hitoday-ssetup)/div);
  49. end
  50. end

  51. if ltoday<=bsetup and holding<=0 then begin
  52. if high>=benter-(bsetup-ltoday)/div then begin
  53. if high>=benter-(bsetup-ltoday)/div then begin
  54. sellshort(1,holding,limitr,benter-(bsetup-ltoday)/div);
  55. buy(1,1,limitr,benter-(bsetup-ltoday)/div);
  56. end
  57. end
  58. end

  59. if holding<0 then begin
  60. if high-enterprice>=i_reverse then
  61. sellshort(1,enterprice+i_reverse);
  62. end

  63. if holding>0 then begin
  64. if enterprice-low>=i_reverse then
  65. sell(1,enterprice-i_reverse);
  66. end

  67. if holding=0 then begin
  68. if high>=bbreak then
  69. buy(1,bbreak);
  70. end

  71. if holding=0 then begin
  72. if low<=sbreak then
  73. sellshort(1,sbreak);
  74. end
  75. end
  76. if time>=notaft then begin
  77. if holding<0 then
  78. sellshort(1,holding,limitr,open);

  79. if holding>0 then
  80. sell(1,holding,limitr,open);
  81. end
  82. 盈亏:asset-500000,noaxis,coloryellow,linethick2;
复制代码





欢迎光临 龙听期货论坛 (http://www.qhlt.cn/) Powered by Discuz! 7.2