自适应周期策略(文华版)_第1页
自适应周期策略(文华版)_第2页
自适应周期策略(文华版)_第3页
自适应周期策略(文华版)_第4页
自适应周期策略(文华版)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

自适应周期策略(赢智版)本策略是一种基于自适应周期和布林带交易策略的量化模型。该模型通过动态调整观察周期数来适应市场的波动性变化,并使用布林带指标来确定交易信号。核心观点包括:-**自适应周期调整**:通过计算波动率变化比率来动态调整观察周期数,确保自适应引擎在设定的范围内。-**布林带指标应用**:利用布林带指标的上轨和下轨来确定买入和卖出信号。-**交易信号生成**:根据收盘价与布林带上下轨的关系,生成相应的买入、卖出和平仓信号。###自适应周期调整-**波动率计算**:首先,计算过去30天收盘价的标准差,分别得到当天和昨天的波动率。-**波动率变化比率**:计算波动率的变化比率,即今天波动率与昨天波动率的差除以今天的波动率。-**观察周期数调整**:根据波动率的变化比率调整观察周期数,确保其在设定的上限和下限之间。-**四舍五入处理**:将调整后的观察周期数四舍五入到最近的整数。###布林带指标应用-**布林带上轨和下轨**:使用调整后的观察周期数和设定的布林带触发值,计算布林带的上轨和下轨。-**买入和卖出信号**:-如果收盘价高于布林带上轨,则在下一个交易日以买入点设置买入止损单。-如果收盘价低于布林带下轨,则在下一个交易日以卖出点设置卖出止损单。###交易信号生成-**买入信号**:当收盘价高于布林带上轨时,生成买入信号。-**卖出信号**:当收盘价低于布林带下轨时,生成卖出信号。-**多头平仓信号**:如果市场持仓为多头,则在下一个交易日以多头平仓点设置止损卖出。-**空头平仓信号**:如果市场持仓为空头,则在下一个交易日以空头平仓点设置买入平仓。###多头平仓点与空头平仓点-**多头平仓点**:计算过去观察周期内的收盘价平均值,作为多头平仓点。-**空头平仓点**:同样计算过去观察周期内的收盘价平均值,作为空头平仓点。该策略通过动态调整观察周期数来适应市场的波动性变化,并使用布林带指标来确定交易信号。具体的交易信号包括买入、卖出、多头平仓和空头平仓信号,均基于布林带上下轨和自适应周期数的计算结果。通过这些方法,策略旨在捕捉市场的波动性变化,实现稳健的交易表现。以下是对每行代码的注解:指标解释ceilingAmt:=60;#定义上限金额为60floorAmt:=20;#定义下限金额为20bolBandTrig:=2;#定义一个变量bolBandTrig并赋值为2todayVolatility:=STD(CLOSE,30);#计算收盘价的30日标准差,并将结果赋给todayVolatilityyesterDayVolatility:=STD(REF(CLOSE,1),30);#计算前一日收盘价的30日标准差,并将结果赋给yesterDayVolatility#yesterDayVolatility:=REF(STD(CLOSE,30),1);#注释:因为今天没有收完盘所以,采用今天的数据不准deltaVolatility:=(todayVolatility-yesterDayVolatility)/todayVolatility;#计算波动率的变化率lookBackDays2:=N*(1+deltaVolatility);#根据某个未定义的变量N和波动率变化率计算一个中间值lookBackDays2lookBackDays1:=INTPART(lookBackDays2);#对lookBackDays2取整,并将结果赋给lookBackDays1lookBackDays0:=MIN(lookBackDays1,ceilingAmt);#取lookBackDays1和ceilingAmt中的较小值,并将结果赋给lookBackDays0lookBackDays:=MAX(lookBackDays0,floorAmt);#取lookBackDays0和floorAmt中的较大值,并将结果赋给lookBackDays#lookBackDays:=VALUEWHEN(lookBackDays1<60ANDlookBackDays1>20,lookBackDays1);#注释:在上下界限之间就选这个值#lookBackDays:=VALUEWHEN(MIN(lookBackDays1,ceilingAmt)=MAX(lookBackDays1,floorAmt),lookBackDays1);MidLine:=MA(CLOSE,lookBackDays);#计算收盘价的lookBackDays日移动平均值,并将结果赋给MidLineBand:=STD(CLOSE,lookBackDays);#计算收盘价的lookBackDays日标准差,并将结果赋给BandupBand:=MidLine+bolBandTrig*Band;#计算上轨线的值dnBand:=MidLine-bolBandTrig*Band;#计算下轨线的值buyPoint:=HHV(REF(HIGH,1),lookBackDays);#计算前一日最高价在lookBackDays周期内的最高值,并将结果赋给buyPointsellPoint:=LLV(REF(LOW,1),lookBackDays);#计算前一日最低价在lookBackDays周期内的最低值,并将结果赋给sellPointlongLiqPoint:=MA(REF(CLOSE,1),lookBackDays);#计算前一日收盘价的lookBackDays日移动平均值,并将结果赋给longLiqPointshortLiqPoint:=MA(REF(CLOSE,1),lookBackDays);#计算前一日收盘价的lookBackDays日移动平均值,并将结果赋给shortLiqPointVERTLINE(CLOSE>upBandANDCROSS(HIGH,buyPoint),COLORRED);#当收盘价大于上轨线且最高价上穿buyPoint时绘制垂直红线VERTLINE(CROSS(longLiqPoint,C),COLORGREEN);#当longLiqPoint上穿当前收盘价时绘制垂直绿线TMP:=OPEN-CLOSE;#计算开盘价与收盘价的差值,并将结果赋给TMPDRAWLINE(TMP>0.00001,HIGH,TMP>0.00001,OPEN,COLORCYAN);#当TMP大于0.00001时,绘制从HIGH到OPEN的青色线DRAWLINE(TMP>0.00001,LOW,TMP>0.00001,CLOSE,COLORCYAN);#当TMP大于0.00001时,绘制从LOW到CLOSE的青色线DRAWLINE(TMP<-0.00001,HIGH,TMP<-0.00001,CLOSE,COLORRED);#当TMP小于-0.00001时,绘制从HIGH到CLOSE的红线DRAWLINE(TMP<-0.00001,LOW,TMP<-0.00001,OPEN,COLORRED);#当TMP小于-0.00001时,绘制从LOW到OPEN的红线DRAWLINE(ABS(TMP)<0.00001,LOW,ABS(TMP)<0.00001,OPEN,COLORWHITE);#当TMP的绝对值小于0.00001时,绘制从LOW到OPEN的白线DRAWLINE(ABS(TMP)<0.00001,HIGH,ABS(TMP)<0.00001,OPEN,COLORWHITE);#当TMP的绝对值小于0.00001时,绘制从HIGH到OPEN的白线STICKLINE(TMP>0,OPEN,CLOSE,COLORCYAN,0);#当TMP大于0时,绘制青色的柱状线STICKLINE(TMP<=0,OPEN,CLOSE,COLORRED,1);#当TMP小于等于0时,绘制红色的柱状线

