背离的计算,是处理时序数据的永恒思路,请看网友的留言截图: 网友的留言 留言的需求是,日内的macd的背离---今天是阳线,而macd指标的数据却是下降和持平;今天是阴线,而macd的指标数据却是在上升和持平。 显而易见,该思路要建立的算法,只在单个交易日的内部---MACD的背离计算之“日内背离”,下面展开算法的建立流程。 思路步骤
思路示意图 字母WZ是“位置”的意思,详细表达式,请见算法建立部分。 算法建立 1. 首先引入系统MACD指标: 参数表1 参数表2 算法内容强调了要在5分钟时间周期内进行数据筛选才可以使用。 2. 阳线与阴线,以4%的升幅与跌幅作为本次筛选标准: 阴K线的界定---C<WSO*0.96,WSO的意思为“5分钟首根K线的开盘价”,详细表达式,请见算法建立部分; 阳K线的界定---C>WSO*1.04。 3. 计算5分钟时间周期的第一根数据位置: WZ:=CONST(BARSLAST(CURRBARSCOUNT<=48 AND DAY!=REF(DAY,1))); 4. 计算5分钟时间周期内的今日的开盘价: WSO:=IF(CURRBARSCOUNT<=WZ+1,CONST(REF(O,WZ)),DRAWNULL);{ WSO:5分钟首根开盘价} 5. 对日内的5分钟数据的MACD中的DEA线进行动态的4分法的界定: a.DEA线走平或者向上的量化定义 DEA>=REF(DEA,INTPART(WZ/4))*1.001 AND DEA >=REF(DEA,INTPART(WZ/2))*1.001 AND DEA >=REF(DEA,INTPART(WZ*3/4))*1.001 AND DEA >=REF(DEA,WZ)*1.001; b.DEA线走平或者向下的量化定义 DEA<=REF(DEA,INTPART(WZ/4))*0.999 AND DEA <=REF(DEA,INTPART(WZ/2))*0.999 AND DEA<=REF(DEA,INTPART(WZ*3/4))*0.999 AND DEA <= REF(DEA,WZ)*0.999; 完整代码
参数表3 DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG); DEA:=EMA(DIF,MID); WZ:=CONST(BARSLAST(CURRBARSCOUNT<=48 AND DAY!=REF(DAY,1))); WSO:=IF(CURRBARSCOUNT<=WZ+1,CONST(REF(O,WZ)),DRAWNULL); C<WSO*0.96 AND CONST(DEA)>=CONST(REF(DEA,INTPART(WZ/4)))*1.001 AND CONST(DEA)>=CONST(REF(DEA,INTPART(WZ/2)))*1.001 AND CONST(DEA)>=CONST(REF(DEA,INTPART(WZ*3/4)))*1.001 AND CONST(DEA)>=CONST(REF(DEA,WZ))*1.001; 2.日线阳线,日内MACD走平或者下行 参数表4 DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG); DEA:=EMA(DIF,MID); WZ:=CONST(BARSLAST(CURRBARSCOUNT<=48 AND DAY!=REF(DAY,1))); WSO:=IF(CURRBARSCOUNT<=WZ+1,CONST(REF(O,WZ)),DRAWNULL); C>WSO*1.04 AND CONST(DEA)<=CONST(REF(DEA,INTPART(WZ/4)))*0.999 AND CONST(DEA)<=CONST(REF(DEA,INTPART(WZ/2)))*0.999 AND CONST(DEA)<=CONST(REF(DEA,INTPART(WZ*3/4)))*0.999 AND CONST(DEA)<=CONST(REF(DEA,WZ))*0.999; 因为这里所有的思路以及代码,只是专注于函数的应用和算法的建立,不面向应用。所以,后续将根据网友的应用层面的反馈进行必要的优化。 计算创造价值,分享助力成功,代码均可运行。 |
|