我在逐K线模式下,编写策略需要获取当前3跟K线的最高最低值和前3跟K线的最高最低值,取值代码如下
if barpos<5 then exit;
tt:=time;
dd:=date;
highm:hhv(high,3);
lowm:llv(low,3);
highn:ref(hhv(h,3),1);
lown:ref(llv(l,3),1);
结果发现在第5根K线时只有highm有值,其余为空,
第6根K线时,只有highm,highn有值,其余为空,
第7根k线时,highm,lowm,highn有值,lown为空,
只有第8根k线以后,4个值才正常,
有人知道这是为什么么?
百思不得其解,紧急求助,望各位大侠指点迷津,小弟先谢了!!
tt:=time;
dd:=date;
highm:hhv(high,3);
lowm:llv(low,3);
highn:ref(hhv(h,3),1);
lown:ref(llv(l,3),1);
if barpos<5 then exit; //把这个IF语句放在语句后面,这样前面就可以存储数据了. 你之前的公式因为在逐K线模式下执行,barpos<5之前的数据被你提前忽略掉了.因此用户要特别注意逐K线与序列模式在工作原理上的不同区分
试验了一下,换个顺序确实是可以。
但不换为什么不行呢?
我写在前面的目的是指定启动的日期,
如:
if TIME<=093000 then exit;
highm:=hhv(high,3);
lowm:=llv(low,3);
highn:=ref(hhv(h,3),1);
lown:=ref(llv(l,3),1);
这样不行么?