欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2021-2022收藏的精品资料基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx

    • 资源ID:30687928       资源大小:21KB        全文页数:8页
    • 资源格式: DOCX        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2021-2022收藏的精品资料基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx

    基于Java语言开发的个性化股票分析技术:能量潮指标(OBV)能量潮指标(OBV)根据股市成交量来推测股价趋势。由美国的投资分析家Joe Granville所创。使用方法:用法:1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。迅动股票分析平台在此基础上利用Java语言开发了能量潮指标(OBV),源代码如下:XML描述:<?xml version="1.0" encoding="UTF-8" ?><indicator shortName="OBV" fullName="能量潮指标"class="com.shengrensoft.stock.model.indicator.dailyobv.DailyOBVIndicator"dataUnit="D"><!- 仅限:分钟、每日、每周、每月 四种情况允许 -> <!- 参数列表 -> <paramList> </paramList> <!- 数据列表 -> <dataList> <data shortName="StkDailyK" /> <data shortName="IdxDailyK" /> <data shortName="BlkDailyK" /> </dataList> <!- 输出列表 -> <valueList> <value shortName="O" fullName="能量潮指标" /> </valueList> <!- 图形:能量潮指标 -> <drawChart name="O" region="IndicatorF"> <line thickness="1" color="#FFFFFF" opacity="1"><!- 白色线形图 -> <valueList> <value shortName="O" name="value" /> </valueList> </line> </drawChart> <description> 能量潮指标(OBV)根据股市成交量来推测股价趋势。由美国的投资分析家Joe Granville所创。使用方法:用法:1.股价上升OBV线下降,买盘无力2.股价下跌OBV线上升,买盘旺盛,反弹有望3.OBV缓慢上升,买盘渐强,买进信号4.OBV急速上升,买盘力量将尽,卖出信号5.OBV线由正转负,下跌趋势,卖出信号;反之,买进信号。 </description></indicator>Java代码:/* * (#)DailyOBVIndicator.java* * Copyright Hangzhou Shengren Software Tech. Co., Ltd. */package com.shengrensoft.stock.model.indicator.dailyobv;import java.rmi.RemoteException;import java.text.DecimalFormat;import java.util.LinkedHashMap;import java.util.List;import mon.util.DateUtil;import mon.util.StkAnalysisUtil;import com.shengrensoft.stock.center.data.Data;import com.shengrensoft.stock.center.data.GettingDataList;import com.shengrensoft.stock.center.data.Data.DataName;import com.shengrensoft.stock.center.data.StkDailyK.StkDailyKData;import com.shengrensoft.stock.center.model.ModelParam;import com.shengrensoft.stock.center.model.indicator.AbstractIndicator;import com.shengrensoft.stock.center.model.indicator.IndicatorValue;import com.shengrensoft.stock.center.data.IdxDailyK.IdxDailyKData;import com.shengrensoft.stock.center.data.BlkDailyK.BlkDailyKData;/* * OBV能量潮指标的实现类。 * * author 迅动平台 2012/08/06 新建 */public class DailyOBVIndicator extends AbstractIndicator /* 序列版本ID */ private static final long serialVersionUID = 6146654415916101973L; / 计算值定义 /* 计算值:能量潮指标 */ private static final String VALUE_OBV = "O" /* * 构造方法。 */ public DailyOBVIndicator() throws RemoteException /* * 取得指定时间范围内的OBV能量潮指标的值列表。 * * param stkCode 证券代码 * param beginDate 起始日期 * param closeDate 终止日期 * param paramsList 指标参数列表 * * return OBV能量潮指标的值列表 */ public LinkedHashMap<java.util.Date, IndicatorValue> calculate ( String stkCode, java.util.Date beginDate, java.util.Date closeDate, List<ModelParam> paramsList) throws RemoteException / 如果未指定起始日期,则返回空的值序列 if (beginDate = null) return null; / 如果未指定终止日期,则以当前日期作为终止日期 if (closeDate = null) closeDate = DateUtil.getSystemTime(); / 起始日期、终止日期的前后关系检查 if (beginDate.after(closeDate) return null; / 判别证券代码类型(股票代码、股指代码、或板指代码),分别计算OBV能量潮指标的值序列 StkAnalysisUtil stkAnalysisUtil = super.getStkAnalysisUtil(); if (stkAnalysisUtil.isStkCode(stkCode) return this.calcStkDailyOBV(stkCode, beginDate, closeDate); else if (stkAnalysisUtil.isIdxCode(stkCode) return this.calcIdxDailyOBV(stkCode, beginDate, closeDate); else if (stkAnalysisUtil.isBlkCode(super.getUserId(), stkCode) return this.calcBlkDailyOBV(stkCode, beginDate, closeDate); else return null; /* * 计算出指定股票指定日期范围的OBV能量潮指标的值序列。 * * param stkCode 股票代码 * param beginDate 起始日期 * param closeDate 终止日期 * * return OBV能量潮指标的值序列 */ private LinkedHashMap<java.util.Date, IndicatorValue> calcStkDailyOBV( String stkCode, java.util.Date beginDate, java.util.Date closeDate) / 准备好指标返回值列表 LinkedHashMap<java.util.Date, IndicatorValue> indicatorValueList = new LinkedHashMap<java.util.Date, IndicatorValue>(); / 取得指定股票指定日期范围的日K数据 GettingDataList dataList = super.getUsingDataList(); Data data = dataList.getDailyData( DataName.StkDailyKData.getShortName(),stkCode,beginDate,closeDate); if (data = null) return indicatorValueList; / 表示指定日期范围内无对应的日K数据 / 数据类型转换 StkDailyKData dailyKData = (StkDailyKData) data; long yestObv = 0; long obv = 0; boolean flag = true;/ 用来判断是否为第一天 java.util.Date date = beginDate; do / 日期 String dateStr = DateUtil.getFormatedDate(date,"yyyyMMdd"); / 容错处理:应对因系统原因导致某日该有交易日却没有交易记录的情况 Integer test = dailyKData.getOpen(dateStr); if (test != null && test != 0) / 构造指标值对象 IndicatorValue indicatorValue = new IndicatorValue(); Integer close = dailyKData.getClose(dateStr); if (close != null && close != 0) / 计算OBV值 obv = dailyKData.getVolume(dateStr); / 获得成交量 int change = dailyKData.getChange(dateStr); / 获得涨跌额(今收盘价-昨收盘价) if (!flag) && (change >= 0) obv = yestObv + obv; else if (!flag) && (change < 0) obv = yestObv - obv; else if (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能量潮指标的值序列 return indicatorValueList; /* * 计算出指定股指指定日期范围的OBV能量潮指标的值序列。 * * param idxCode 股指代码 * param beginDate 起始日期 * param closeDate 终止日期 * * return OBV能量潮指标的值序列 */ private LinkedHashMap<java.util.Date, IndicatorValue> calcIdxDailyOBV( String idxCode, java.util.Date beginDate, java.util.Date closeDate) / 准备好指标返回值列表 LinkedHashMap<java.util.Date, IndicatorValue> indicatorValueList = new LinkedHashMap<java.util.Date, IndicatorValue>(); / 取得指定股票指定日期范围的日K数据 GettingDataList dataList = super.getUsingDataList(); Data data = dataList.getDailyData( DataName.IdxDailyKData.getShortName(),idxCode,beginDate,closeDate); if (data = null) return indicatorValueList; / 表示指定日期范围内无对应的日K数据 / 数据类型转换 IdxDailyKData dailyKData = (IdxDailyKData) data; long yestObv = 0; long obv = 0; boolean flag = true;/ 用来判断是否为第一天 java.util.Date date = beginDate; do / 日期 String dateStr = DateUtil.getFormatedDate(date,"yyyyMMdd"); / 容错处理:应对因系统原因导致某日该有交易日却没有交易记录的情况 Integer test = dailyKData.getOpen(dateStr); if (test != null && test != 0) / 构造指标值对象 IndicatorValue indicatorValue = new IndicatorValue(); Integer close = dailyKData.getClose(dateStr); if (close != null && close != 0) / 计算OBV值 obv = dailyKData.getVolume(dateStr); / 获得成交量 int change = dailyKData.getChange(dateStr); / 获得涨跌额(今收盘价-昨收盘价) if (!flag) && (change >= 0) obv = yestObv + obv; else if (!flag) && (change < 0) obv = yestObv - obv; else if (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能量潮指标的值序列 return indicatorValueList; /* * 计算出指定板指指定日期范围的OBV能量潮指标的值序列。 * * param blkCode 扳指代码 * param beginDate 起始日期 * param closeDate 终止日期 * * return OBV能量潮指标的值序列 */ private LinkedHashMap<java.util.Date, IndicatorValue> calcBlkDailyOBV( String blkCode, java.util.Date beginDate, java.util.Date closeDate) / 准备好指标返回值列表 LinkedHashMap<java.util.Date, IndicatorValue> indicatorValueList = new LinkedHashMap<java.util.Date, IndicatorValue>(); / 取得指定股票指定日期范围的日K数据 GettingDataList dataList = super.getUsingDataList(); Data data = dataList.getDailyData( DataName.BlkDailyKData.getShortName(),blkCode,beginDate,closeDate); if (data = null) return indicatorValueList; / 表示指定日期范围内无对应的日K数据 / 数据类型转换 BlkDailyKData dailyKData = (BlkDailyKData) data; long yestObv = 0; long obv = 0; boolean flag = true;/ 用来判断是否为第一天 java.util.Date date = beginDate; do / 日期 String dateStr = DateUtil.getFormatedDate(date,"yyyyMMdd"); / 容错处理:应对因系统原因导致某日该有交易日却没有交易记录的情况 Integer test = dailyKData.getOpen(dateStr); if (test != null && test != 0) / 构造指标值对象 IndicatorValue indicatorValue = new IndicatorValue(); Integer close = dailyKData.getClose(dateStr); if (close != null && close != 0) / 计算OBV值 obv = dailyKData.getVolume(dateStr); / 获得成交量 int change = dailyKData.getChange(dateStr); / 获得涨跌额(今收盘价-昨收盘价) if (!flag) && (change >= 0) obv = yestObv + obv; else if (!flag) && (change < 0) obv = yestObv - obv; else if (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能量潮指标的值序列 return indicatorValueList; /* * 将含两位小数的整数值转化为带两位小数的字符串。 * * param intValue 整数值(含两位小数的整数) * * return 格式化字符串(带二位小数) */ private String format(Long longValue) if (longValue = null) return "0.00" else return new DecimalFormat("#.00").format(longValue / 100D); /股=>手

    注意事项

    本文(2021-2022收藏的精品资料基于Java语言开发的个性化股票分析技术能量潮指标OBV.docx)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开