我需要在1分钟k线下引用15日日均振幅,于是我需要引用日线上昨日的收盘价,最高价,最低价,并用它们进行运算。
我现在的做法是:
1.编写highy,lowy,closey三个指标,分别是昨日的高,低,收;
2.编写一个计算振幅的指标,用stkindi函数引用日线的高,低,收,计算出一日的振幅,然后MA(振幅,15);
3.再编写一个计算日线振幅的指标,用stkindi函数引用日线下的第2步编写的指标;如果没有这一步,第2步的MA会按照15个1分钟线计算平均值,而不是15天的平均值
然后应用的时候就会弹出来说,我引用公式过多,超过了50个的限制;
请问有没有什么办法可以不要引用那么多层就能在1分钟线上引用并计算日线资料吗?
附:
第1步的指标
closey
cc:ref(close,n);
highy
hh: ref(high,n);
lowy
ll: ref(low,n);
第2步的指标
truedayrange
hh1:= stkindi('','highy(1)',0,6);
ll1:= stkindi('','lowy(1)',0,6);
cc2:= stkindi('','closey(2)',0,6);
cc1:= stkindi('','closey(1)',0,6);
TR1: MAX(MAX((hh1-ll1),ABS(cc2-hh1)),ABS(cc2-ll1));
MATR1: ma(tr1,m);
第3步的指标
ATR
TR1: stkindi('','truedayrange.tr1',0,6);
ATR1: stkindi('', 'truedayrange.matr1',0,6);
于是我需要引用日线上昨日的收盘价,最高价,最低价,并用它们进行运算。
CALLSTOCK(STKLABEL,VTOPEN,6,-1) 表示引用昨日开盘价 其他的类似 直接用这个
全部写在一个指标里面
1. callstock必须注明某个品种吗?我需要在不同的品种数据上使用这个公式,在stklabel的位置放了'',就不能计算了。
2. 还是不能解决的就是,计算出振幅之后,MA(振幅,15)的表达式如果用在1分钟k线上,就是计算15根1分钟k线数据的均值,而不是15天的均值。
3楼的回复就是按照2楼的方式操作之后形成的。附代码:旧代码:
closey
cc:ref(close,n);
highy
hh: ref(high,n);
lowy
ll: ref(low,n);
truedayrange
hh1:= stkindi('','highy(1)',0,6);
ll1:= stkindi('','lowy(1)',0,6);
cc2:= stkindi('','closey(2)',0,6);
cc1:= stkindi('','closey(1)',0,6);
TR1: MAX(MAX((hh1-ll1),ABS(cc2-hh1)),ABS(cc2-ll1));
MATR1: ma(tr1,m);
新代码:
hh1:= callstock('',vthigh,6,-1);
ll1:= callstock('',vtlow,6,-1);
cc2:= callstock('',vtclose,6,-2);
cc1:= callstock('',vtclose,6,-1);
TR1: MAX(MAX((hh1-ll1),ABS(cc2-hh1)),ABS(cc2-ll1));
MATR1: ma(tr1,m);
新代码没有返回任何计算结果。
且我觉得版主没有明白3楼第二个问题的意思。不管新旧代码,tr1计算的是日线上昨日振幅;那么在1分钟图运行逐k线模式的话,今天开盘以来的每一个1分钟线都会计算昨日振幅,于是ma(tr1,15)就是求过去15根1分钟线返回的昨日振幅的平均值,15个昨日振幅取平均值,就还是等于昨日振幅;我需要的是能在1分钟图上计算出过去15天的振幅均值,这个无法用ma(tr1,15)求得。除了写一个新的指标用stkindi引用现有指标在日线上的计算结果之外,我不知道如何在本指标内直接编写完成。
CALLSTOCK(STKLABEL,VTOPEN,6,-1);
请看标注颜色处的代码 用户写的并不是2楼给的写法
恩,这个解决了。但是关于无法跨周期使用MA函数的问题还是不知如何解决:
hh1:= callstock(stklabel,vthigh,6,-1);
ll1:= callstock(stklabel,vtlow,6,-1);
cc2:= callstock(stklabel,vtclose,6,-2);
cc1:= callstock(stklabel,vtclose,6,-1);
TR1: MAX(MAX((hh1-ll1),ABS(cc2-hh1)),ABS(cc2-ll1));
MATR1: ma(tr1,m);
tr1计算的是日线上昨日振幅;那么在1分钟图运行逐k线模式的话,今天开盘以来的每一个1分钟线都会计算昨日振幅,于是ma(tr1,15)就是求过去15根1分钟线返回的昨日振幅的平均值,15个昨日振幅取平均值,就还是等于昨日振幅;我需要的是能在1分钟图上计算出过去15天的振幅均值,这个无法用ma(tr1,15)求得。除了写一个新的指标用stkindi引用现有指标在日线上的计算结果之外,我不知道如何在本指标内直接编写完成。
抱歉 前面没有讲清楚 意思是 让你把 取昨日数据和计算振幅 这些写到一个指标中 然后在另一个指标里stkindi引用振幅的值