K线图指标算法(BOLL MACD)

0.1882019.08.15 14:23:24字数 289

算法代码传到这github
demo:StockChart

三、BOLL:

BOLL指标,其英文全称是“Bollinger Bands”

在所有的指标计算中,BOLL指标的计算方法是最复杂的之一,其中引进了统计学中的标准差概念,涉及到中轨线(MB)、上轨线(UP)和下轨线(DN)的计算。另外,和其他指标的计算一样,由于选用的计算周期的不同,BOLL指标也包括日BOLL指标、周BOLL指标、月BOLL指标年BOLL指标以及分钟BOLL指标等各种类型

计算公式

中轨线=N日的移动平均线
上轨线=中轨线+两倍的标准差
下轨线=中轨线-两倍的标准差

1
/** * 布林带BOLL(n, k) 一般n默认取20,k取2, mb为计算好的中轨线 * 中轨线MB: n日移动平均线 MA(n) * 上轨线:MB + 2*MD * 下轨线:MB - 2*MD * MD:n日方差 * * @param entries * @param n * @param k * @return */ public static List<Entry>[] getMB(List<CandleEntry> entries, int n, int k) { ArrayList<Entry> resultMB = new ArrayList<>(); // 中轨线 ArrayList<Entry> resultUp = new ArrayList<>(); // 上轨线 ArrayList<Entry> resultDn = new ArrayList<>(); // 下轨线 for (int i = 0, len = entries.size(); i < len; i++) { if (i < n - 1) { continue; } float sumMB = 0; float sumMD = 0; for (int j = n - 1; j >= 0; j--) { float thisClose = entries.get(i - j).getClose(); sumMB += thisClose; } float mb = sumMB / n; float x = entries.get(i).getX(); resultMB.add(new Entry(x, mb)); for (int j = n - 1; j >= 0; j--) { float thisClose = entries.get(i - j).getClose(); float cma = thisClose - mb; // C-MB sumMD += cma * cma; } float md = (float) Math.pow(sumMD / (n - 1), 1.0 / k); //MD=前n日C-MB的平方和来开根 resultUp.add(new Entry(x, mb + 2 * md)); // UP=MB+2*MD resultDn.add(new Entry(x, mb - 2 * md)); // DN=MB+2*MD } return new ArrayList[]{resultMB, resultUp, resultDn}; }

四、MACD

异同移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移动均线DEA)得到MACD柱。

1
/** * MACD算法: * DIF:EMA(short) - EMA(long) 一般short取12,long取26 * DEA: EMA(DIF, mid), mid一般取9 * MACD:(DIF-DEA)*2 * * @param entries * @param s short * @param l long * @param m mid * @return */ public static List[] getMACD(List<CandleEntry> entries, int s, int l, int m) { ArrayList<Entry> listDIF = new ArrayList<>(); ArrayList<Entry> listDEA = new ArrayList<>(); ArrayList<BarEntry> listMACD = new ArrayList<>(); float lastEmaS = entries.get(0).getClose(); float lastEmaL = lastEmaS; float lastDIF = 0; listDIF.add(new Entry(0, 0)); listDEA.add(new Entry(0, 0)); listMACD.add(new BarEntry(0, 0)); float[] factorShort = getEMAFactor(s); float[] factorLong = getEMAFactor(l); float[] factorMid = getEMAFactor(m); for (int i = 1; i < entries.size(); i++) { float x = entries.get(i).getX(); // 短线EMA float valueS = factorShort[0] * entries.get(i).getClose() + factorShort[1] * lastEmaS; lastEmaS = valueS; // 长线EMA float valueL = factorLong[0] * entries.get(i).getClose() + factorLong[1] * lastEmaL; lastEmaL = valueL; // DIF:EMA(short) - EMA(long) float valueDIF = valueS - valueL; listDIF.add(new Entry(x, valueDIF)); // EMA(DIF, mid) float valueDEA = factorMid[0] * valueDIF + factorMid[1] * lastDIF; listDEA.add(new Entry(x, valueDEA)); lastDIF = valueDEA; // MACD:(DIF-DEA)*2 listMACD.add(new BarEntry(x, (valueDIF - valueDEA) * 2)); } return new ArrayList[]{listDIF, listDEA, listMACD}; } /** * 获取EMA计算时的相关系数 * @param n * @return */ private static float[] getEMAFactor(int n) { return new float[]{2f / (n + 1), (n - 1) * 1.0f / (n + 1)}; }

最后编辑于

:2021.06.01 15:14:12

  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解…

    沈念sama阅读 155,457评论 4赞 357

  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都…

  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些…

  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不…

  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我…

    茶点故事阅读 51,630评论 3赞 283

  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一…

  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决…

  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我…

  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经…

  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日…

    茶点故事阅读 30,186评论 2赞 238

  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。…

    茶点故事阅读 31,741评论 1赞 255

  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带…

  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境…

    茶点故事阅读 32,614评论 3赞 228

  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日…

  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响…

  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还…

  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚…

    茶点故事阅读 35,076评论 2赞 257