策略跑在1分钟周期上,现在想知道当前1分钟K线的高点是几日高点
先写了个指标TOPX,如下,其中P是价格Price的意思
INPUT:P(100,1,100000,1);
topn:TOPRANGE(P),NODRAW;
lown:LOWRANGE(P),NODRAW;
在策略(1分钟周期)中:
M:=NUMTOSTR(H,0);
N日高点:=stkindi('','TOPX.topn('& M &')',0,6,-1);
结果,N日高点的值总是为0,不知道哪里出问题了,请帮忙看看哪里出问题了,多谢了
TOPRANGE(X):X是近多少周期内X的最大值
例如:TOPRANGE(HIGH)表示当前最高价是近多少周期内的最高价
参数写错了,第一个策略本身就只有0值,引出来的也就只能是0了,改个其它参数,比如high
topn:TOPRANGE(high),NODRAW;
lown:LOWRANGE(high),NODRAW;
改成HIGH的话就跟我原来的意图不一样了,TOPRANGE的参数只是一个价格而已,我是拿1分钟线的高点作为参数来调用,不应该都是0的
行吧。我另外想办法。TOPRANGE本身内部就是递归调用是吧,会消耗很多资源,然后stkindi又限制了调用次数。因为TOPRANGE不跨周期是可以用的。
我重新写了TOPX指标,没有再使用TOPRANGE函数了,但编译时还是提示引用公式过多,请帮忙看看,软件版本V3.41
调用TOPX的策略代码如下:
M:=NUMTOSTR(H,0);
N日高点:=stkindi('','TOPX.HHIDX('& M &')',0,6,-1);
TOPX指标如下,计算价格P是几周期最高,周期数做了限制,最大为N
INPUT:P(4666,1,100000,1),N(30,10,500,1);
PT:=HIGH;
HIDX:=0;
HFLAG:=0;
IF BARPOS<=N THEN EXIT;
FOR I=0 TO N DO
BEGIN
IF PT[BARPOS-I]>P THEN
BEGIN
HIDX:=I;
HFLAG:=1; // 搜索到比P高的价格
BREAK;
END
END
IF HFLAG=0 THEN HIDX:=N+1;
HHIDX:HIDX;