(本源代码转载自迅动股票分析平台,了解更多请访问)基于Java语言开发的个性化股票分析技术:能量潮指标(OBV)能量潮指标(OBV)根据股市成交量来推测股价趋势。由美国的投资分析家JoeGranville所创。使用方法:用法:1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。迅动股票分析平台在此基础上利用Java语言开发了能量潮指标(OBV),源代码如下:XML描述:?xmlversion=1.0encoding=UTF-8?indicatorshortName=OBVfullName=能量潮指标class=com.shengrensoft.stock.model.indicator.dailyobv.DailyOBVIndicatordataUnit=D!--仅限:分钟、每日、每周、每月四种情况允许--!--参数列表--paramList/paramList!--数据列表--dataListdatashortName=StkDailyK/datashortName=IdxDailyK/datashortName=BlkDailyK//dataList!--输出列表--valueListvalueshortName=OfullName=能量潮指标//valueList!--图形:能量潮指标--drawChartname=Oregion=IndicatorFlinethickness=1color=#FFFFFFopacity=1!--白色线形图--valueListvalueshortName=Oname=value//valueList/line/drawChartdescription能量潮指标(OBV)根据股市成交量来推测股价趋势。由美国的投资分析家JoeGranville所创。使用方法:用法:1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐(本源代码转载自迅动股票分析平台,了解更多请访问)强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。/description/indicatorJava代码:/**@(#)DailyOBVIndicator.java**Copyright@HangzhouShengrenSoftwareTech.Co.,Ltd.*/packagecom.shengrensoft.stock.model.indicator.dailyobv;importjava.rmi.RemoteException;importjava.text.DecimalFormat;importjava.util.LinkedHashMap;importjava.util.List;importcom.shengrensoft.stock.center.common.util.DateUtil;importcom.shengrensoft.stock.center.common.util.StkAnalysisUtil;importcom.shengrensoft.stock.center.data.Data;importcom.shengrensoft.stock.center.data.GettingDataList;importcom.shengrensoft.stock.center.data.Data.DataName;importcom.shengrensoft.stock.center.data.StkDailyK.StkDailyKData;importcom.shengrensoft.stock.center.model.ModelParam;importcom.shengrensoft.stock.center.model.indicator.AbstractIndicator;importcom.shengrensoft.stock.center.model.indicator.IndicatorValue;importcom.shengrensoft.stock.center.data.IdxDailyK.IdxDailyKData;importcom.shengrensoft.stock.center.data.BlkDailyK.BlkDailyKData;/***OBV能量潮指标的实现类。**@author迅动平台2012/08/06新建*/publicclassDailyOBVIndicatorextendsAbstractIndicator{/**序列版本ID*/privatestaticfinallongserialVersionUID=6146654415916101973L;//计算值定义(本源代码转载自迅动股票分析平台,了解更多请访问)/**计算值:能量潮指标*/privatestaticfinalStringVALUE_OBV=O;/***构造方法。*/publicDailyOBVIndicator()throwsRemoteException{}/***取得指定时间范围内的OBV能量潮指标的值列表。**@paramstkCode证券代码*@parambeginDate起始日期*@paramcloseDate终止日期*@paramparamsList指标参数列表**@returnOBV能量潮指标的值列表*/publicLinkedHashMapjava.util.Date,IndicatorValuecalculate(StringstkCode,java.util.DatebeginDate,java.util.DatecloseDate,ListModelParamparamsList)throwsRemoteException{//如果未指定起始日期,则返回空的值序列if(beginDate==null){returnnull;}//如果未指定终止日期,则以当前日期作为终止日期if(closeDate==null){closeDate=DateUtil.getSystemTime();}//起始日期、终止日期的前后关系检查if(beginDate.after(closeDate)){returnnull;}//判别证券代码类型(股票代码、股指代码、或板指代码),分别计算OBV能量潮指标的值序列StkAnalysisUtilstkAnalysisUtil=super.getStkAnalysisUtil();if(stkAnalysisUtil.isStkCode(stkCode)){returnthis.calcStkDailyOBV(stkCode,beginDate,closeDate);}elseif(stkAnalysisUtil.isIdxCode(stkCode)){(本源代码转载自迅动股票分析平台,了解更多请访问)returnthis.calcIdxDailyOBV(stkCode,beginDate,closeDate);}elseif(stkAnalysisUtil.isBlkCode(super.getUserId(),stkCode)){returnthis.calcBlkDailyOBV(stkCode,beginDate,closeDate);}else{returnnull;}}/***计算出指定股票指定日期范围的OBV能量潮指标的值序列。**@paramstkCode股票代码*@parambeginDate起始日期*@paramcloseDate终止日期**@returnOBV能量潮指标的值序列*/privateLinkedHashMapjava.util.Date,IndicatorValuecalcStkDailyOBV(StringstkCode,java.util.DatebeginDate,java.util.DatecloseDate){//准备好指标返回值列表LinkedHashMapjava.util.Date,IndicatorValueindicatorValueList=newLinkedHashMapjava.util.Date,IndicatorValue();//取得指定股票指定日期范围的日K数据GettingDataListdataList=super.getUsingDataList();Datadata=dataList.getDailyData(DataName.StkDailyKData.getShortName(),stkCode,beginDate,closeDate);if(data==null){returnindicatorValueList;//表示指定日期范围内无对应的日K数据}//数据类型转换StkDailyKDatadailyKData=(StkDailyKData)data;longyestObv=0;longobv=0;booleanflag=true;//用来判断是否为第一天java.util.Datedate=beginDate;do{(本源代码转载自迅动股票分析平台,了解更多请访问)//日期StringdateStr=DateUtil.getFormatedDate(date,yyyyMMdd);//容错处理:应对因系统原因导致某日该有交易日却没有交易记录的情况Integertest=dailyKData.getOpen(dateStr);if(test!=null&&test!=0){//构造指标值对象IndicatorValueindicatorValue=newIndicatorValue();Integerclose=dailyKData.getClose(dateStr);if(close!=null&&close!=0){//计算OBV值obv=dailyKData.getVolume(dateStr);//获得成交量intchange=dailyKData.getChange(dateStr);//获得涨跌额(今收盘价-昨收盘价)if((!flag)&&(change=0)){obv=yestObv+obv;}elseif((!flag)&&(change0)){obv=yestObv-obv;}elseif(flag){yestObv=obv;flag=false;}indicatorValue.setValue(VALUE_OBV,format(obv));//添加指标值对象indicatorValueList.put(date,indicatorValue);}}//准备取得下一日的数据date=super.getStkTransDateUtil().getNextTransDate(date);if(date==null){break;}}while(!date.after(closeDate));//返回OBV能量潮指标的值序列returnindicatorValueList;}/***计算出指定股指指定日期范围的OBV能量潮指标的值序列。(本源代码转载自迅动股票分析平台,了解更多请访问)**@paramidxCode股指代码*@parambeginDate起始日期*@paramcloseDate终止日期**@returnOBV能量潮指标的值序列*/