高低点均线(TB版)_第1页
高低点均线(TB版)_第2页
高低点均线(TB版)_第3页
高低点均线(TB版)_第4页
高低点均线(TB版)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高低点均线(TB版)该交易策略的核心思路围绕着“高低点均线通道”与“K线中值突破”来进行判断,旨在捕捉市场趋势并管理风险。1.高低点均线通道构建:-计算过去N周期内(由参数AvgLen定义)的最高价和最低价的移动平均线,分别得到上轨(UpperAvg)和下轨(LowerAvg),以此形成价格通道。-计算过去N周期内K线中点的移动平均线作为通道中轨(ExitAvg),用以辅助判断和止损。2.识别RangeLeader:-判断当前K线是否为“RangeLeader”,即其K线中点(MedianPrice)位于前一根K线的高点之上,且当前K线的振幅大于前一根K线,这表明市场具有较强的向上或向下突破潜力。3.入场条件:-当上一根K线是RangeLeader,且收盘价相对于N周期前的高点或低点均线有显著偏离时,采取行动。-如果上一根K线收盘价高于上轨均线,且当前无多仓,则开立多头仓位。-如果上一根K线收盘价低于下轨均线,且当前无空仓,则开立空头仓位。4.出场条件:-开仓后,策略设置了动态的止损机制。-在开仓后的前ExitBar根K线内,如果价格触及中轨(ExitAvg),则平仓止损。-超过ExitBar根K线后,若价格触及上轨减去最小变动价位(对于多头),或下轨加上最小变动价位(对于空头),则以更宽的止损标准平仓。5.风险管理:-结合市场位置和时间,动态调整止损位置,初期采用较为保守的中轨止损,随后转为更宽泛的上下轨止损,反映了对市场波动性的适应性管理。总结来说,该策略利用通道突破和K线形态来捕捉趋势启动点,并通过灵活的止损策略来管理风险,是一种结合趋势追踪和止损优化的交易思路。做多信号代码:ParamsNumericAvgLen(20)NumericAbsDisp(5)NumericExitBar(5)VarsNumericSeriesUpperAvg(0)NumericSeriesLowerAvg(0)NumericSeriesExitAvg(0)BoolSeriesRangeLeadB(False)NumericSeriesMedianPriceNumericminpointNumericSeriesrangeBeginIf(!CallAuctionFilter())Returnminpoint=Minmove*PriceScalerange=High-LowUpperAvg=Average(High[AbsDisp],AvgLen)LowerAvg=Average(Low[AbsDisp],AvgLen)MedianPrice=(High+Low)*0.5ExitAvg=Average(MedianPrice[AbsDisp],AvgLen)RangeLeadB=MedianPrice>High[1]andRange>Range[1]If(MarketPosition==0){If(RangeLeadB[1]andClose[1]>UpperAvg[1]){Buy(0,Open)}}If(MarketPosition==1andBarsSinceEntry>0){If(BarsSinceEntry<=ExitBar){If(Low<=ExitAvg){Sell(0,Min(Open,ExitAvg))}}ElseIf(BarsSinceEntry>ExitBar){If(Low<=UpperAvg-minpoint){Sell(0,Min(Open,UpperAvg-minpoint))}}}End策略说明:基于平移的高点和低点均线通道与K线中值突破进行判断系统要素:1.RangeLeader是个当前K线的中点在之前K线的最高点上,且当前K线的振幅大于之前K线的振幅的K线2.计算高点和低点的移动平均线入场条件:1、上根K线为RangeLead,并且上一根收盘价大于N周期前高点的MA,当前无多仓,则开多仓2、上根K线为RangeLead,并且上一根收盘价小于N周期前低点的MA,当前无空仓,则开空仓出场条件:1.开仓后,5个K线内用中轨止损,5个K线后用外轨止损做多代码解读如下:ParamsNumericAvgLen(20);//声明数值参数AvgLen,初值为20,即高低点均线计算周期NumericAbsDisp(5);//声明数值参数AvsDisp,初值为5,即高低点均线前移周期NumericExitBar(5);//声明数值参数ExitBar,初值为5,即为止损周期参数,该周期以前中轨止损,以后外轨止损。VarsNumericSeriesUpperAvg(0);//声明序列变量UpperAvg,初值0,即通道上轨NumericSeriesLowerAvg(0);//声明序列变量LowerAvg,初值0,即通道下轨NumericSeriesExitAvg(0);//声明序列变量ExitAvg,初值0,即通道中轨BoolSeriesRangeLeadB(False);//声明序列布尔型变量RangeLeadB,初值为假NumericSeriesMedianPrice;//声明序列变量MedianPrice,即K线中价Numericminpoint;//声明序列变量minpoint,即最小变动价位。NumericSeriesrange;//声明序列变量range,即为振幅。BeginIf(!CallAuctionFilter())Return;//集合竞价和小节休息过滤。//指标计算minpoint=Minmove*PriceScale;//最小变动价位。range=High-Low;//变量range=高价-低价。UpperAvg=Average(High[AbsDisp],AvgLen);//把相应值返回函数Average求值,即计算N周期前高点的均线,N=参数AbsDisp值为5。LowerAvg=Average(Low[AbsDisp],AvgLen);//把相应值返回函数Average求值,计算N周期前低点的均线,N=参数AbsDisp值为5.MedianPrice=(High+Low)*0.5;//代入相应值,计算得变量MedianPrice值,即为计算K线中点。ExitAvg=Average(MedianPrice[AbsDisp],AvgLen);//同样的,把相应值返回函数Average求值,即计算N周期前K线中点的均线,N=参数AbsDisp值为5.RangeLeadB=MedianPrice>High[1]andRange>Range[1];//当K线中点大于前一根K线高点并且振幅大于上一根振幅时,RangeLeadB为真。//开仓买卖系统入场If(MarketPosition==0)//没有持仓情况下。{If(RangeLeadB[1]andClose[1]>UpperAvg[1])//假如上根K线RangeLeadB为真,并且上一根收盘价大于N周期前高点的均线,当前无多仓,则开多仓。{Buy(0,Open);//以开盘价,开仓买入。}}//平仓出场If(MarketPosition==1andBarsSinceEntry>0)//持有多单,并且建仓位置的k线数位大于0.{If(BarsSinceEntry<=ExitBar)//开仓后N根K线内用中轨止损,N根K线后用上轨止损,N=参数ExitBar,其实就是建仓位置小于等于5.{If(Low<=ExitAvg)//假如低价小于等于变量ExitAvg值,即中轨。{Sell(0,Min(Open,ExitAvg));//取开盘价与中轨价的小值,平仓。}}ElseIf(BarsSinceEntry>ExitBar)//假如建仓位置位数大于5{If(Low<=UpperAvg-minpoint)//假如低价小于等于上轨减去最小跳动价{Sell(0,Min(Open,UpperAvg-minpoint));//平仓}}}End做空信号代码:ParamsNumericAvgLen(20);NumericAbsDisp(5);NumericExitBar(5);VarsNumericSeriesUpperAvg(0);NumericSeriesLowerAvg(0);NumericSeriesExitAvg(0);BoolSeriesRangeLeadS(False);NumericSeriesMedianPrice;Numericminpoint;NumericSeriesrange;BeginIf(!CallAuctionFilter())Return;minpoint=Minmove*PriceScale;range=High-Low;UpperAvg=Average(High[AbsDisp],AvgLen);LowerAvg=Average(Low[AbsDisp],AvgLen);MedianPrice=(High+Low)*0.5;ExitAvg=Average(MedianPrice[AbsDisp],AvgLen);RangeLeadS=MedianPrice<Low[1]andRange>Range[1];If(MarketPosition==0){If(RangeLeadS[1]andClose[1]<LowerAvg[1]){Sellshort(0,Open);}}If(MarketPosition==-1andBarsSinceEntry>0){If(BarsSinceEntry<=ExitBar){If(High>=ExitAvg){Buytocover(0,Max(Open,ExitAvg));}}ElseIf(BarsSinceEntry>ExitBar){If(High>=LowerAvg+minpoint){Buytocover(0,Max(Open,LowerAvg+minpoint));}}}End做空代码注解://定义参数,这些参数可以由用户根据需要进行调整ParamsNumericAvgLen(20);//计算移动平均线的周期长度NumericAbsDisp(5);//移动平均线前移的周期数NumericExitBar(5);//止损周期参数,决定何时使用中轨或外轨进行止损//定义变量,这些变量在策略中被计算和使用VarsNumericSeriesUpperAvg(0);//通道上轨的移动平均线NumericSeriesLowerAvg(0);//通道下轨的移动平均线NumericSeriesExitAvg(0);//通道中轨的移动平均线BoolSeriesRangeLeadS(False);//标记是否为RangeLeader的布尔序列NumericSeriesMedianPrice;//K线中点的价格序列Numericminpoint;//最小变动价位NumericSeriesrange;//K线的振幅序列//策略的开始Begin//过滤掉集合竞价时段If(!CallAuctionFilter())Return;//计算最小变动价位minpoint=Minmove*PriceScale;//计算当前K线的振幅range=High-Low;//计算N周期前高点的移动平均线作为上轨UpperAvg=Average(High[AbsDisp],AvgLen);//计算N周期前低点的移动平均线作为下轨LowerAvg=Average(Low[AbsDisp],AvgLen);//计算当前K线的中点MedianPrice=(High+Low)*0.5;//计算N周期前K线中点的移动平均线作为中轨ExitAvg=Average(MedianPrice[AbsDisp],AvgLen);//判断当前K线是否为RangeLeader,即中点低于前一根K线的低点且振幅大于前一根RangeLeadS=MedianPrice<Low[1]andRange>Range[1];//检查当前没有空仓时的开仓条件If(MarketPosition==0){//如果上根K线为RangeLeader,并且上一根收盘价低于N周期前低

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论