(本源代码转载自迅动股票分析平台,了解更多请访问)基于Java语言开发的个性化股票分析技术:随机指数(KDJ)KDJ指标又叫随机指标,是由乔治·蓝恩博士(GeorgeLane)最早提出的,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于汇市的中短期趋势分析,是期货和外汇市场上最常用的技术分析工具。有K线,D线和J线三条线组成。XML描述:?xmlversion=1.0encoding=UTF-8?indicatorshortName=KDJfullName=随机指数class=com.shengrensoft.stock.model.indicator.dailykdj.DailyKDJIndicatordataUnit=D!--仅限:分钟、每日、每周、每月四种情况允许--!--参数列表--paramListparamshortName=Nvalue=9fullName=N天数/paramshortName=M1value=3fullName=M1天数/paramshortName=M2value=3fullName=M2天数//paramList!--数据列表--dataListdatashortName=StkDailyK/datashortName=IdxDailyK/datashortName=BlkDailyK//dataList!--输出列表--valueListvalueshortName=KfullName=K值/valueshortName=DfullName=D值/valueshortName=JfullName=J值//valueList!--图形:K线--drawChartname=Kregion=IndicatorBlinethickness=1color=#FFFFFFopacity=1!--白色线形图--valueListvalueshortName=Kname=value//valueList/line/drawChart(本源代码转载自迅动股票分析平台,了解更多请访问)!--图形:D线--drawChartname=Dregion=IndicatorBlinethickness=1color=#FFFF00opacity=1!--黄色线形图--valueListvalueshortName=Dname=value//valueList/line/drawChart!--图形:J线--drawChartname=Jregion=IndicatorBlinethickness=1color=#FF00FFopacity=1!--粉色线形图--valueListvalueshortName=Jname=value//valueList/line/drawChartdescriptionKDJ指标又叫随机指标,是由乔治·蓝恩博士(GeorgeLane)最早提出的,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于汇市的中短期趋势分析,是期货和外汇市场上最常用的技术分析工具。有K线,D线和J线三条线组成。/description/indicatorJava代码:/**@(#)DailyKDJIndicator.java**Copyright@HangzhouShengrenSoftwareTech.Co.,Ltd.*/packagecom.shengrensoft.stock.model.indicator.dailykdj;importjava.rmi.RemoteException;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.LinkedHashMap;importjava.util.List;importorg.apache.commons.lang.math.NumberUtils;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.BlkDailyK.BlkDailyKData;importcom.shengrensoft.stock.center.data.Data.DataName;importcom.shengrensoft.stock.center.data.IdxDailyK.IdxDailyKData;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;/***KDJ随机指数的实现类。**@author迅动平台2012/08/02新建*/publicclassDailyKDJIndicatorextendsAbstractIndicator{/**序列版本ID*/privatestaticfinallongserialVersionUID=6146654415916101973L;//参数名定义/**参数名:N天数*/privatestaticfinalStringPARAM_N=N;/**参数名:M1天数*/privatestaticfinalStringPARAM_M1=M1;/**参数名:M2天数*/privatestaticfinalStringPARAM_M2=M2;//计算值定义/**计算值:K值*/privatestaticfinalStringVALUE_K=K;/**计算值:D值*/privatestaticfinalStringVALUE_D=D;/**计算值:J值*/privatestaticfinalStringVALUE_J=J;/**(本源代码转载自迅动股票分析平台,了解更多请访问)*构造方法。*/publicDailyKDJIndicator()throwsRemoteException{}/***计算出指定时间范围内KDJ随机指数的值序列。**@paramstkCode证券代码*@parambeginDate起始日期*@paramcloseDate终止日期*@paramparamsList指标参数列表**@returnKDJ随机指数的值序列*/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;}//取得指标的各个参数intparamN=0;//参数:N天数intparamM1=0;//参数:M1天数intparamM2=0;//参数:M2天数for(ModelParamparam:paramsList){if(PARAM_N.equals(param.getShortName())){paramN=NumberUtils.toInt(param.getValue());}elseif(PARAM_M1.equals(param.getShortName())){paramM1=NumberUtils.toInt(param.getValue());(本源代码转载自迅动股票分析平台,了解更多请访问)}elseif(PARAM_M2.equals(param.getShortName())){paramM2=NumberUtils.toInt(param.getValue());}else{returnnull;}}//判别证券代码类型(股票代码、股指代码、或板指代码),分别计算KDJ随机指数的值序列StkAnalysisUtilstkAnalysisUtil=super.getStkAnalysisUtil();if(stkAnalysisUtil.isStkCode(stkCode)){returnthis.calcStkDailyKDJ(stkCode,beginDate,closeDate,paramN,paramM1,paramM2);}elseif(stkAnalysisUtil.isIdxCode(stkCode)){returnthis.calcIdxDailyKDJ(stkCode,beginDate,closeDate,paramN,paramM1,paramM2);}elseif(stkAnalysisUtil.isBlkCode(super.getUserId(),stkCode)){returnthis.calcBlkDailyKDJ(stkCode,beginDate,closeDate,paramN,paramM1,paramM2);}else{returnnull;}}/***计算出指定股票指定日期范围的KDJ随机指数值序列。**@paramstkCode股票代码*@parambeginDate起始日期*@paramcloseDate终止日期*@paramparamNN天数*@paramparamM1M1天数*@paramparamM2M2天数**@returnKDJ随机指数值序列*/privateLinkedHashMapjava.util.Date,IndicatorValuecalcStkDailyKDJ(StringstkCode,java.util.DatebeginDate,java.util.DatecloseDate,intparamN,intparamM1,intparamM2){(本源代码转载自迅动股票分析平台,了解更多请访问)//准备好指标返回值列表LinkedHashMapjava.util.Date,IndicatorValueindicatorValueList=newLinkedHashMapjava.util.Date,IndicatorValue();//取得指定股票指定日期范围的日K数据GettingDa