我需要在日周期找出比今天最高点还要高的最近前一高点,然后在1分钟周期计算出现该前一高点与当前的K线数量值,我用了下面的语句:
//寻找今天之前的高点
N:BARSLAST(DATE<>REF(DATE,1))+1,NODRAW;
DH:HHV(H,N),NODRAW;
I:0,NODRAW;
HSTH=DH;
WHILE HSTH<=DH DO
BEGIN
I:=I-1;
H1:=CALLSTOCK(STKLABEL,VTHIGH,6,I);
IF H1> HSTH THEN HSTH:=H1;
END
HSTHB:BARSLAST(H=HSTH),NODRAW;
这样有两个问题:
1、感觉效率不高,运行起来有点卡,不知道是否因为往前搜索时加载了太多K线的原因,是否有更优的语句?
2、是否我在选项-》维护中设置了内存保留的K线数量后,即使图表不显示,但公式仍能正常工作?
请老师帮忙解答一下,非常感谢!
1.这个我没有好的算法,毕竟1分钟上离今天高点最近的点,不一定是日线最高点
2.不行,公式要在图表上运行,必须是要应用在图表上
第2点,我指的是图表加载了默认的360条k线,但我往前寻找可能是一千多条,这会影响到运算结果的。我想确认一下就是公式计算的依据是以图表显示的360条为准,还是以我设定的内存5000根为准?
这样可能会影响运算结果的哦,有什么办法修正?等于我在框架的设置时候,就默认打开比如2000根k线那样?
以下是引用jinzhe在2015/8/18 15:43:10的发言:
1.这个我没有好的算法,毕竟1分钟上离今天高点最近的点,不一定是日线最高点
2.不行,公式要在图表上运行,必须是要应用在图表上
如果就是在1分钟周期寻找的话,是不是用下面的语句:
A:SETVAL(ISLASTBAR,DH,-DATACOUNT,DH),LINETHICK0,NODRAW;
HSTHB:BARSLAST(H>A),NODRAW;
HSTH:=REF(H,HSTHB),NODRAW;
hh:=valuewhen(islastbar,hhv(h,todaybar));
ss:=CONST(hh );
nn:barslast(h>ss);
nn为所求值