以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  15至60分钟周期上,这个KKC每次来个TICK都会变化,不断变大直到和DDC一样  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76756)

--  作者:qq代人发帖
--  发布时间:2015/3/23 10:07:16
--  15至60分钟周期上,这个KKC每次来个TICK都会变化,不断变大直到和DDC一样
VARIABLE:rc[]=0;

refc:=ref(close,1);
if date<>ref(date,1) then 
begin
rc:=refc;
            ddc:=HHV(rC,cm);
            kkc:=LLV(rC,cm);

end
!DDC:DDC;
!kkC:KKC;
这段代码的本意是自己计算CM日的最高价和最低价,用RC数组存放昨日收盘价,然后用HHV和LLV来求数组最近CM个数值的最大值和最小值。
今天发现一个问题,15至60分钟周期上,这个KKC每次来个TICK都会变化,不断变大直到和DDC一样,这是什么问题啊,

--  作者:jinzhe
--  发布时间:2015/3/23 10:11:16
--  

日线上还以算算,分钟线上这两个就是一样的,分钟线上rc不就是一直是一样的除非换日了?

[此贴子已经被作者于2015/3/23 10:11:50编辑过]

--  作者:jinzhe
--  发布时间:2015/3/23 10:12:43
--  

refc:=ref(close,1);
if date<>ref(date,1) then 
begin
            ddc:=HHV(refC,cm);
            kkc:=LLV(refC,cm);

end

--  作者:无极无名
--  发布时间:2015/3/23 10:48:35
--  
老大,你这样写,第一我看不懂意思,第二根本通不过,统计函数对序列变量不能用在控制语句里面。所以,我在换日时,把昨天的收盘价赋值给空数组RC,换一次日进一个数据,然后在对RC进行统计运算,这样就可以在控制里面实现运算,而且实现了我要在小周期里面计算日线最高最低价的本意。在进行历史测试时,没有问题。今天挂上动态行情测试,结果发现随着行情数据刷新,KKC不断被刷新,直到和DDC相同。并且,公式刷新之后,恢复正常值,然后又开始变,但也不总是出现这种现象,有时不能再现。
--  作者:无极无名
--  发布时间:2015/3/23 11:23:14
--  
我可以解释这个现象,请金字塔查明原因。这个原因是rc:=refc;这个语句每个tiCK都被执行,不断地把refc往数组RC里面填充,而HHV()和LLV()计算没有问题,只是因为我今天连接的是股指,昨天收盘REFC是新高,正好REFC=hhv(RC,CM),所以无论填充多少个REFC进去,HHV(RC,CM)计算结果不变,而LLV(RC,CM)随着填充的RC越来越多,数值不断抬高,直到RC数组里面全是REFC,结果就和HHV(RC,CM)一样不动了。每来一个TICK数组都被填充一次,这是金字塔的机理,还是一个BUG,如何解决?
--  作者:jinzhe
--  发布时间:2015/3/23 11:27:37
--  

我们也在处理这个问题,请等待我们的结果


--  作者:无极无名
--  发布时间:2015/3/23 13:45:55
--  
这个问题已经解决,每次赋值前,用SETUBOUND强行设置数组上届。
--  作者:jinzhe
--  发布时间:2015/3/23 14:04:12
--  
图片点击可在新窗口打开查看能否贴出解决方案供大家参考一下
--  作者:无极无名
--  发布时间:2015/3/23 14:13:19
--  
VARIABLE:DAYS=0,RC[]=0;


refc:=ref(close,1);
if date<>ref(date,1) then 
begin
DAYS:=DAYS+1;
SETUBOUND(rc,days);
rc:=refc;
ddc:=HHV(rC,cm);
kkc:=LLV(rC,cm);
end
[此贴子已经被作者于2015/3/23 14:14:28编辑过]

--  作者:jinzhe
--  发布时间:2015/3/23 14:16:53
--  
图片点击可在新窗口打开查看