您好,欢迎光临花生网![请登录] [免费注册] 我的花生地|帮助|服务中心|网站导航|繁体中文
  • 打印
  • 字号

金魔方智能交易攻略(3)-日内交易之开盘区间突破

欢迎发表评论 2012-9-17 14:46   编辑:foxar
作者:仁心慧能

      日内交易常用的一类策略是开盘区间突破,它与前例的通道突破策略相似,其基本公式是:
  1. //-------金魔方智能交易公式--------------
  2. //例3_1 开盘区间突破策略
  3. //用于分钟线周期
  4. {策略:
  5. 1.当日开盘价加减指定价差形成区间
  6. 2.突破区间高点做多,跌破区间低点做空
  7. 3.当天仅做多1次,做空1次
  8. 4.日内交易,收盘前清仓
  9. }
  10. input:                                       
  11.   Rng(10),        //区间范围
  12.   EndTime(1400);  //下午14:00以后不开仓
  13. RngH: OpenD(0) + Rng; 
  14. RngL: OpenD(0) - Rng;
  15. if Time < EndTime*100 then begin
  16.   if EntriesToday(Date,MP_LONG)<1 then
  17.     Buy('', 2, RngH, -1, OT_STOP);
  18.   if ExitsToday(Date,MP_SHORT)<1 then
  19.     SellShort('', 2, RngL, -1, OT_STOP); 
  20. end;
  21. SetExitOnClose;
  22. {
  23. 注解:
  24. 1.OpenD(0)返回当日开盘价,这套函数在日内交易时方便常用;
  25. 2.EntriesToday(Date,MP_LONG)取得当天多头开仓次数,MP_LONG 是值为1的宏;
  26. 3.ExitsToday (Date,MP_SHORT)取得当天空头平仓次数,MP_SHORT 是值为-1的宏;
  27. 4.SetExitOnClose用于在收市时清仓,历史测评时以收盘价作为平仓价,自动交易时在收市前若干秒平仓,可在【策略设置】中设置,默认在收市前60秒清仓。
  28. }

      如图所示,该策略以当日开盘价加减由Rng参数指定的范围,形成一个区间,当价格突破区间时进场交易,收盘时清仓不过夜。


     上例的区间范围Rng是个常数,不能适应市场变动,所以Rng通常用各种算法得到,例如,著名的Dual Thrust系统曾长期在交易系统排行榜名列三甲,其原始公式应用于日线周期,不太能如实反映日内波动,我们把它改造为应用于分钟周期的策略:

  1. //-------金魔方智能交易公式--------------
  2. //例3_2 Dual Thrust日内策略
  3. //用于1分钟-15分钟周期
  4. {策略:
  5. 1.根据前几日的波动范围动态调整开盘区间
  6. 2.突破区间高点做多,跌破区间低点做空
  7. 3.可选是否持仓过夜
  8. }
  9. input: 
  10.   K1(0.5),K2(0.5),Mday(1),Nday(1),
  11.   ExitOnClose(1);
  12. variable: 
  13.   BarsPerDay(48), BuyRange(1000), SellRange(1000);
  14. if BarPos = 1 then begin  //只需计算1次
  15.   switch DataPeriod begin   //沪深300股指期货日周期数
  16.     case 1: BarsPerDay:=270; //1分钟周期数/每日
  17.     case 2: BarsPerDay:=54;  //5分钟周期数/每日
  18.     case 3: BarsPerDay:=18;  //15分钟周期数/每日
  19.   end
  20. end
  21. Bars:= Mday*BarsPerDay;
  22. MHH := HHV(H,Bars)[1];
  23. MHC := HHV(C,Bars)[1];
  24. MLL := LLV(L,Bars)[1];
  25. MLC := LLV(C,Bars)[1];
  26. Bars:= Nday*BarsPerDay;
  27. NHH := HHV(H,Bars)[1];
  28. NHC := HHV(C,Bars)[1];
  29. NLL := LLV(L,Bars)[1];
  30. NLC := LLV(C,Bars)[1]; 

  31. if Date <> Date[1] then begin  //新交易日开始,计算区间范围
  32.   BuyRange := Max(MHH - MLC, MHC - MLL);
  33.   SellRange := Max(NHH - NLC, NHC - NLL);
  34. end
  35. RngH: OpenD(0) + K1*BuyRange; 
  36. RngL: OpenD(0) - K2*SellRange; 

  37. if SessionLastBar = 0 then begin
  38.   Buy('', DEFAULT, RngH, -1, OT_STOP,OB_NEXTBAR);
  39.   SellShort('', DEFAULT, RngL, -1, OT_STOP,OB_NEXTBAR);
  40. end
  41. if ExitOnClose then SetExitOnClose;
  42. {  
  43. 注解:
  44. 1.用不同的参数分别设置买卖区间的幅度
  45. 2.BarsPerDay为1天的K线数量,只需在第1根K线时计算1次
  46.   用switch语句根据周期类型赋值,公式中是股指期货的每日周期数量
  47. 3.HHV(H,Bars)[1]表示取用前一周期的指标值
  48.   可以把之前的:=改为:进行调试
  49. 4.SessionLastBar函数用于判断是否是当日最后一个周期
  50. 5.外部参数ExitOnClose控制是否做日内交易或持仓过夜
  51. }

如图所示:

可见,在同一时间段,本例的区间与上例相比较是动态变化的,各位可以修改公式参数看看运行结果。

在实际交易中,分批开平仓是常用的技巧,金魔方如何实现呢?


且听下回分解!


花生网版权所有,转载请注明出处!


我要评论

验证问答 换一个 验证码 换一个



Copyright©广州新博庭网络信息科技股份有限公司 粤ICP备11107430号 All Rights Reserved 版权所有 复制必究

合作联系邮箱: sueiyou@126.com

地址:广州市天河区花城大道667号美林基业大厦1201

回顶部