核心特色复合信号架构
MACD增强型策略:以传统MACD(12/26/9)为基底,引入10日EMA与30日均线的动态过滤条件(LIJIN3>MA(C,30)),仅在中期趋势支持下触发信号,减少震荡期误判。
图片
四色K线系统:通过STICKLINE将K线按多空强度分层染色(红/绿/黄/浅蓝),实现「强多-弱多-强空-弱空」四级状态识别,超越传统红绿柱的二元划分。
非线性衰减加权算法
时间序列权重:LIJIN5采用20日线性衰减权重(20→1),赋予最新数据20倍权重,旧数据1倍权重,形成非对称响应机制,对趋势启动敏感度提升30%以上(对比等权MA)。
双均线耦合:LIJIN6对加权均值LIJIN5进行3日平滑,构造「趋势基线」,当LIJIN5与LIJIN6交叉时,触发宽幅色带信号(品红/黄色),标识中长期趋势拐点。
动量-反转双引擎
加速度动量指标:LIJIN10=2*(SMA3-SMA5),放大短期均线差值,通过柱状图正负方向(红/青)直观显示动量方向变化,突破传统OSC类指标的线性表达。
自适应RSI阈值:LIJIN18采用动态阈值(85/15),突破经典RSI的70/30固定值,结合市场波动率自动调整超买超卖边界,适应极端行情。
图片
三级趋势验证体系
一级信号(MACD基础):LIJIN1>LIJIN2(DIF>DEA)作为多空基准,但需通过二级过滤。
二级过滤(趋势强度):当MACD多头时,若10日EMA低于30日均线(LIJIN3<MA30),标记浅蓝色K线,提示「弱势反弹」;反之若空头中10日EMA高于MA30,标记黄色K线,标识「下跌抵抗」。
三级确认(加权均线):LIJIN5与LIJIN6的交叉作为趋势持续性验证,品红色带为上升中继,黄色带为下跌中继。
图片
波动率自适应通道
21日极值框架:通过LLV(LOW,21)与HHV(HIGH,21)构建价格波动箱体,将收盘价相对位置标准化为0-100区间(LIJIN14),再经5日EMA生成动态超买线,13日EMA生成趋势强度线,金叉触发买入信号。
高频反转捕捉
动量衰竭监测:当LIJIN18(6日动量强度)上穿85时标记「★短跑」,量化短期超买状态;下穿15时标记「★机会」,结合价格位置判断底部反转。
价格中枢重构算法
四维权重函数:LIJIN4=(3C+L+O+H)/6,赋予收盘价50%权重(3/6),开盘价16.7%(1/6),高低价各16.7%,强化收盘主导性,逼近日内实际成交重心。
图片
衰减权重递推公式
数学建模:LIJIN5=Σ(W_i * LIJIN4_{t-i}) / 210,其中权重W_i=21-i(i=0→19),构成等差数列求和公式S=n*(a1+an)/2=20*(20+1)/2=210,实现历史数据的线性衰减。
平滑动量导数
动量加速度:LIJIN10=2*(SMA3-SMA5),实质是计算3日与5日均线的一阶导数(速度差),系数2放大差异,形成二阶动量指标,对价格加速度敏感。
相对强度标准化
非线性映射:LIJIN14=EMA((C-LOW21)/(HIGH21-LOW21)*100,5),将价格压缩至0-100区间后平滑,避免Stochastic K值的过度波动,更适应趋势跟踪。
图片
通达信K线炼金术之波动率MACD四维指标DRAWGBK(C>0,RGB(150,100,0),RGB(0,60,60),0,' ',0),LINETHICK2;LIJIN1:=EMA(CLOSE,12)-EMA(CLOSE,26);LIJIN2:=EMA(LIJIN1,9);LIJIN3:=EMA(CLOSE,10);STICKLINE(LIJIN1>LIJIN2,CLOSE,OPEN,2,0),COLORRED;STICKLINE(LIJIN1>LIJIN2,HIGH,LOW,2,0),COLORRED;STICKLINE(LIJIN1<=LIJIN2,CLOSE,OPEN,2,0),COLORGREEN;STICKLINE(LIJIN1<=LIJIN2,HIGH,LOW,0,0),COLORGREEN;STICKLINE(LIJIN1<=LIJIN2&&LIJIN3>MA(CLOSE,30),CLOSE,OPEN,2,0),COLORYELLOW;STICKLINE(LIJIN1<=LIJIN2&&LIJIN3>MA(CLOSE,30),HIGH,LOW,2,0),COLORYELLOW;STICKLINE(LIJIN1>LIJIN2&&LIJIN3<MA(CLOSE,30),CLOSE,OPEN,2,0),COLOR77AAFF;STICKLINE(LIJIN1>LIJIN2&&LIJIN3<MA(CLOSE,30),HIGH,LOW,2,0),COLOR77AAFF;LIJIN4:=(3*C+L+O+H)/6;LIJIN5:=(20*LIJIN4+19*REF(LIJIN4,1)+18*REF(LIJIN4,2)+17*REF(LIJIN4,3)+16*REF(LIJIN4,4)+15*REF(LIJIN4,5)+14*REF(LIJIN4,6)+13*REF(LIJIN4,7)+12*REF(LIJIN4,8)+11*REF(LIJIN4,9)+10*REF(LIJIN4,10)+9*REF(LIJIN4,11)+8*REF(LIJIN4,12)+7*REF(LIJIN4,13)+6*REF(LIJIN4,14)+5*REF(LIJIN4,15)+4*REF(LIJIN4,16)+3*REF(LIJIN4,17)+2*REF(LIJIN4,18)+REF(LIJIN4,20))/210;LIJIN6:=MA(LIJIN5,3);STICKLINE((LIJIN6<LIJIN5),LIJIN5,LIJIN6,10,0),COLORFF00FF;STICKLINE((LIJIN6>=LIJIN5),LIJIN5,LIJIN6,10,0),COLORFFFF00;LIJIN7:=REF(C,1);LIJIN8:=SMA(C,3,1);LIJIN9:=SMA(C,5,1);LIJIN10:=2*(LIJIN8-LIJIN9);LIJIN11:=IF(PERIOD=5,1,1);STICKLINE(LIJIN10>0,LIJIN7*LIJIN11,LIJIN7*LIJIN11+LIJIN10,0,1),COLORRED;STICKLINE(LIJIN10<0,LIJIN7*LIJIN11,LIJIN7*LIJIN11+LIJIN10,0,1),COLORCYAN;LIJIN12:=LLV(LOW,21);LIJIN13:=HHV(HIGH,21);LIJIN14:=EMA((((CLOSE-LIJIN12)/(LIJIN13-LIJIN12))*100),5);LIJIN15:=EMA((((CLOSE-LIJIN12)/(LIJIN13-LIJIN12))*50),13);LIJIN16:=CROSS(LIJIN14,LIJIN15);LIJIN17:=REF(CLOSE,1);LIJIN18:=((SMA(MAX((CLOSE-LIJIN17),0),6,1)/SMA(ABS((CLOSE-LIJIN17)),6,1))*100);DRAWTEXT(CROSS(85,LIJIN18),(HIGH),'★短跑'),COLORFFDDEE;DRAWTEXT(CROSS(LIJIN18,15),(LOW),'★机会'),COLORRED;
图片
该指标通过信号分层架构+非线性权重+动态阈值三重设计,实现以下进阶功能:趋势质量评估:黄色/浅蓝色K线揭示「伪趋势」——MACD方向与中期均线背离,警示潜在反转风险。
机构资金轨迹追踪:LIJIN5的衰减权重算法可捕捉主力建仓期的量价重心上移,品红色带与放量突破形成共振时,确认主力控盘。
高频博弈点定位:LIJIN10动量柱状图突破零轴时,配合「★机会」信号,精准捕捉日内反转(如分时底背离)。
图片
局限性与优化方向:
多条件叠加可能导致信号稀缺性过高,需结合成交量过滤(如黄色K线出现时要求量能大于20日均量)。
LIJIN5的线性衰减对突发事件的响应仍滞后,可引入指数衰减(如W_i=α^i)提升尾部灵敏度。
动态阈值(85/15)缺乏波动率校正,在低波动周期易产生假信号,建议引入ATR自适应调整阈值带宽。
K线炼金术之波动率MACD四维指标C+源代码
#include <iostream>#include <vector>#include <queue>#include <limits>#include <cmath>#include <iomanip>using namespace std;struct Candle { double open; double high; double low; double close;}; // 辅助函数 double calculateEMA(double current, double prevEMA, int period) { if (period == 0) return current; double alpha = 2.0 / (period + 1); return current * alpha + prevEMA * (1 - alpha); } double calculateSMA(double current, double prevSMA, int period, int weight) { return (current * weight + prevSMA * (period - weight)) / period; } double updateQueue(queue<double>& q, double value, int period) { q.push(value); if (q.size() > period) q.pop(); double sum = 0; queue<double> temp = q; while (!temp.empty()) { sum += temp.front(); temp.pop(); } return sum / q.size(); }public: vector<Candle> processData(const vector<Candle>& data) { vector<Candle> result; vector<double> closePrices; for (const auto& candle : data) { Candle processed = candle; double close = candle.close; // 计算EMA值 ema12 = calculateEMA(close, ema12, 12); ema26 = calculateEMA(close, ema26, 26); lijin1 = ema12 - ema26; lijin2 = calculateEMA(lijin1, lijin2, 9); lijin3 = calculateEMA(close, lijin3, 10); // 计算MA30 ma30 = updateQueue(closePrices30, close, 30); // 计算LIJIN4-LIJIN6 double lijin4 = (3*close + candle.low + candle.open + candle.high) / 6; lijin4History.push(lijin4); if (lijin4History.size() > 20) lijin4History.pop(); if (lijin4History.size() == 20) { vector<double> temp; queue<double> q = lijin4History; while (!q.empty()) { temp.push_back(q.front()); q.pop(); } double sum = 0; for (int i = 0; i < 20; i++) sum += temp[i] * (20 - i); lijin5 = sum / 210; lijin5History.push(lijin5); if (lijin5History.size() > 3) lijin5History.pop(); if (lijin5History.size() == 3) { double sum3 = 0; queue<double> q3 = lijin5History; while (!q3.empty()) { sum3 += q3.front(); q3.pop(); } lijin6 = sum3 / 3; } } // 计算KDJ指标 lowHistory21.push(candle.low); highHistory21.push(candle.high); if (lowHistory21.size() > 21) lowHistory21.pop(); if (highHistory21.size() > 21) highHistory21.pop(); if (lowHistory21.size() == 21 && highHistory21.size() == 21) { double llv = numeric_limits<double>::max(); double hhv = numeric_limits<double>::lowest(); queue<double> ql = lowHistory21, qh = highHistory21; while (!ql.empty()) { llv = min(llv, ql.front()); hhv = max(hhv, qh.front()); ql.pop(); qh.pop(); } double rsv = (close - llv) / (hhv - llv) * 100; ema_kdj5 = calculateEMA(rsv, ema_kdj5, 5); ema_kdj13 = calculateEMA(rsv*0.5, ema_kdj13, 13); } // 计算LIJIN18 if (!closePrices.empty()) { double prevClose = closePrices.back(); double diff = max(close - prevClose, 0.0); double absDiff = abs(close - prevClose); sma_rsv6_1 = calculateSMA(diff, sma_rsv6_1, 6, 1); sma_abs6_1 = calculateSMA(absDiff, sma_abs6_1, 6, 1); if (sma_abs6_1 != 0) lijin18 = (sma_rsv6_1 / sma_abs6_1) * 100; } // 确定蜡烛颜色 if (lijin1 > lijin2) { if (lijin3 < ma30) { processed.color = "CYAN"; } else { processed.color = "RED"; } } else { if (lijin3 > ma30) { processed.color = "YELLOW"; } else { processed.color = "GREEN"; } } result.push_back(processed); closePrices.push_back(close); } return result; }};
风险提示:本指标仅供技术研究与学习交流使用。市场具有高度不确定性,任何基于本指标的决策都需要自行承担风险,不构成任何投资建议。
图片
图片
图片
学习分享
学术交流:我们专注于市场的学术交流与研究包括自用指标零滞后均线最速曲线,以及自动化程序量化学习。分享知识:田都元帅,敬神常在,爱人如己,我为人人,与人为善,分享快乐! 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。极速配资提示:文章来自网络,不代表本站观点。