




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ATR波动突破策略(TB平台)主要交易思路该交易策略主要基于平均真实范围(ATR)来设定买入和卖出的触发价格。ATR是衡量市场波动性的一个指标,通过计算过去一段时间内价格波动的平均值来得出。1.计算ATR:首先,策略通过函数计算了最近N个时间周期的平均真实范围(ATR)。这个ATR值用于后续计算上下轨线。2.设定上下轨线:策略根据前一个周期的收盘价和ATR的两倍值来计算上下轨线。上轨线是前一个周期的收盘价加上2倍的ATR,而下轨线则是前一个周期的收盘价减去2倍的ATR。3.交易触发条件:-当市场价格(特别是最高价)达到或超过上轨线时,如果当前市场位置不是多头(即没有持仓或持仓为空头),则执行卖空操作,以`myprice`作为交易价格。-当市场价格(特别是最高价)达到或超过上轨线,并且当前市场位置是空头(即已卖空)时,如果最高价达到或超过上轨线,则执行买入平仓操作,以`myprice`作为交易价格。4.绘制轨线:为了更直观地观察上下轨线,策略使用函数在图表上绘制了这两条轨线。该策略是一种基于ATR的波动率突破策略,通过设定上下轨线来捕捉市场的超买超卖情况,并据此进行交易操作。计算公式如下:ATR=∣最高价-最低价∣和∣最高价-昨收∣和∣昨收-最低价∣的最大值真实波幅(ATR)=TR的N日简单移动平均参数N设置为14日函数1TrueHigh,求真实高点:VarsNumericTHighValue;//声明数值型变量THighValue。//BeginTHighValue=Close[1];//语句1,直接让变量THighValue值=昨日收盘价。//If(High>=Close[1])//语句2,假如当前最高价High>=昨日收盘价时。//THighValue=High;//变量THighValue值=当前最高价。//ReturnTHighValue;//语句1和语句2是一个并列语句,哪个条件符合的,就用哪个语句的值,这可以先判断出最高价和昨收价哪个是最大值。//End函数2TrueLow,求真实低点:VarsNumericTLowValue;//声明数值型变量TLowValue。//BeginTLowValue=Close[1];//语句1,变量TLowValue值=昨收价。//If(Low<=Close[1])//语句2,假如当前最低价<=昨收价。//TLowValue=Low;//变量TLowValue值=当前低价。//ReturnTLowValue;//求出当前最低价与昨收价那个为最小值。//End函数3TrueRange,真实振幅范围:BeginIf(CurrentBar==0)//假如为第一根k。//ReturnHigh-Low;//那振幅就是直接最高价减去最低价。//Else//第二根之后的振幅。//ReturnTrueHigh-TrueLow;//就是函数TrueHigh值减去函数TrueLow值。//End函数4AvgTrueRange,求平均真实振幅:ParamsNumericLength(10);//声明数值型参数Length,就是周期了,赋值给它10周期。//BeginReturnAverage(TrueRange,Length);//求出10个周期真实振幅平均值。//End函数5ATR,表达的意思跟第四个函数完全一样,这里给它写出来:ParamsNumericLength(14);//声明数值型参数Length,初值为14周期。BeginPlotNumeric("ATR",AvgTrueRange(Length));//在k线图上画出ATR出来,它的值是14根k线的平均振幅值。End以上是知道了ATR是如何求出来的。一般都只用它来观察波幅集中区域,从周期日k逐步观察统计到你所用的周期,会知道,这个品种它一天大概集中振幅多大。观察ATR的值,看上面代码可以知道,直接把参数14改成1就可以观察它每根k线的波幅了。ATR策略信号出入场规则:当价格比上一个交易日收盘价高2ATR时买入,当价格比上一个交易日收盘价低2ATR时卖出。策略信号代码如下:ParamsNumericLength(14);VarsNumericSeriesatr;Numericupline;Numericdownline;Numericmyprice;Beginatr=Average(TrueRange,Length);upline=Close[1]+2*atr;downline=Close[1]-2*atr;PlotNumeric("k",upline);PlotNumeric("h",downline);If(MarketPosition!=1&&High>=upline){myprice=Max(upline,Open);Buy(1,myprice);}If(MarketPosition==1AndLow<=downline){myprice=Min(downline,Open);Sell(1,myprice);}If(MarketPosition!=-1AndLow<=downline){myprice=Min(downline,Open);SellShort(1,myprice);}If(MarketPosition==-1&&High>=upline){myprice=Max(upline,Open);BuyToCover(1,myprice);}End;信号代码注解:Params定义参数段,用于设置策略中使用的变量的初始值。NumericLength(14);定义一个名为
Length
的数值型变量,并初始化为14,用于计算ATR的周期。Vars定义变量段,用于声明策略中使用的变量。NumericSeriesatr;声明一个名为
atr
的数值型序列,用于存储ATR值。Numericupline;声明一个名为
upline
的数值型变量,用于存储买入触发价格。Numericdownline;声明一个名为
downline
的数值型变量,用于存储卖出触发价格。Numericmyprice;声明一个名为
myprice
的数值型变量,用于存储实际交易的价格。Begin开始策略的主体部分。atr=Average(TrueRange,Length);计算ATR值,即真实波动幅度的
Length
周期移动平均。upline=Close[1]+2*atr;设置买入触发价格,即上一个交易日的收盘价加上2倍ATR。downline=Close[1]-2*atr;设置卖出触发价格,即上一个交易日的收盘价减去2倍ATR。PlotNumeric("k",upline);在图表上绘制名为"k"的买入触发线。PlotNumeric("h",downline);在图表上绘制名为"h"的卖出触发线。If(MarketPosition!=1&&High>=upline){...}如果当前市场位置不是多头且最高价达到或超过买入触发价格,则执行以下操作。myprice=Max(upline,Open);设置买入价格为开盘价和买入触发价格中的较高者。Buy(1,myprice);执行买入操作。If(MarketPosition==1AndLow<=downline){...}如果当前市场位置是多头且最低价达到或低于卖出触发价格,则执行以下操作。myprice=Min(downline,Open);设置卖出价格为开盘价和卖出触发价格中的较低者。Sell(1,myprice);执行卖出操作。If(MarketPosition!=-1AndLow<=downline){...}如果当前市场位置不是空头且最低价达到或低于卖出触发价格,则执行以下操作。myprice=Min(downline,Open);设置卖出开空的价格为开盘价和卖出触发价格中的较低者。SellShort(1,myprice);执行卖出开空操作。If(MarketPosition==-1&&High>=upline){...}如果当前市场位置是空头且最高价达到或超过买入触发价格,则执行以下操作。myprice=Max(upline,Open);设置买入平空的价格为开盘价和买入触发价格中的较高者。BuyToCover(1,myprice);执行买入平空操作。End看来不行得修改下:(代码)ParamsNumericLength(14);NumericLength3(360);VarsNumericSeriesatr;Numericupline;Numericdownline;Numericmyprice;NumericSeriesAvgValue3;Beginatr=Average(TrueRange,Length);upline=Close[1]+2*atr;downline=Close[1]-2*atr;PlotNumeric("k",upline);PlotNumeric("h",downline);AvgValue3=AverageFC(Close,Length3);PlotNumeric("AvgValue3",AvgValue3);If(MarketPosition!=1&&High>=uplineandHigh>AvgValue3){myprice=Max(upline,Open);Buy(1,myprice);}If(MarketPosition==1AndLow<=downline){myprice=Min(downline,Open);Sell(1,myprice);}If(MarketPosition!=-1AndLow<=downlineAndLow<AvgValue3){myprice=Min(downline,Open);SellShort(1,myprice);}If(MarketPosition==-1&&High>=upline){myprice=Max(upline,Open);BuyToCover(1,myprice);}End修改后的代码注解:Params(参数)*`NumericLength(14);`定义了一个名为`Length`的数值型参数,其默认值为14。这个参数可能用于后续计算中的时间周期或数据点的数量。*`NumericLength3(360);`定义了另一个名为`Length3`的数值型参数,其默认值为360。这个参数可能用于另一个需要更长时间周期或数据点数量的计算。Vars(变量)定义了一系列数值型变量和序列,用于在策略执行过程中存储和计算数据。 +`NumericSeriesatr;` 平均真实范围(ATR)的序列。 +`Numericupline;` 上轨线的数值。 +`Numericdownline;` 下轨线的数值。 +`Numericmyprice;` 交易价格的数值。 +`NumericSeriesAvgValue3;` 基于`Length3`的收盘价的平均值序列。策略逻辑1.计算ATR`atr=Average(TrueRange,Length);`计算最近`Length`个时间周期的平均真实范围(ATR)。2.计算上下轨线`upline=Close[1]+2*atr;``downline=Close[1]-2*atr;`基于前一个周期的收盘价和ATR的两倍值来计算上下轨线。3.绘制轨线使用`PlotNumeric`函数来绘制上下轨线。4.计算长期平均值`AvgValue3=AverageFC(Close,Length3);`计算最近`Length3`个时间周期的收盘价的平均值5.交易逻辑*当不在多头仓位(`MarketPosition!=1`)且当前最高价高于上轨线并高于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论