欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc

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

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

    基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc

    基于Java语言开发的个性化股票分析技术:量能突破模型(Energe-Break)一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给用户明确的建议。迅动股票分析平台在此基础上利用Java语言开发了量能突破模型(Energe-Break),源代码如下:XML描述:<?xml version="1.0" encoding="UTF-8" ?><analyser shortName="Energe-Break" fullName="量能突破模型" class="u008660011.model.analyser.eb.EBAnalyser"> <!- 参数列表 -> <paramList> <param shortName="N" value="40" fullName="天数"/> <param shortName="C" value="20" fullName="加减分系数"/> </paramList> <!- 数据列表 -> <dataList> <data shortName="StkDailyK" /> <data shortName="IdxDailyK" /> <data shortName="BlkDailyK" /> </dataList> <description> 一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给用户明确的建议。 </description></analyser>Java代码:/* * (#)EBnalyser.java * * Copyright Hangzhou Shengren Software Tech. Co., Ltd. */package u008660011.model.analyser.eb;import java.rmi.RemoteException;import java.util.List;import org.apache.commons.lang.math.NumberUtils;import com.shengrensoft.stock.center.common.util.DateUtil;import com.shengrensoft.stock.center.common.util.StkAnalysisUtil;import com.shengrensoft.stock.center.data.Data;import com.shengrensoft.stock.center.data.StkDailyK.StkDailyKData;import com.shengrensoft.stock.center.data.IdxDailyK.IdxDailyKData;import com.shengrensoft.stock.center.data.BlkDailyK.BlkDailyKData;import com.shengrensoft.stock.center.model.ModelParam;import com.shengrensoft.stock.center.model.analyser.AbstractAnalyser;import com.shengrensoft.stock.center.model.analyser.AnalysisValue;/* * <code>EB</code>量能突破分析模型的实现类。 * * author 迅动平台 2012/09/20 新建 */public class EBAnalyser extends AbstractAnalyser /* 序列版本ID */ private static final long serialVersionUID = -732447148977150017L; / 参数名定义 /* 参数名:N天数 */ private static final String PARAM_N = "N" /* 参数名:加减分系数 */ private static final String PARAM_CONFICENT = "C" /* * 构造方法。 */ public EBAnalyser() throws RemoteException /* * 分析买入点的变化。 * * param stkCode 证券代码 * param transDate 交易日期 * param paramsList 模型参数列表 * * return 分析结果(含评分和评价) */ public AnalysisValue doAnalysis( String stkCode, java.util.Date transDate, List<ModelParam> paramsList) throws RemoteException AnalysisValue analysisValue = null; / 股票代码合法性检查 if (stkCode = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("股票代码不合法,分析失败。"); return analysisValue; / 交易日期合法性检查 if (transDate = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("交易日期不合法,分析失败。"); return analysisValue; / 参数列表合法性检查 if (paramsList = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("参数列表不合法,分析失败。"); return analysisValue; / 取得分析所需的模型参数 int paramN = 0; int paramCONFICENT = 0; for (ModelParam param : paramsList) if (PARAM_N.equals(param.getShortName() paramN = NumberUtils.toInt(param.getValue(); else if (PARAM_CONFICENT.equals(param.getShortName() paramCONFICENT = NumberUtils.toInt(param.getValue(); else return null; / 发现一个意外的模型参数 / 天数的合法性检查 if (paramN < 1) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("天数不合法,分析失败。"); return analysisValue; / (%)加减分系数 if (paramCONFICENT < 1 | paramCONFICENT > 99) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("加减分系数,分析失败。"); return analysisValue; / 判别证券代码类型(是否为股票代码,股指代码,板指代码),分别进行分析 StkAnalysisUtil stkAnalysisUtil = super.getStkAnalysisUtil(); if (stkAnalysisUtil.isStkCode(stkCode) analysisValue = this.analyseStk(stkCode, transDate, paramN, paramCONFICENT); if (analysisValue = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("公司新上市或该天缺少数据,分析失败!"); return analysisValue; else if (stkAnalysisUtil.isIdxCode(stkCode) analysisValue = this.analyseIdx(stkCode, transDate, paramN, paramCONFICENT); if (analysisValue = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("公司新上市或该天缺少数据,分析失败!"); return analysisValue; else if (stkAnalysisUtil.isBlkCode(super.getUserId(), stkCode) analysisValue = this.analyseBlk(stkCode, transDate, paramN, paramCONFICENT); if (analysisValue = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("公司新上市或该天缺少数据,分析失败!"); return analysisValue; else analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("证劵代码类型不符,分析失败!"); return analysisValue; /* * 根据能量突破提示的不同,对股票进行分析、评分、评价。 * * param stkCode 股票代码 * param transDate 交易日期 * param paramN 天数 * param paramCONFICENT (%)加减分系数 * * return 返回结果(含评分和评价) */ private AnalysisValue analyseStk( String stkCode, java.util.Date transDate, int paramN, int paramCONFICENT) AnalysisValue analysisValue = null; / 计算TTJ值 Integer TTJ = calcStkTTJ(stkCode, transDate, paramN); if (TTJ = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("数据不足,分析失败"); return analysisValue; / 计算资金增幅百分比 Double pricePerct = calcStkPricePerct(stkCode, transDate); if (pricePerct = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("数据不足,分析失败"); return analysisValue; / 近几日出现量能平台 if (TTJ < 5 && TTJ >=1 && pricePerct > 0) java.util.Date date = transDate; int count = 0; / 将date移至量能突破的当天 do date = super.getStkTransDateUtil() .getBeforeTransDate(stkCode, date); count +; while (count < TTJ); Integer score = null; java.util.Date platformDate = date; Integer platformClose = null; Integer platformOpen = null; Integer halfPlatform = null; / 日K线的1/2处 boolean flag = true; / 用来判断当前true:看涨,false:看跌 Double doubleRange = null;/ 当天相对于量能平台的涨跌幅 Integer intRange = null; do String dateStr = DateUtil.getFormatedDate(date, "yyyyMMdd"); / 取得个股的当日日K数据 StkDailyKData dailyKData = (StkDailyKData) super.getUsingDataList().getDailyData( Data.DataName.StkDailyKData.getShortName(), stkCode, date); if (dailyKData = null) return null; Integer open = dailyKData.getOpen(dateStr); if (open = null) return null; Integer close = dailyKData.getClose(dateStr); if (date = platformDate)/ 量能平台当天 platformClose = close; platformOpen = open; halfPlatform = Math.abs(close - open) / 2 + platformOpen; else / 计算当天相对于量能平台的涨跌幅 doubleRange = 100.0 * (close - platformClose) / platformClose; intRange = doubleRange.intValue(); if (platformOpen < platformClose)/ 量能平台当天K线为阳线 if(doubleRange < 0) / 看跌 / 如果是量能平台出现后的第一天或者跌破阳线1/2 if (score = null | (flag = true && close < halfPlatform) score = 20; flag = false; else if (close > halfPlatform) score += intRange; else score -= intRange; else / 看涨 if(score = null) score = 90; else score -= intRange; else / 量能平台当天K线为阴线 if (doubleRange < 0) / 看跌 if(score = null | flag = true) score = 20; flag = false; else score -= intRange; else / 看涨 if(score = null) score = 90; else score -= intRange; date = super.getStkTransDateUtil().getNextTransDate(stkCode, date); while (!date.after(transDate); analysisValue = this.assertValue(stkCode, transDate, score, intRange, flag, TTJ); return analysisValue; else / 近几日无量能平台出现 analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(40); analysisValue.setResultDesc("近几日未出现量能平台,保持观望"); return analysisValue; /* * 根据能量突破提示的不同,对股指进行分析、评分、评价。 * * param idxCode 股指代码 * param transDate 交易日期 * param paramN 天数 * param paramCONFICENT (%)加减分系数 * * return 返回结果(含评分和评价) */ private AnalysisValue analyseIdx( String idxCode, java.util.Date transDate, int paramN, int paramCONFICENT) AnalysisValue analysisValue = null; / 计算TTJ值 Integer TTJ = calcIdxTTJ(idxCode, transDate, paramN); if (TTJ = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(idxCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("数据不足,分析失败"); return analysisValue; / 计算资金增幅百分比 Double pricePerct = calcIdxPricePerct(idxCode, transDate); if (pricePerct = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(idxCode); analysisValue.setResultScore(0); analysisValue.setResultDesc("数据不足,分析失败"); return analysisValue; / 近几日出现量能平台 if (TTJ < 5 && TTJ >=1 && pricePerct > 0) java.util.Date date = transDate; int count = 0; / 将date移至量能突破的当天 do date = super.getStkTransDateUtil() .getBeforeTransDate(date); count +; while (count < TTJ); Integer score = null; java.util.Date platformDate = date; Integer platformClose = null; Integer platformOpen = null; Integer halfPlatform = null; / 日K线的1/2处 boolean flag = true; / 用来判断当前true:看涨,false:看跌 Double doubleRange = null;/ 当天相对于量能平台的涨跌幅 Integer intRange = null; do String dateStr = DateUtil.getFormatedDate(date, "yyyyMMdd"); / 取得个股的当日日K数据 IdxDailyKData dailyKData = (IdxDailyKData) super.getUsingDataList().getDailyData( Data.DataName.IdxDailyKData.getShortName(), idxCode, date); if (dailyKData = null) return null; Integer open = dailyKData.getOpen(dateStr); if (open = null) return null; Integer close = dailyKData.getClose(dateStr); if (date = platformDate)/ 量能平台当天 platformClose = close; platformOpen = open; halfPlatform = Math.abs(close - open) / 2 + platformOpen; else

    注意事项

    本文(基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开