指标公式代码N:=10;ceilingAmt:=60;floorAmt:=20;bolBandTrig:=2;todayVolatility:=STD(CLOSE,30);yesterDayVolatility:=STD(REF(CLOSE,1),30);//yesterDayVolatility:=REF(STD(CLOSE,30),1);//因为今天没有收完盘所以,采用今天的数据不准:deltaVolatility:=(todayVolatility-yesterDayVolatility)/todayVolatility;lookBackDays2:=N*(1+deltaVolatility);lookBackDays1:=INTPART(lookBackDays2);//取整lookBackDays0:=MIN(lookBackDays1,ceilingAmt);//比天花板低lookBackDays:=MAX(lookBackDays0,floorAmt);//比地板高//lookBackDays:=VALUEWHEN(lookBackDays1<60ANDlookBackDays1>20,lookBackDays1);//在上下界限之间就选这个值,//lookBackDays:=VALUEWHEN(MIN(lookBackDays1,ceilingAmt)=MAX(lookBackDays1,floorAmt),lookBackDays1);MidLine:=MA(CLOSE,lookBackDays);Band:=STD(CLOSE,lookBackDays);upBand:=MidLine+bolBandTrig*Band;dnBand:=MidLine-bolBandTrig*Band;buyPoint:=HHV(REF(HIGH,1),lookBackDays);sellPoint:=LLV(REF(LOW,1),lookBackDays);longLiqPoint:=MA(REF(CLOSE,1),lookBackDays);shortLiqPoint:=MA(REF(CLOSE,1),lookBackDays);VERTLINE(CLOSE>upBandANDCROSS(HIGH,buyPoint),COLORRED);VERTLINE(CROSS(longLiqPoint,C),COLORGREEN);TMP:=OPEN-CLOSE;DRAWLINE(TMP>0.00001,HIGH,TMP>0.00001,OPEN,COLORCYAN);DRAWLINE(TMP>0.00001,LOW,TMP>0.00001,CLOSE,COLORCYAN);DRAWLINE(TMP<-0.00001,HIGH,TMP<-0.00001,CLOSE,COLORRED);DRAWLINE(TMP<-0.00001,LOW,TMP<-0.00001,OPEN,COLORRED);DRAWLINE(ABS(TMP)<0.00001,LOW,ABS(TMP)<0.00001,OPEN,COLORWHITE);DRAWLINE(ABS(TMP)<0.00001,HIGH,ABS(TMP)<0.00001,OPEN,COLORWHITE);STICKLINE(TMP>0,OPEN,CLOSE,COLORCYAN,0);STICKLINE(TMP<=0,OPEN,CLOSE,COLORRED,1);信号代码注解ceilingAmt:=60;//定义一个参数,表示天花板值,用于限制自适应引擎查看周期数的上限floorAmt:=20;//定义一个参数,表示地板值,用于限制自适应引擎查看周期数的下限bolBandTrig:=2;//定义一个参数,表示布林带触发值,用于计算布林带的上下轨todayVolatility:=STD(CLOSE,30);//计算过去30天收盘价的标准差,并将其存储在变量todayVolatility中yesterDayVolatility:=STD(REF(CLOSE,1),30);//计算过去30天(前一日)收盘价的标准差,并将其存储在变量yesterDayVolatility中deltaVolatility:=(todayVolatility-yesterDayVolatility)/todayVolatility;//计算波动率的变化比率,并将其存储在变量deltaVolatility中lookBackDays2:=N*(1+deltaVolatility);//计算新的lookBackDays值,其中N是某个未知的常数lookBackDays1:=INTPART(lookBackDays2);//取整//将lookBackDays2值取整,并将其存储在变量lookBackDays1中lookBackDays0:=MIN(lookBackDays1,ceilingAmt);//比天花板低//将lookBackDays1与ceilingAmt进行比较,取较小值,并将其存储在变量lookBackDays0中lookBackDays:=MAX(lookBackDays0,floorAmt);//比地板高//将lookBackDays0与floorAmt进行比较,取较大值,并将其存储在变量lookBackDays中MidLine:=MA(CLOSE,lookBackDays);//计算过去lookBackDays周期内的收盘价移动平均线,并将其存储在变量MidLine中Band:=STD(CLOSE,lookBackDays);//计算过去lookBackDays周期内的收盘价标准差,并将其存储在变量Band中upBand:=MidLine+bolBandTrig*Band;//计算布林带上轨,并将其存储在变量upBand中dnBand:=MidLine-bolBandTrig*Band;//计算布林带下轨,并将其存储在变量dnBand中buyPoint:=HHV(REF(HIGH,1),lookBackDays);//计算过去lookBackDays周期内的最高价,并将其存储在变量buyPoint中sellPoint:=LLV(REF(LOW,1),lookBackDays);//计算过去lookBackDays周期内的最低价,并将其存储在变量sellPoint中longLiqPoint:=MA(REF(CLOSE,1),lookBackDays);//计算过去lookBackDays周期内的收盘价移动平均线,并将其存储在变量longLiqPoint中shortLiqPoint:=MA(REF(CLOSE,1),lookBackDays);//计算过去lookBackDays周期内的收盘价移动平均线,并将其存储在变量shortLiqPoint中CLOSE>upBandANDCROSS(HIGH,buyPoint),BK;//如果收盘价高于布林带上轨,并且高点点位超过或等于buyPoint,则买入CROSS(longLiqPoint,C),SP;//如果多头平仓点(longLiqPoint)超过当前收盘价(C),则平仓策略信号代码ceilingAmt:=60;floorAmt:=20;bolBandTrig:=2;todayVolatility:=STD(CLOSE,30);yesterDayVolatility:=STD(REF(CLOSE,1),30);//yesterDayVolatility:=REF(STD(CLOSE,30),1);//因为今天没有收完盘所以,采用今天的数据不准:deltaVolatility:=(todayVolatility-yesterDayVolatility)/todayVolati

温馨提示

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

评论

0/150

提交评论