以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 某些股票出现-1.#R的错误 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=163980) |
-- 作者:guojordan -- 发布时间:2018/6/12 13:22:19 -- 某些股票出现-1.#R的错误 有个指标公式,在大部分股票上都可以成功应用,但在某些股票上的结果是-1.#R.
这个该怎么解决呢?
源代码如下: 序列模式公式 : a1:= ref(h,N)=hhv(h,2*N+1); //为前后N天的波峰
逐K模式公式: 前高周期:= if(hhv(h,5)=hhv(h,0),0,barslast(previoushigh=0)); 前高:=rounds(if(hhv(h,5)=hhv(h,0),0,ref(h,前高周期)),2); cc:=filter(c>0,5);
具体错误见图片,前两个是错误的例子,第三个是正确的例子。日线数据都是补全了的。
|
-- 作者:FireScript -- 发布时间:2018/6/12 13:24:33 -- 没看到图。图表用IE浏览器传才行。 |
-- 作者:FireScript -- 发布时间:2018/6/12 13:27:45 -- 一般这种都是数据出问题了,可能是计算所需量不足,你再拓展下数据量试下。或者你说是那个品种,我去看下。 |
-- 作者:guojordan -- 发布时间:2018/6/12 13:49:16 --
图表上传了 |
-- 作者:guojordan -- 发布时间:2018/6/12 13:51:01 -- 您说的拓展数据量是什么意思呢?
我测试的时候选的时间周期感觉已经挺长的了。
而且在图表模式下,已经把上市以来所有周期都涵盖近来了,譬如603816和603866,但都有这个问题 |
-- 作者:FireScript -- 发布时间:2018/6/12 14:13:08 -- 序列模式的代码里有些变量在某些品种上的计算结果导致的。 最终导致HD一直是0,因此barslast的计算就出问题了 ,因为不存在 满足 “波峰高度>近日高点” 这个条件的情况了。具体原因只能说和你本身计算逻辑以及参数有关系。 那个桃李面包在我这里就正常,我N设置成3就是可以的。
|
-- 作者:FireScript -- 发布时间:2018/6/12 14:16:17 -- 这个也正常了。。你调整下参数试试?
|
-- 作者:guojordan -- 发布时间:2018/6/12 14:46:08 -- 我把N设为3还是一样的问题呢。 我调试了一下,在第一个序列模式下,所有输出都是正常的。以截至18/3/15的桃李面包为例,“满足前高”的最近一个零值出现在18/1/18.
序列模式,令N=13 a1:= ref(h,N)=hhv(h,2*N+1); //为前后N天的波峰 在序列模式下调试的结果看上去一切正常。满足前高的数字一直在正确地赋值。
但是当进入第二个逐K模式时, previoushigh:=stkindi(\'\',\'前高判断中间值.满足前高\',0,6,0); //最近的一个零值表示最近的一个前高 前高周期:=barslast(previoushigh=0); 前高:=rounds(if(hhv(h,13)=hhv(h,0),0,ref(h,前高周期)),2); cc:=filter(c>0,3);
桃李面包previoushigh就一直没有数字,而飞科电气previoushigh就一直正常有数字。
您这边也是同样的作法吗?太奇怪了。
我是把第一个公式放在条件选股下,第二个公式放在技术指标里面的,这个应该不会有影响啊? 另外日线数据都补全了的,其他还有什么我没有考虑到的呢?
|
-- 作者:guojordan -- 发布时间:2018/6/12 14:54:11 -- 也就是说,在第一个公式中,大家都是正确计算的。
但是在第二个公式中,有的前高数值能够传递出来,有的在我这里就传递不出来。实在是不知道哪里出了问题。 |