以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://www.weistock.com/bbs/list.asp?boardid=4) ---- Ref(Hhv,X)返回值不一致 (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=162928) |
-- 作者:jimcnab -- 发布时间:2018/4/21 20:47:51 -- Ref(Hhv,X)返回值不一致 一个比较简单的MACD相关的副图指标,全部代码如下:
INPUT:S(12,1,100,1),P(26,1,100,1),M(9,1,100,1);
如图,在中证500日K线副图中,2018年4月13日,运行变量查看器可看到,A=0,B=1,D=2, 所以 MaxClose = Ref(Hhv(Close,D),B + A) = Ref(Hhv(Close,2),1) 按理来说 MaxClose 的值与REFHHV 相等,但实际上却不相等,MAXCLOSE: 6180.110 REFHHV: 6086.610 自己手算REFHHV的值正确,MAXCLOSE的值不正确,为什么? 不只是这条K线出现不一致,只要是A=0,B=1,D=2的K线,其他品种也都不一致。 |
-- 作者:FireScript -- 发布时间:2018/4/21 22:07:25 -- 因为是这样子的,你ref(hhv(close,d),a+b); 这句代码 这里面a+b是对应当前K的a+b的值,比如说是1. 但是这个d却不是当前K对应的d,而是ref(d,a+b)对应的d。这个和ref的原理有关。
[此贴子已经被作者于2018/4/21 22:19:17编辑过]
|
-- 作者:jimcnab -- 发布时间:2018/4/21 22:29:02 -- 以下是引用FireScript在2018/4/21 22:07:25的发言: 不是很理解什么意思,有没有相关文档或帖子介绍?
因为是这样子的,你ref(hhv(close,d),a+b); 这句代码 这里面a+b是对应当前K的a+b的值,比如说是1. 但是这个d却不是当前K对应的d,而是ref(d,a+b)对应的d。这个和ref的原理有关。
[此贴子已经被作者于2018/4/21 22:19:17编辑过]
|
-- 作者:FireScript -- 发布时间:2018/4/21 22:37:53 -- 当前K的a+b是1,d是2 MaxClose : Ref(Hhv(Close,D),B + A),NODRAW; maxclose计算的是上一个K位置的hhv(close,d),这里的d的值相应的也是上一个K位置对应的D指,比如说是5 ,那么这里计算的就是ref(hhv(c,5),1) REFHHV: Ref(Hhv(Close,2),1),NODRAW,COLORYELLOW; REFHHV计算的是上一个K位置的Hhv(Close,2) ,最终计算的是ref(hhv(c,2),1) 因此在你的例子里REFHHV和MaxClose 并不一样。 不知道这样说你能不能理解。
|
-- 作者:jimcnab -- 发布时间:2018/4/21 23:02:32 -- 以下是引用FireScript在2018/4/21 22:37:53的发言: 我想要maxclose 中的D值也取本周期的,也就是计算ref(hhv(c,2),1),有解决方法吗?当前K的a+b是1,d是2 MaxClose : Ref(Hhv(Close,D),B + A),NODRAW; maxclose计算的是上一个K位置的hhv(close,d),这里的d的值相应的也是上一个K位置对应的D指,比如说是5 ,那么这里计算的就是ref(hhv(c,5),1) REFHHV: Ref(Hhv(Close,2),1),NODRAW,COLORYELLOW; REFHHV计算的是上一个K位置的Hhv(Close,2) ,最终计算的是ref(hhv(c,2),1) 因此在你的例子里REFHHV和MaxClose 并不一样。 不知道这样说你能不能理解。
|
-- 作者:wenarm -- 发布时间:2018/4/21 23:22:24 -- 没办法。。上面的方式看似逻辑相同,实则REF中嵌套的hhv也是序列变量,在ref执行过程中,是先找到前几根,然后再hhv(),这时的hhv取的已经向前找到n根以后的k线所对应的值。而使用定值作为其周期参数的值,是属于完全两种不同的逻辑。
[此贴子已经被作者于2018/4/21 23:24:41编辑过]
|
-- 作者:jimcnab -- 发布时间:2018/4/21 23:53:48 -- 以下是引用wenarm在2018/4/21 23:22:24的发言: 那个REFHHV: Ref(Hhv(Close,2),1) 只是我发现结果不对后测试用的,实际还是使用MaxClose : Ref(Hhv(Close,D),B + A) 的计算方式,这里的D没办法取当前K线的值吗,有什么变通方法吗?
没办法。。上面的方式看似逻辑相同,实则REF中嵌套的hhv也是序列变量,在ref执行过程中,是先找到前几根,然后再hhv(),这时的hhv取的已经向前找到n根以后的k线所对应的值。而使用定值作为其周期参数的值,是属于完全两种不同的逻辑。
[此贴子已经被作者于2018/4/21 23:24:41编辑过]
|
-- 作者:wenarm -- 发布时间:2018/4/22 9:37:13 -- 没有办法 |