加权(OBV)指标策略(TB版)_第1页
加权(OBV)指标策略(TB版)_第2页
加权(OBV)指标策略(TB版)_第3页
加权(OBV)指标策略(TB版)_第4页
加权(OBV)指标策略(TB版)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

加权(OBV)指标策略(TB版)一个基于波动加权后的OBV(On-BalanceVolume)指标的交易策略。该策略通过分析市场中的成交量和价格变化来生成买卖信号。其核心思想是利用OBV指标的变化来判断市场的趋势和动能,从而确定买入或卖出的时机。首先,策略通过计算波动加权的OBV值来反映市场的活跃程度。波动加权的OBV计算考虑了价格的波动范围,使得OBV能够更准确地反映市场的真实情况。具体来说,OBV值的计算基于收盘价与开盘价的差值除以最高价与最低价的差值,再乘以成交量。这种计算方法能够更好地捕捉到市场的波动性。其次,策略使用简单移动平均线(SMA)对波动加权的OBV进行平滑处理。通过计算OBV的SMA,策略能够识别出OBV的趋势变化。当OBV上穿其SMA时,表明市场动能增强,可能形成上升趋势;反之,当OBV下穿其SMA时,表明市场动能减弱,可能形成下降趋势。在买入方面,策略在OBV上穿其SMA时,会检查是否满足特定的条件来触发买入信号。这些条件通常包括当前的最高价是否超过某个预设的触发价,并且确保当前没有持仓。如果条件满足,策略会在当前最高价或更高位置建立多头头寸。在卖出方面,策略在OBV下穿其SMA时,会检查是否满足特定的条件来触发卖出信号。这些条件通常包括当前的最低价是否低于某个预设的触发价,并且确保当前没有持仓。如果条件满足,策略会在当前最低价或更低位置建立空头头寸。此外,策略还包含出场条件:当市场持有多头头寸时,如果OBV再次下穿其SMA,策略会在下一个开盘价平掉多头头寸。同样地,当市场持有空头头寸时,如果OBV上穿其SMA,策略会在下一个开盘价平掉空头头寸。总体而言,这个策略通过结合OBV指标和SMA,利用市场波动性和动能的变化来生成买卖信号。它能够在市场趋势明显时提供有效的入场和出场机会,适用于那些希望通过技术分析来指导交易的投资者。做多信号代码:ParamsNumericAvgLength(25);VarsNumericSeriesWOBV(0);NumericSeriesSSMA(0);boolSeriesBuySetup(False);NumericSeriesLEPrice(0);boolcon;boolcon2;boolSeriescon3;Numericminpoint;BeginIf(!CallAuctionFilter())Return;minpoint=Minmove*PriceScale;If(High-Low<>0)WOBV=WOBV+(((Close-Open)/(High-Low))*Vol);SSMA=Average(WOBV,AvgLength);con=CrossOver(WOBV,SSMA);If(con){BuySetup=True;LEPrice=High;}con2=CrossUnder(WOBV,SSMA);If(con2)BuySetup=False;If(MarketPosition==1)BuySetup=False;If(MarketPosition==0){If(BuySetup[1]andHigh>=LEPrice[1]+minpoint)Buy(0,max(Open,LEPrice[1]+minpoint));}con3=CrossUnder(WOBV,SSMA);If(MarketPosition==1andBarsSinceEntry>0){If(con3[1])Sell(0,Open);}End策略说明:本策略基于用波动加权后的OBV进行判断入场条件,结合高低点突破入场系统要素:1.计算波动加权WOBV,根据WOBV预期均值关系,设定触发条件单入场条件:1.当WOBV上穿它的MA时,在当根K线高点建立做多触发单2.当WOBV下穿它的MA时,在当根K线低点建立做空触发单出场条件:1.当WOBV上穿它的MA时,次根K线开盘平空仓2.当WOBV下穿它的MA时,次根K线开盘平多仓做多代码解读:ParamsNumericAvgLength(25);//声明数值参数AvgLength,初值25,为计算WOBV的ma周期值。VarsNumericSeriesWOBV(0);//声明数值序列变量WOBV,初值0,即指标变量。NumericSeriesSSMA(0);//声明数值序列变量SSMA,初值0,即WOBV指标均值变量。boolSeriesBuySetup(False);//声明布尔型序列变量BuySetup,初值为假,开多标识。NumericSeriesLEPrice(0);//声明数值序列变量LEPrice,初值0,多头触发线。boolcon;//声明布尔型变量con。boolcon2;//声明布尔型变量con2.boolSeriescon3;//声明布尔型序列变量con3.Numericminpoint;//声明数值变量minpoint,即最小变动价位。BeginIf(!CallAuctionFilter())Return;//集合竞价和小节休息过滤。minpoint=Minmove*PriceScale;//计算最小变动价位。//WOBV指标计算。If(High-Low<>0)//假如最高价High-最低价Low不等于0{WOBV=WOBV+(((Close-Open)/(High-Low))*Vol);//代入相应初始数值,计算波动加权后的OBV,即得WOBV值。}SSMA=Average(WOBV,AvgLength);//计算25周期的WOBV的MA均线。//多空触发条件计算con=CrossOver(WOBV,SSMA);//变量WOBV上穿SSMA均线。If(con)//假如条件con为真。{BuySetup=True;//开多标识BuySetup赋值为真。LEPrice=High;//变量LEPrice=当前最高价High。}con2=CrossUnder(WOBV,SSMA);//变量WOBV跌穿SSMA均线。If(con2)//假如条件con2为真。{BuySetup=False;//开多标识BuySetup赋值为假。}//做多标识初始化If(MarketPosition==1)//假如当前持有多单。BuySetup=False;//则开多标识赋值为假,即初始化。//系统入场If(MarketPosition==0)//当前没有持仓。{If(BuySetup[1]andHigh>=LEPrice[1]+minpoint)//假如前一个开多标识为真,且当前最高价大于等于前一变量LEPrice值加上一跳价格。{Buy(0,max(Open,LEPrice[1]+minpoint));//开多,两价格比较取较大值。}}//系统出场con3=CrossUnder(WOBV,SSMA);//变量WOBV跌穿SSMA均线。If(MarketPosition==1andBarsSinceEntry>0)//当前持有多单,且建仓数位大于0.{If(con3[1])//假如条件con3[1]成立。{Sell(0,Open);//以开盘价平仓。}}End做空信号代码:ParamsNumericAvgLength(25);VarsNumericSeriesWOBV(0);NumericSeriesSSMA(0);boolSeriesSellSetup(False);NumericSeriesSEPrice(0);boolcon;boolcon2;boolSeriescon3;Numericminpoint;BeginIf(!CallAuctionFilter())Return;minpoint=Minmove*PriceScale;If(High-Low<>0){WOBV=WOBV+(((Close-Open)/(High-Low))*Vol);}SSMA=Average(WOBV,AvgLength);con=CrossOver(WOBV,SSMA);If(con){SellSetup=False;}con2=CrossUnder(WOBV,SSMA);If(con2){SellSetup=True;SEPrice=Low;}If(MarketPosition==-1)SellSetup=False;If(MarketPosition==0){If(SellSetup[1]andLow<=SEPrice[1]-minpoint){SellShort(0,min(Open,SEPrice[1]-minpoint));}}con3=CrossOver(WOBV,SSMA);If(MarketPosition==-1andBarsSinceEntry>0){If(con3[1]){Buytocover(0,Open);}}End做空代码注解:Params//定义策略参数的开始NumericAvgLength(25);//定义一个名为AvgLength的数值参数,用于设置WOBV移动平均线的周期,初始值为25。Vars//声明变量的开始NumericSeriesWOBV(0);//声明一个数值序列变量WOBV,初始化为0,用于存储加权OBV值。NumericSeriesSSMA(0);//声明一个数值序列变量SSMA,初始化为0,用于存储WOBV的简单移动平均值。boolSeriesSellSetup(False);//声明一个布尔序列变量SellSetup,初始化为False,用于标识是否设置做空触发条件。NumericSeriesSEPrice(0);//声明一个数值序列变量SEPrice,初始化为0,用于记录做空触发价。boolcon;//声明一个布尔变量con,用于存储WOBV上穿SSMA的条件。boolcon2;//声明一个布尔变量con2,用于存储WOBV下穿SSMA的条件。boolSeriescon3;//声明一个布尔序列变量con3,用于记录WOBV上穿SSMA的条件。Numericminpoint;//声明一个数值变量minpoint,用于存储最小变动价位。Begin//策略逻辑的开始If(!CallAuctionFilter())Return;//如果当前不是交易时间,则退出策略。minpoint=Minmove*PriceScale;//根据最小变动价位和价格刻度计算minpoint。If(High-Low<>0)//如果当前K线的高低价差不为0。{WOBV=WOBV+(((Close-Open)/(High-Low))*Vol);//计算加权OBV值。}SSMA=Average(WOBV,AvgLength);//计算WOBV的AvgLength周期简单移动平均值。con=CrossOver(WOBV,SSMA);//判断WOBV是否上穿SSMA。If(con)//如果WOBV上穿SSMA。{SellSetup=False;//设置SellSetup为False,表示不做空。}con2=CrossUnder(WOBV,SSMA);//判断WOBV是否下穿SSMA。If(con2)//如果WOBV下穿SSMA。{SellSetup=True;//设置SellSetup为True,表示可以做空。SEPrice=Low;//记录当前最低价为做空触发价。}If(MarketPosition==-1)//如果当前持有空头头寸。SellSetup=False;//重置SellSetup为False,表示不继续做空。If(MarketPosition==0)//如果当前没有持仓。{If(SellSetup[1]andLow<=SEPrice[1]-minpoint)//如果前一根K线的SellSetup为True,并且当前最低价小于前一根K线的SEPrice减去最小变动价位。{SellShort(0,min(Open,SEPrice[1]

温馨提示

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

评论

0/150

提交评论