基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx

上传人:wj 文档编号:2128115 上传时间:2023-05-02 格式:DOCX 页数:8 大小:12.31KB
下载 相关 举报
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第1页
第1页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第2页
第2页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第3页
第3页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第4页
第4页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第5页
第5页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第6页
第6页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第7页
第7页 / 共8页
基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx

《基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx》由会员分享,可在线阅读,更多相关《基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx(8页珍藏版)》请在冰点文库上搜索。

基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx

基于Java语言开发的个性化股票分析技术:

能量潮指标(OBV)

能量潮指标(OBV)根据股市成交量来推测股价趋势。

由美国的投资分析家JoeGranville所创。

使用方法:

用法:

1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。

迅动股票分析平台在此基础上利用Java语言开发了能量潮指标(OBV),源代码如下:

XML描述:

xmlversion="1.0"encoding="UTF-8"?

>

fullName="能量潮指标"

class="com.shengrensoft.stock.model.indicator.dailyobv.DailyOBVIndicator"

dataUnit="D">

--仅限:

分钟、每日、每周、每月四种情况允许-->

--参数列表-->

--数据列表-->

--输出列表-->

--图形:

能量潮指标-->

--白色线形图-->

能量潮指标(OBV)根据股市成交量来推测股价趋势。

由美国的投资分析家JoeGranville所创。

使用方法:

用法:

1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。

Java代码:

/*

*@(#)DailyOBVIndicator.java

*

*Copyright@HangzhouShengrenSoftwareTech.Co.,Ltd.

*/

packagecom.shengrensoft.stock.model.indicator.dailyobv;

importjava.rmi.RemoteException;

importjava.text.DecimalFormat;

importjava.util.LinkedHashMap;

importjava.util.List;

importmon.util.DateUtil;

importmon.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能量潮指标的值列表

*/

publicLinkedHashMapcalculate(

StringstkCode,

java.util.DatebeginDate,

java.util.DatecloseDate,

ListparamsList)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能量潮指标的值序列

*/

privateLinkedHashMapcalcStkDailyOBV(

StringstkCode,

java.util.DatebeginDate,

java.util.DatecloseDate){

//准备好指标返回值列表

LinkedHashMapindicatorValueList=

newLinkedHashMap();

//取得指定股票指定日期范围的日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)&&(change<0)){

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能量潮指标的值序列

*/

privateLinkedHashMapcalcIdxDailyOBV(

StringidxCode,

java.util.DatebeginDate,

java.util.DatecloseDate){

//准备好指标返回值列表

LinkedHashMapindicatorValueList=

newLinkedHashMap();

//取得指定股票指定日期范围的日K数据

GettingDataListdataList=super.getUsingDataList();

Datadata=dataList.getDailyData(

DataName.IdxDailyKData.getShortName(),idxCode,beginDate,closeDate);

if(data==null){

returnindicatorValueList;//表示指定日期范围内无对应的日K数据

}

//数据类型转换

IdxDailyKDatadailyKData=(IdxDailyKData)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)&&(change<0)){

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能量潮指标的值序列。

*

*@paramblkCode扳指代码

*@parambeginDate起始日期

*@paramcloseDate终止日期

*

*@returnOBV能量潮指标的值序列

*/

privateLinkedHashMapcalcBlkDailyOBV(

StringblkCode,

java.util.DatebeginDate,

java.util.DatecloseDate){

//准备好指标返回值列表

LinkedHashMapindicatorValueList=

newLinkedHashMap();

//取得指定股票指定日期范围的日K数据

GettingDataListdataList=super.getUsingDataList();

Datadata=dataList.getDailyData(

DataName.BlkDailyKData.getShortName(),blkCode,beginDate,closeDate);

if(data==

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2