以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  跨周期引用TOPRANGE的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=74190)

--  作者:snowdog
--  发布时间:2015/1/8 15:40:10
--  跨周期引用TOPRANGE的问题
策略跑在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,不知道哪里出问题了,请帮忙看看哪里出问题了,多谢了



--  作者:jinzhe
--  发布时间:2015/1/8 15:46:00
--  
处理中请稍等
--  作者:fly
--  发布时间:2015/1/8 16:12:28
--  

TOPRANGE(X):X是近多少周期内X的最大值

例如:TOPRANGE(HIGH)表示当前最高价是近多少周期内的最高价

 

参数写错了,第一个策略本身就只有0值,引出来的也就只能是0了,改个其它参数,比如high

topn:TOPRANGE(high),NODRAW;
lown:LOWRANGE(high),NODRAW;


--  作者:snowdog
--  发布时间:2015/1/8 16:26:10
--  
改成HIGH的话就跟我原来的意图不一样了,TOPRANGE的参数只是一个价格而已,我是拿1分钟线的高点作为参数来调用,不应该都是0的
--  作者:snowdog
--  发布时间:2015/1/8 20:57:33
--  
又有新线索,在调试和保存策略时,会提示这个
图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2015/1/9 9:05:29
--  
此问题无解,此函数不能用来调用
--  作者:snowdog
--  发布时间:2015/1/9 10:19:41
--  
行吧。我另外想办法。TOPRANGE本身内部就是递归调用是吧,会消耗很多资源,然后stkindi又限制了调用次数。因为TOPRANGE不跨周期是可以用的。
--  作者:jinzhe
--  发布时间:2015/1/9 10:24:46
--  
 是的
--  作者:snowdog
--  发布时间:2015/1/12 11:49:30
--  
我重新写了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;

--  作者:jinzhe
--  发布时间:2015/1/12 13:23:58
--  
循环计算了