金字塔的代码:
variable:a=0;
msgout(1,numtostr(barpos,0)+':前根K线的a值:'+numtostr(ref(a,1),0));
a:=a+1;
msgout(1,numtostr(barpos,0)+':当根K线的a值:'+numtostr(a,0));
TB的代码:
NumericSeries a;
begin
Commentary(Text(currentbar)+":前根K线的a值"+Text(a[1]));
a=a+1;
Commentary(Text(currentbar)+":当根K线的a值"+Text(a));
end
取前一根K线上的序列变量的值,金字塔的逻辑是取参与运算前的值,TB的逻辑是取参与运算后的值
金字塔的逻辑不太符合正常的逻辑思维吧?
是你自己的逻辑思维出了问题吧,你把取之前的结果放在前面,当然是取前面未计算的结果
runmode:0;
variable:a=0;
msgout(1,numtostr(barpos,0)+':前根K线的a值:'+numtostr(ref(a,1),0));
a:=a+1;
msgout(1,numtostr(barpos,0)+':当根K线的a值:'+numtostr(a,0));
红色的代码部分,在REF将取值结果压栈时,A+1是未经过计算的
程序从上到下计算,在第一个msg的地方,a还是没有自加,输出的是没有自加的而且还是ref的 a ,第二个msg才是a自加之后的值
比如a是2,那么第一个msg输出的是ref a,也就是1,而第二个msg输出的是自加后的a,也就是2+1=3
是你自己的逻辑思维出了问题吧,你把取之前的结果放在前面,当然是取前面未计算的结果
runmode:0;
variable:a=0;
msgout(1,numtostr(barpos,0)+':前根K线的a值:'+numtostr(ref(a,1),0));
a:=a+1;
msgout(1,numtostr(barpos,0)+':当根K线的a值:'+numtostr(a,0));
红色的代码部分,在REF将取值结果压栈时,A+1是未经过计算的
ref(a,1)是取前一根K线的a,和当前K线的a运算有啥关系?
程序从上到下计算,在第一个msg的地方,a还是没有自加,输出的是没有自加的而且还是ref的 a ,第二个msg才是a自加之后的值
比如a是2,那么第一个msg输出的是ref a,也就是1,而第二个msg输出的是自加后的a,也就是2+1=3
你还陷在1根K线的思路里呀?
现在讨论的是2根K线的问题。
在第2根K线上 a=2
在第3根K线上 ref(a,1)=1
这也合理?
ref a,1取得是上一根k线a的值,这么说对吗?
当前k线a是2,根据a:=a+1;那么前一根k线a的值是1,对吗?
在当根k线a自加1之后,a就是3了,对吗?
ref a,1取得是上一根k线a的值,这么说对吗?
当前k线a是2,根据a:=a+1;那么前一根k线a的值是1,对吗?
在当根k线a自加1之后,a就是3了,对吗?
你说的和我说的完全不是一根问题。