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

上传人:本田雅阁 文档编号:2470148 上传时间:2019-04-01 格式:DOC 页数:38 大小:290.05KB
返回 下载 相关 举报
基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc_第1页
第1页 / 共38页
基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc_第2页
第2页 / 共38页
基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc_第3页
第3页 / 共38页
基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc_第4页
第4页 / 共38页
基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc》由会员分享,可在线阅读,更多相关《基于Java语言开发的个性化股票分析技术 量能突破模型EnergeBreak.doc(38页珍藏版)》请在三一文库上搜索。

1、基于Java语言开发的个性化股票分析技术:量能突破模型(Energe-Break)一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给用户明确的建议。迅动股票分析平台在此基础上利用Java语言开发了量能突破模型(Energe-Break),源代码如下:XML描述: 一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给用户明确的建议。 Java代码:/* * (#)EBnalyser.java * * Copyright Hangzhou Shengren Software

2、 Tech. Co., Ltd. */package u008660011.model.analyser.eb;import java.rmi.RemoteException;import java.util.List;import mons.lang.math.NumberUtils;import mon.util.DateUtil;import mon.util.StkAnalysisUtil;import com.shengrensoft.stock.center.data.Data;import com.shengrensoft.stock.center.data.StkDailyK.

3、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.c

4、enter.model.analyser.AnalysisValue;/* * EB量能突破分析模型的实现类。 * * author 迅动平台 2012/09/20 新建 */public class EBAnalyser extends AbstractAnalyser /* 序列版本ID */ private static final long serialVersionUID = -732447148977150017L; / 参数名定义 /* 参数名:N天数 */ private static final String PARAM_N = N; /* 参数名:加减分系数 */ priv

5、ate 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 para

6、msList) throws RemoteException AnalysisValue analysisValue = null; / 股票代码合法性检查 if (stkCode = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(股票代码不合法,分析失败。); return analysisValue; / 交易日期合法性检查 if (transDate = nu

7、ll) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(交易日期不合法,分析失败。); return analysisValue; / 参数列表合法性检查 if (paramsList = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setR

8、esultScore(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.getSho

9、rtName() paramCONFICENT = NumberUtils.toInt(param.getValue(); else return null; / 发现一个意外的模型参数 / 天数的合法性检查 if (paramN 1) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(天数不合法,分析失败。); return analysisValue; / (%)加减分系数 i

10、f (paramCONFICENT 99) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(加减分系数,分析失败。); return analysisValue; / 判别证券代码类型(是否为股票代码,股指代码,板指代码),分别进行分析 StkAnalysisUtil stkAnalysisUtil = super.getStkAnalysisUtil(); if (stkAna

11、lysisUtil.isStkCode(stkCode) analysisValue = this.analyseStk(stkCode, transDate, paramN, paramCONFICENT); if (analysisValue = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(公司新上市或该天缺少数据,分析失败!); return analysi

12、sValue; 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(公司新上市或该天缺少数据

13、,分析失败!); 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)

14、; analysisValue.setResultDesc(公司新上市或该天缺少数据,分析失败!); return analysisValue; else analysisValue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(证劵代码类型不符,分析失败!); return analysisValue; /* * 根据能量突破提示的不同,对股票进行分析、评分、评价。 * * param stkCode

15、股票代码 * 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, transDat

16、e, 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) analysisVal

17、ue = new AnalysisValue(); analysisValue.setStkCode(stkCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(数据不足,分析失败); return analysisValue; / 近几日出现量能平台 if (TTJ =1 & pricePerct 0) java.util.Date date = transDate; int count = 0; / 将date移至量能突破的当天 do date = super.getStkTransDateUtil() .g

18、etBeforeTransDate(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;/ 当天相对于量能

19、平台的涨跌幅 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 =

20、 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 - platf

21、ormClose) / platformClose; intRange = doubleRange.intValue(); if (platformOpen platformClose)/ 量能平台当天K线为阳线 if(doubleRange 0) / 看跌 / 如果是量能平台出现后的第一天或者跌破阳线1/2 if (score = null | (flag = true & close halfPlatform) score += intRange; else score -= intRange; else / 看涨 if(score = null) score = 90; else sco

22、re -= 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)

23、; 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; /*

24、 * 根据能量突破提示的不同,对股指进行分析、评分、评价。 * * 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; / 计

25、算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

26、, transDate); if (pricePerct = null) analysisValue = new AnalysisValue(); analysisValue.setStkCode(idxCode); analysisValue.setResultScore(0); analysisValue.setResultDesc(数据不足,分析失败); return analysisValue; / 近几日出现量能平台 if (TTJ =1 & pricePerct 0) java.util.Date date = transDate; int count = 0; / 将date移至

27、量能突破的当天 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

28、:看跌 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

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

当前位置:首页 > 其他


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