以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  符合条件却没有触发  (http://weistock.com/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已经变成一个价格了。结果也是一样的。