以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  [求助]注册表数值写入有误  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=137108)

--  作者:wujiazhu
--  发布时间:2016/7/26 15:38:00
--  [求助]注册表数值写入有误
GZ:=STRCAT(STRTRIMRIGHT(STKLABEL,STRRIGHT(STKLABEL,2)),\'GZ\');//跟踪价
GZQ:=STRCAT(STRTRIMRIGHT(STKLABEL,STRRIGHT(STKLABEL,2)),\'GZQ\');//跟踪周期

GZX:GETREGVAL(\'SettingBJX\',GZ,0);
GZZQ:GETREGVAL(\'SettingBJX\',GZQ,0);

RMZQ:=REF(MA(C,GZZQ),GZZQ*0.2);
RMZQ1:=CONST(ROUND(RMZQ));
IF GZX<>RMZQ1 THEN SETREGVAL(\'SettingBJX\',GZ,RMZQ1);

这个公式我应用在二十多个期货指数品种,已有几次发现出错,而且都是单个品种出现,其他品种均正确
今天FG13玻璃指数的GZZQ=640,写入注册表的的GZX值出现错误如下图

图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:无标题1.png
图片点击可在新窗口打开查看

请帮忙查查原因

--  作者:wujiazhu
--  发布时间:2016/7/26 15:40:28
--  
我检查过 RMZQ1的结果都是正确的。就是GZX出现错误
--  作者:wujiazhu
--  发布时间:2016/7/26 15:55:17
--  
模式是序列模式
--  作者:wujiazhu
--  发布时间:2016/7/26 16:10:23
--  
问题二:

RMA20:=ref(ma(c,20),4);
RMA40:=ref(ma(c,40),8);
RMA80:=ref(ma(c,80),16);
RMA160:=ref(ma(c,160),32);
RMA320:=ref(ma(c,320),64);
RMA640:=ref(ma(c,640),128);


C20:=IF(REF(CROSS(C,RMA20),1) OR REF(CROSS(RMA20,C),1),20,0);
C40:=IF(REF(CROSS(C,RMA40),1) OR REF(CROSS(RMA40,C),1),40,0);
C80:=IF(REF(CROSS(C,RMA80),1) OR REF(CROSS(RMA80,C),1),80,0);
C160:=IF(REF(CROSS(C,RMA160),1) OR REF(CROSS(RMA160,C),1),160,0);
C320:=IF(REF(CROSS(C,RMA320),1) OR REF(CROSS(RMA320,C),1),320,0);
C640:=IF(REF(CROSS(C,RMA640),1) OR REF(CROSS(RMA640,C),1),640,0);

ZQ:=MAX(MAX(MAX(MAX(MAX(C20,C40),C80),C160),C320),C640);//开仓选择的周期

IF ZQ>GZZQ THEN BEGIN SETREGVAL(\'SettingBJX\',GZQ,ZQ);
END

有时候ZQ变大了GZQ也不会更新,也只是有时候会出现这样的问题



--  作者:wujiazhu
--  发布时间:2016/7/27 9:27:43
--  
怎么没人回答我的问题?
--  作者:yukizzc
--  发布时间:2016/7/27 9:36:14
--  
IF ZQ>GZZQ THEN
BEGIN
SETREGVAL(\'SettingBJX\',GZQ,ZQ);
debugfile
END
加一个deugfile看下大于的时候有没有输出,确认条件进入了if里面

图片点击可在新窗口打开查看此主题相关图片如下:{wwu)vhc1kct_siocw(f25.png
图片点击可在新窗口打开查看

--  作者:wujiazhu
--  发布时间:2016/7/27 14:04:46
--  

请再解答一下第一个问题

 

金字塔版本:3.80

 

图表、后台,   运行模式都是:序列模式

                    工具--选项--维护,内存保留:800,图形显示:800

后台设置如下:

运行周期:日K线

固定时间间隔:2秒

使用   800   根K线。

 

图表显示是正确的

后台写入注册表的值,跟图表不一样,怀疑是后台计算出来的值就是错误的,希望工作人员能帮我跟踪答疑,谢谢


--  作者:yukizzc
--  发布时间:2016/7/27 15:58:19
--  

GZZQ:GETREGVAL(\'SettingBJX\',GZQ,0);

这个值取到了0,所以对后面的计算ma还有ref的参数都是0了造成后面的计算其实都是不对的

你把GZZQ定义成一个有数值的数字然后就是正确的了


--  作者:wujiazhu
--  发布时间:2016/7/27 16:53:53
--  


图片点击可在新窗口打开查看此主题相关图片如下:无标题3.png
图片点击可在新窗口打开查看

 

GZZQ取值正确,计算仍不正确。

我初步研究应该是计算k线数据出了问题,在图表我缩小k线就没问题了。但后台我一直用的都是800k仍有上述问题


--  作者:yukizzc
--  发布时间:2016/7/27 17:58:17
--  

GZZQ把这个定义成一个具体变量然后看下呢

IF GZX<>RMZQ1 and ifislastbar THEN SETREGVAL(\'SettingBJX\',GZ,RMZQ1);
写入的操作限制在最新一根k上才进行写入,试试呢