以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 代码中两个莫名其妙的问题! (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10485) |
-- 作者:matador_liu -- 发布时间:2012/3/8 20:42:37 -- 代码中两个莫名其妙的问题! 两个问题(注释中也有写): 1、下面代码中why1与why2为什么不相同? 2、Length2 的两种声明方式为什么会导致不同的Fisher_2? 我觉得我犯了低级错误,可实现找不出来了,求点化:) RUNMODE : 0; //########################################### _BARPOS := BARPOS; Fisher : 0; Trigger1 : 0, linethick0; Trigger2 : 0, linethick0; Value1 := 0; Fisher_2 : 0; Value2 := 0; VARIABLE : Length = 8; IF _BARPOS <= Length * 2 THEN EXIT; price := (High + Low) / 2; //"JMA.JMA"(2); //(High + Low) / 2; "AMA.AMA"; {1 注释掉此段代码,why1 why2便相同了} MaxH := HHV(price, Length); MinL := LLV(price, Length); Value1 := 0.5 * 2.0 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.5 * Value1[_BARPOS-1]; if Value1 > 0.9999 THEN Value1 := 0.9999; if Value1 < -0.9999 THEN Value1 := -0.9999; Fisher := 0.25 * Log((1 + Value1) / (1 - Value1)) + 0.5 * Fisher[_BARPOS-1]; Trigger1 := REF(Fisher, 1); Trigger2 := Fisher[_BARPOS-1]; {2 下面两句会出现不同的Fisher_2值,为什么?} //Length2 := Length; VARIABLE : Length2 = Length; Value2 := 0.5 * 2.0 * ((price - LLV(price, Length2)) / (HHV(price, Length2) - LLV(price, Length2)) - 0.5) + 0.5 * Value2[_BARPOS-1]; if Value2 > 0.9999 THEN Value2 := 0.9999; if Value2 < -0.9999 THEN Value2 := -0.9999; Fisher_2 := 0.25 * Log((1 + Value2) / (1 - Value2)) + 0.5 * Fisher_2[_BARPOS-1]; why1 : REF(Fisher_2, 1), LINETHICK0; why2 : Fisher_2[_BARPOS-1], LINETHICK0; |
-- 作者:jinzhe -- 发布时间:2012/3/9 9:01:46 -- 问题正在解决中 |
-- 作者:matador_liu -- 发布时间:2012/3/16 16:12:36 -- 请问 这个问题有结果了吗? |
-- 作者:王锋 -- 发布时间:2012/3/16 20:16:57 -- 很难理解你的代码用意,这种问题别人很难从中解决,建议 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题4, 仔细阅读金字塔的调试教程,使用单步跟踪,看看到底是问题出在哪一句上,具体到某个函数后,再有疑问我们就可以帮助解决了 |
-- 作者:matador_liu -- 发布时间:2012/3/21 21:08:58 -- 不用理解代码用意:)这一个简单数学算法(对一些变量作fisher转换),我只是怀疑代码编译有问题!即: why1 : REF(Fisher_2, 1), LINETHICK0; why2 : Fisher_2[_BARPOS-1], LINETHICK0; 这句中,wh1与wh2值应该相同才是,但在这段代码中它们是不同的! 可以这样验证:将这段代码中Fisher_2全部替换为Fiii_2,这时wh1与wh2值是相同的! 我猜测:代码中同时存在 Fisher与 Fisher_2两个变量,编译器有bug,语句分析有问题!因为前两天我还碰到类似问题,即代码中有CPeriod变量,但编译不过去,提示“2Period如何如何”,但我的代码中真没有2Period这个变量,也不是CPeriod重复定义问题,一看就是编辑阶段问题。后将此变量改为CP后就编译通过了! 这是能提示错误,还好;像前段代码中不提示却计算错误,则太可怕了!请即时跟踪此问题,多谢!! |
-- 作者:admin -- 发布时间:2012/3/22 11:18:32 -- 正在解决处理 |
-- 作者:admin -- 发布时间:2012/3/23 11:30:00 -- 求助:自定义函数调用问题 问题已经得到解决,主要原因是变量名在编译时只采用了前面位数进行匹配,你暂时都使用REF来控制处理就可以了,等待下个版本升级 |
-- 作者:matador_liu -- 发布时间:2012/3/23 14:43:00 -- 主要是用在判断和循环语句内,用REF还要在外面声明。请给我说一下怎么命名能回避这个问题就好啦,多谢! |