直方图指标策略(TB版)_第1页
直方图指标策略(TB版)_第2页
直方图指标策略(TB版)_第3页
直方图指标策略(TB版)_第4页
直方图指标策略(TB版)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

直方图指标策略(TB版)主要思想:基于开盘价和收盘价间的相对关系变化(通过柱状图上穿或下穿零轴)来判断市场趋势,并据此进行交易决策。系统要素:趋势判断:使用10个开盘价的指数移动平均(EMA)与10个收盘价的EMA之差作为柱状图(Histogram)指标。当柱状图上穿零轴时,视为上升趋势;下穿零轴时,视为下降趋势。入场与平仓价格计算:多头入场:上升趋势确立后,将上穿K线的最高价加上10周期的ATR(平均真实波动范围)的一半作为多头入场触发价(BuyPrice)。多头平仓:上升趋势确立后,将上穿K线的最低价减去10周期的ATR的一半作为多头平仓触发价(LongExitPrice)。空头入场:下降趋势确立后,将下穿K线的最低价减去10周期的ATR的一半作为空头入场触发价(SellPrice)。空头平仓:下降趋势确立后,将下穿K线的最高价加上10周期的ATR的一半作为空头平仓触发价(ShortExitPrice)。入场条件:做多:当柱状图上穿零轴,且当前最高价大于等于多头入场触发价时,执行买入操作。做空:当柱状图下穿零轴,且当前最低价小于等于空头入场触发价时,执行卖空操作。出场条件:多头平仓:当前最低价小于等于多头平仓触发价。或市场转为下降趋势。空头平仓:当前最高价大于等于空头平仓触发价。或市场转为上升趋势。代码实现概述:包括参数设置、变量声明、条件判断、交易执行及图表绘制等部分。代码示例:做多部分:声明参数(OpenLen,CloseLen)、变量(Histogram,BuyPrice,LongExitPrice,con1,con2,ATR10)。通过计算Histogram、ATR10等指标,并根据条件设置入场和平仓价格。根据市场位置和价格条件执行买入和卖出操作。在图表上绘制入场和平仓价格。做空部分:类似做多部分,但条件判断和操作方向相反。注意事项:集合竞价和小节休息期间的交易需通过过滤器排除。成交量(Vol)需大于0才能执行交易。图表绘制功能用于辅助分析和决策。做多代码:ParamsNumericOpenLen(10);NumericCloseLen(10);VarsNumericSeriesHistogram(0);NumericSeriesBuyPrice(0);NumericSeriesLongExitPrice(0);BoolSeriescon1;BoolSeriescon2;NumericSeriesATR10(0);BeginIf(!CallAuctionFilter())Return;Histogram=XAverage(Close,CloseLen)-XAverage(Open,OpenLen);con1=CrossOver(Histogram,0);con2=CrossUnder(Histogram,0);ATR10=Average(TrueRange,10);If(con1){BuyPrice=High+ATR10*0.5;LongExitPrice=Low-ATR10*0.5;}If(Histogram[1]>0AndVol>0){if(High>=BuyPrice)Buy(0,Max(Open,BuyPrice));}If(MarketPosition==1AndBarsSinceEntry>0Andcon2[1]AndVol>0){Sell(0,Open);}If(MarketPosition==1AndBarsSinceEntry>0Andlow<=LongExitPriceAndVol>0){Sell(0,Min(Open,LongExitPrice));}if(MarketPosition==0andHistogram>0andBuyPrice>0)PlotNumeric("BuyPrice",BuyPrice);if(MarketPosition==1)PlotNumeric("LongExitPrice",LongExitPrice);End基于开收盘价格间的相对关系变化进行判断。策略说明:本策略计算指数移动平均(10个开盘价和10个收盘价,然后后者减去前者得到柱状图),通过柱状图上穿零轴还是下穿零轴来判断上升和下降趋势系统要素:1.10个开盘价的指数移动平均与10个收盘价的指数移动平均之差若上穿零轴定义为上升趋势,上升趋势定义满足后将上穿K线的最高价加上10周期的ATR的一半作为多头入场触发价,同时将上穿K线的最低价减去10周期的ATR的一半作为多头平仓触发价;2.10个开盘价的指数移动平均与10个收盘价的指数移动平均之差若下穿零轴定义为下降趋势,下降趋势定义满足后将下穿K线的最低价减去10周期的ATR的一半作为空头入场触发价,同时将下穿K线的最高价加上10周期的ATR的一半作为空头平仓触发价;入场条件:1.10个开盘价的指数移动平均大于10个收盘价的指数移动平均并且向上突破了多头触发价则进场做多;2.10个开盘价的指数移动平均小于10个收盘价的指数移动平均并且向下突破了空头触发价则进场做空;出场条件:1.跌破多头平仓触发价或者转为下降趋势多头平仓;2.突破空头平仓触发价或者转为上升趋势空头平仓;做多的代码解读如下:ParamsNumericOpenLen(10);//声明数值参数OpenLeng,初值10,用于计算开盘价指数移动平均的周期。//NumericCloseLen(10);//声明数值参数CloseLen,初值10,用于计算收盘价指数移动平均的周期。//VarsNumericSeriesHistogram(0);//声明数值序列变量Histogram,初值0,记录开盘价的指数移动平均与收盘价的指数移动平均之差。//NumericSeriesBuyPrice(0);//声明数值序列变量BuyPrice,初值0,多头触发价格。//NumericSeriesLongExitPrice(0);//声明数值序列变量LongExitPrice,初值0,多头平仓触发价格。//BoolSeriescon1;//声明布尔型序列变量con1,判断是否为上升趋势。//BoolSeriescon2;//声明布尔型序列变量con2,判断是否为下降趋势。//NumericSeriesATR10(0);//声明数值序列变量ATR10,初值0.//BeginIf(!CallAuctionFilter())Return;//集合竞价和小节休息过滤。////条件设置。//Histogram=XAverage(Close,CloseLen)-XAverage(Open,OpenLen);//把收盘价指数均值减去开盘价指数均值,即可得变量Histogram值。//con1=CrossOver(Histogram,0);//条件1,变量Histogram穿越0线。//con2=CrossUnder(Histogram,0);//条件2,变量Histogram跌破0线。//ATR10=Average(TrueRange,10);//求10周期的波动均值。////设置多头入场触发价与多头平仓触发价。//If(con1)//假如条件1成立。//{BuyPrice=High+ATR10*0.5;//进场价的算法。//LongExitPrice=Low-ATR10*0.5;//多头平仓价算法。//}//满足上升趋势且向上突破触发价则进场做多。//If(Histogram[1]>0AndVol>0)//假如前一变量Histogram大于0,且成交量大于0.//{if(High>=BuyPrice)//假如当前最高价大于等于进场价。//Buy(0,Max(Open,BuyPrice));//开仓买入,价格为当前开盘价与进场价的比较,取较大者。//}//转为下降趋势多头平仓出场。//If(MarketPosition==1AndBarsSinceEntry>0Andcon2[1]AndVol>0)//假如持有多单,且建仓数位大于0,且前一个条件2成立,且成交量大于0.//{Sell(0,Open);//以开盘价平仓。//}//向下突破多头平仓触发价格则多头平仓出场。//If(MarketPosition==1AndBarsSinceEntry>0Andlow<=LongExitPriceAndVol>0)//当前持有多单,建仓数位大于0,且当前最低价小于等于出场价,且成交量大于0.//{Sell(0,Min(Open,LongExitPrice));//平仓,开盘价与出场价比较,取较小值。//}//在图表上显示多头进场触发价格与多头平仓触发价格。//if(MarketPosition==0andHistogram>0andBuyPrice>0)PlotNumeric("BuyPrice",BuyPrice);//画线进场价。//if(MarketPosition==1)PlotNumeric("LongExitPrice",LongExitPrice);//画线出场价。//End做空代码:ParamsNumericOpenLen(10);NumericCloseLen(10);VarsNumericSeriesHistogram(0);NumericSeriesSellPrice(0);NumericSeriesShortExitPrice(0);BoolSeriescon1;BoolSeriescon2;NumericSeriesATR10(0);BeginIf(!CallAuctionFilter())Return;Histogram=XAverage(Close,CloseLen)-XAverage(Open,OpenLen);con1=CrossOver(Histogram,0);con2=CrossUnder(Histogram,0);ATR10=Average(TrueRange,10);if(con2){SellPrice=Low-ATR10*0.5;ShortExitPrice=High+ATR10*0.5;}if(Histogram[1]<0AndVol>0){if(low<=SellPrice)SellShort(0,Min(Open,SellPrice));}if(MarketPosition==-1andBarsSinceEntry>0Andcon1[1]AndVol>0){BuyToCover(0,Open);}if(MarketPosition==-1andBarsSinceEntry>0AndHigh>=ShortExitPriceAndVol>0){BuyToCover(0,Max(Open,ShortExitPrice));}if(MarketPosition==0andhistogram<0andSellPrice>0)PlotNumeric("SellPrice",SellPrice);if(MarketPosition==-1)PlotNumeric("ShortExitPrice",ShortExitPrice);End做空代码注释://参数Params//开盘价计算的均线周期NumericOpenLen(10);//收盘价计算的均线周期NumericCloseLen(10);//变量Vars//直方图系列,用于存储指标值NumericSeriesHistogram(0);//卖出价格系列NumericSeriesSellPrice(0);//平仓做空价格系列NumericSeriesShortExitPrice(0);//条件1的布尔系列BoolSeriescon1;//条件2的布尔系列BoolSeriescon2;//10周期的平均真实波动范围(ATR)NumericSeriesATR10(0);Begin//如果不满足集合竞价过滤器(可能用于排除开盘竞价阶段)则直接返回If(!CallAuctionFilter())Return;//计算直方图指标,为收盘价均线与开盘价均线的差值Histogram=XAverage(Close,CloseLen)-XAverage(Open,OpenLen);//当直方图指标上穿0线时,设置条件1为真con1=CrossOver(Histogram,0);//当直方图指标下穿0线时,设置条件2为真con2=CrossUnder(Histogram,0);//计算10周期的平均真实波动范围(ATR)ATR10=Average(TrueRange,10);//如果条件2满足(即直方图下穿0线)if(con2){//卖出价格设置为最低价减去0.5倍的ATR10SellPrice=Low-ATR10*0.5;//平仓做空价格设置为最高价加上0.5倍的ATR10ShortExitPrice=High+ATR10*0.5;}//如果前一个周期直方图小于0并且成交量大于0if(Histogram[1]<0AndVol>0){//如果当前最低价小于等于卖出价格,则做空交易if(low<=SellPrice)SellShort(0,Min(Open,SellPrice));}//如果当前是做空持仓状态,并且持仓周期大于0,条件1在前一个周期满足,并且成交量大于0if

温馨提示

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

评论

0/150

提交评论