日内交易之开盘区间突破
来自tradeStar帮助系统
(版本间的差异)
(以“金魔方智能交易攻略(3)-日内交易之开盘区间突破 作者:仁心慧能 日内交易常用的一类策略是开盘区间突破,它与前例...”为内容创建页面) |
|||
第1行: | 第1行: | ||
− | + | 智能交易攻略(3)-日内交易之开盘区间突破 | |
作者:仁心慧能 | 作者:仁心慧能 | ||
第6行: | 第6行: | ||
日内交易常用的一类策略是开盘区间突破,它与前例的通道突破策略相似,其基本公式是: | 日内交易常用的一类策略是开盘区间突破,它与前例的通道突破策略相似,其基本公式是: | ||
− | //------- | + | //-------智能交易公式-------------- |
//例3_1 开盘区间突破策略 | //例3_1 开盘区间突破策略 | ||
//用于分钟线周期 | //用于分钟线周期 |
2013年6月19日 (三) 10:39的版本
智能交易攻略(3)-日内交易之开盘区间突破
作者:仁心慧能
日内交易常用的一类策略是开盘区间突破,它与前例的通道突破策略相似,其基本公式是:
//-------智能交易公式-------------- //例3_1 开盘区间突破策略 //用于分钟线周期 {策略: 1.当日开盘价加减指定价差形成区间 2.突破区间高点做多,跌破区间低点做空 3.当天仅做多1次,做空1次 4.日内交易,收盘前清仓 } input: Rng(10), //区间范围 EndTime(1400); //下午14:00以后不开仓 RngH: OpenD(0) + Rng; RngL: OpenD(0) - Rng; if Time < EndTime*100 then begin if EntriesToday(Date,MP_LONG)<1 then Buy(, 2, RngH, -1, OT_STOP); if ExitsToday(Date,MP_SHORT)<1 then SellShort(, 2, RngL, -1, OT_STOP); end; SetExitOnClose; { 注解: 1.OpenD(0)返回当日开盘价,这套函数在日内交易时方便常用; 2.EntriesToday(Date,MP_LONG)取得当天多头开仓次数,MP_LONG 是值为1的宏; 3.ExitsToday (Date,MP_SHORT)取得当天空头平仓次数,MP_SHORT 是值为-1的宏; 4.SetExitOnClose用于在收市时清仓,历史测评时以收盘价作为平仓价,自动交易时在收市前若干秒平仓, 可在【策略设置】中设置,默认在收市前60秒清仓。 }
如图所示,该策略以当日开盘价加减由Rng参数指定的范围,形成一个区间,当价格突破区间时进场交易,收盘时清仓不过夜。
上例的区间范围Rng是个常数,不能适应市场变动,所以Rng通常用各种算法得到,例如,
著名的Dual Thrust系统曾长期在交易系统排行榜名列三甲,其原始公式应用于日线周期,不太能如实反映日内波动,
我们把它改造为应用于分钟周期的策略:
//-------金魔方智能交易公式-------------- //例3_2 Dual Thrust日内策略 //用于1分钟-15分钟周期 {策略: 1.根据前几日的波动范围动态调整开盘区间 2.突破区间高点做多,跌破区间低点做空 3.可选是否持仓过夜 } input: K1(0.5),K2(0.5),Mday(1),Nday(1), ExitOnClose(1); variable: BarsPerDay(48), BuyRange(1000), SellRange(1000); if BarPos = 1 then begin //只需计算1次 switch DataPeriod begin //沪深300股指期货日周期数 case 1: BarsPerDay:=270; //1分钟周期数/每日 case 2: BarsPerDay:=54; //5分钟周期数/每日 case 3: BarsPerDay:=18; //15分钟周期数/每日 end end Bars:= Mday*BarsPerDay; MHH := HHV(H,Bars)[1]; MHC := HHV(C,Bars)[1]; MLL := LLV(L,Bars)[1]; MLC := LLV(C,Bars)[1]; Bars:= Nday*BarsPerDay; NHH := HHV(H,Bars)[1]; NHC := HHV(C,Bars)[1]; NLL := LLV(L,Bars)[1]; NLC := LLV(C,Bars)[1]; if Date <> Date[1] then begin //新交易日开始,计算区间范围 BuyRange := Max(MHH - MLC, MHC - MLL); SellRange := Max(NHH - NLC, NHC - NLL); end RngH: OpenD(0) + K1*BuyRange; RngL: OpenD(0) - K2*SellRange; if SessionLastBar = 0 then begin Buy(, DEFAULT, RngH, -1, OT_STOP,OB_NEXTBAR); SellShort(, DEFAULT, RngL, -1, OT_STOP,OB_NEXTBAR); end if ExitOnClose then SetExitOnClose; { 注解: 1.用不同的参数分别设置买卖区间的幅度 2.BarsPerDay为1天的K线数量,只需在第1根K线时计算1次 用switch语句根据周期类型赋值,公式中是股指期货的每日周期数量 3.HHV(H,Bars)[1]表示取用前一周期的指标值 可以把之前的:=改为:进行调试 4.SessionLastBar函数用于判断是否是当日最后一个周期 5.外部参数ExitOnClose控制是否做日内交易或持仓过夜 }
如图所示:
可见,在同一时间段,本例的区间与上例相比较是动态变化的,各位可以修改公式参数看看运行结果。
在实际交易中,分批开平仓是常用的技巧,金魔方如何实现呢?
且听下回分解!