以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- |