dist:=barslast(date<>ref(date,1))+1;
if ma7>ref(ma7,1) then tt:=barpos;
//让时间过滤和空间过滤确定后再显示新的高点的时间空间
ttt2:=hhv(tt,dist) ;
ttt2的显示就是当它取到最大值时,前面的ttt2全部成为这一个值了,之前各自kxian计算的值都没了。数据接受停止后或者是盘后,各自计算的值又都恢复了。
你要想TTT2是当时的值 你应该用REF来调用之前某根K线的数据
建议你吧你的想法整理一下 说一下你是要实现什么,然后我们再分析分析问题出在哪,你光挂这么两句代码咱根本不知道是怎么回事
我明白楼主的意思。楼主没理解金字塔的公式原理,我来解释 给你听吧
dist:=barslast(date<>ref(date,1))+1; if ma7>ref(ma7,1) then tt:=barpos; {ma7>ref(ma7,1) ,那么,把tt所有的值赋值为barpos,否则不执行。如果最后一个周期条件成立,那么, tt就是barpos,如果最后一个周期条件不成立,那么,tt就是个无效值。也就是说前面的赋值会被后面的取代} ttt2:=hhv(tt,dist) ;
楼主想要的效果,是不是“条件成立是,tt=条件成立时的K线位置”,那么,应该把tt定义为单值型全局变量啊
variable:tt=0; dist:=barslast(date<>ref(date,1))+1; if ma7>ref(ma7,1) then tt:=barpos; |
是这样子的。
dist:=barslast(date<>ref(date,1))+1;
if ma7>ref(ma7,1) then tt:barpos;
ttt2:hhv(tt,dist) ;
不是tt的问题。是ttt2的显示出了问题。
按理说ttt2 应该是一个逐渐往上的连续曲线,因为tt随时有新的有效值替代旧的,后一个值和前一个值不一样,因为是逐k线嘛。可是盘中ttt2前面的计算结果会随着后面的结果而变动,所有k线上都显示当前的最大值,为一条横线。奇怪的是盘后又变成我想要的曲线。同样的变量公式算法,盘中均为变动的横的直线,盘后为曲线正常了。
另外一个特点是,每次它成为横线,我双击重读一下公式,它会瞬间把正确曲线结果显现出来,但也就一瞬间,而价格一变动,马上又变成了横线,的确是盘中变动的价格影响到了前面k线的结果,为什么会这样呢?