以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp)
-- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4)
---- 符合条件却没有触发 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=172895)
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 10:38:49
-- 符合条件却没有触发
input:grid(3,1,60,1); variable:level=0; dist:=barslast(date<>ref(date,1)); oo:=ref(open,dist); cc:=oo+level*grid*mindiff; if high>=cc+grid*mindiff then level:=level+1; if low<=cc-grid*mindiff then level:=level-1; cc:=oo+level*grid*mindiff;
cc1:cc;
此主题相关图片如下:qq截图20191106103251.png

如图红色方框的位置条件达到,cc1的值正常改变。而黄色方框的位置,条件达到了,cc1的值却还是原来的值。看起来是随机出现这样的情况。请问是我代码写错了吗?该怎么写才好?谢谢。
|
-- 作者:FireScript
-- 发布时间:2019/11/6 11:06:49
--
你光标移动过去看下具体价格情况。你设置的参数是3 至少要差3*MINDIFF 也就是0.6 才会改变。你标记位置只能看到LOW在cc1下面,但是具体差不多少看不出来啊。
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 11:16:58
--
此主题相关图片如下:qq截图20191106111039.png

此主题相关图片如下:qq截图20191106111057.png

值是达到的,因为都是按跳来算的,应该没有别的中间值
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 11:21:29
--
4993.8,4993.2 有达到0.6的差值的。
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 11:37:36
--
请大神帮忙修改一下代码,这个实在找不出什么原因。有能达到类似效果的代码就行。谢谢
|
-- 作者:FireScript
-- 发布时间:2019/11/6 12:33:54
--
可能不是代码原因,我下午盘中再确认下,有可能是计算小数点的问题。
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 13:22:22
--
好的,谢谢
|
-- 作者:yukizzc
-- 发布时间:2019/11/6 14:35:49
--
开高低收这些数值在计算时候内部有浮点误差,你把high>=cc+grid*mindiff这种条件输出看下,有些数据不能光看图上就比如图上价格是2.2如果你直接拿价格和2.2座比较很有可能是不满足条件的,虽然肉眼看着是满足 所以把条件都给当作变量在图上看下。
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 15:02:43
--
input:grid(3,1,60,1); variable:level=0;
dist:=barslast(date<>ref(date,1)); oo:=ref(open,dist); cc:=oo+level*grid*mindiff; if c>=cc+grid*mindiff then begin level:=level+1; end if c<=cc-grid*mindiff then begin level:=level-1; end cc:=oo+level*grid*mindiff;
cc1:cc,colormagenta; level1:level,nodraw; aa:cc+grid*mindiff,nodraw; bb:cc-grid*mindiff,nodraw; //c1:c;
此主题相关图片如下:qq截图20191106150121.png

这个有尝试排除过,还是无法排除哪个步骤的问题。
|
-- 作者:zaiyuanfang1
-- 发布时间:2019/11/6 15:06:16
--
input:grid(3,1,60,1); variable:level=0; dist:=barslast(date<>ref(date,1)); oo:=ref(open,dist); cc:=oo+level*grid*mindiff; if c>=cc+grid*mindiff then level:=level+1; if c<=cc-grid*mindiff then level:=level-1; cc:=oo+level*grid*mindiff; cc1:cc;
把high跟low都改为c,也还是不行,因为在分笔周期上,ochl已经变成一个价格了。结果也是一样的。
|