5fmacd:=stkindi('','macd.macd1',0,2,-1);//5分钟周期的MACD值,因为是在一分钟图上使用,帮用了偏移值-1
r5fmacd:=stkindi('','macd.macd1',0,2,-2);//5分钟周期的前一MACD值。
mm5:=sumbars(5fmacd>0 and r5fmacd<0,1);//当5分钟MACD变为红柱时到当前的周期数。
在使用过程上发现一个问题:当5分钟MACD变为红柱后,在一分钟图上的mm5的值一直为1,一直到5分钟的第2根红柱后,mm5才会从2开始正常计数。比如:11:00整,5分钟的MACD变成了红柱,那么在一分钟图上,11:01、11:02、11:03、11:04、11:05的时候,mm5的值一直为1,直到11:06分才开始变成2,然后是3、4、5、、、开始正确的累加。
请问:这个问题如何解决?(实际过程中,我是把mm5再加5来解决的,但这样一加5会引起另外一系列的问题,由于引起的问题较为复杂,所以先来问问这一项是否有什么办法处理?谢谢。)
建议你把r5fmacd,5fmacd在图表上输出下。5fmacd>0 and r5fmacd<0 也输出下。看看这几个数据是否正常。 另外这个引用的数据你需要自己补充下,引用的时候是不会自动补充缺少的数据的。
你最初的需求是什么样子的?看看能不能不用那个sumbars函数。
你逻辑处理上有点问题,如果最后结果是需要求出来5分钟周期上的最高价格的位置,那公式应该是直接引用5分钟周期上的最终结果,而不是引用中间变量在1分钟上参与计算。
DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA :=EMA(DIFF,9);
MACD :=2*(DIFF-DEA);
n1:=sumbars(macd>0 and ref(macd<0,1),1);
hh:hhv(h,n1);//红柱最高值
mm5:BARSLAST(high=hh);//红柱以来到现在最近一次的最高值位置
直接引用mm5就是你需要的值。
是的,根据你前面的表示,你应该是想在1分钟周期上得到5分钟周期中的最近一次的红柱以来的最大值,那就是应该吧上面的指标作为一个单独的公式,
在一分钟上有stkindi引用5分钟下的mm5。
那就是我对你表述的需求理解有偏差,请重新说明下你的需求,最好有相关的附图解释
如上图,我想在1分钟周期图上得到自5分钟周期图上的MACD变为红柱以来的最高值(这个值在1分钟图上是黄箭头所指550.0,此时,5分钟图上的MACD虽已变为绿柱也无妨)到当前的周期数。
上张图,是铁矿连续现在的走势图。