以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2)
---- REF函数的调试问题,调试了几天都没有明白 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=87196)
|
-- 作者:分析者
-- 发布时间:2015/11/11 16:45:58
-- REF函数的调试问题,调试了几天都没有明白
H2:=ref(high,1); H1:=ref(H2,1); tmph2:=ref(h2,1); tmph1:=ref(h1,1); bool:=close>open; if bool then BEGIN h2:=tmph2;h1:=tmph1; end
此主题相关图片如下:1.png
此主题相关图片如下:2.png
用鼠标右键查看运行时变量,明明上一根K线的H2是15.57,第二根K线执行之前H2还是15.57,理论上H1应该是ref(H2,1),应该还是15.57,可实际结果是 15.64,是上上根K线的高点。
单步调试:看的很清楚,当前K线代码执行之前,上一根K线的H2是15.57 ,然后执行当前K线的 H1:=ref(H2,1); 执行完之后,H1就是15.64
此主题相关图片如下:3.png
此主题相关图片如下:4.jpg
|
-- 作者:分析者
-- 发布时间:2015/11/11 16:47:06
--
就因为这么一个问题,耽误了我好多天进度,还没有进入到正式开发。
|
-- 作者:yukizzc
-- 发布时间:2015/11/11 16:59:43
--
H2:=ref(high,1); H1:=ref(H2,1); //这个地方取的是上一根k线执行这一行时候 H2的值,不是上一根k最后的H2 tmph2:=ref(h2,1); tmph1:=ref(h1,1); bool:=close>open; if bool then BEGIN h2:=tmph2;h1:=tmph1; end
您如果对这儿还有疑问直接电话我把,2033087
|
-- 作者:分析者
-- 发布时间:2015/11/11 17:04:04
--
021-2033087?提示号码不正确呢
|
-- 作者:yukizzc
-- 发布时间:2015/11/11 17:07:44
--
20339087,漏了一位
|
-- 作者:分析者
-- 发布时间:2015/11/12 14:56:02
--
您好,昨天与您沟通后,还有两点疑惑:
1、知道这里的H1其实是取得上上根K线的H2,但我就要取昨天的H2,怎么处理呢?可否麻烦您直接在我上述代码上修改一下。
2、为什么我只要将“if bool then BEGIN h2:=tmph2;h1:=tmph1; end”这句话删除,H1取得就是昨天的H2。
|
-- 作者:yukizzc
-- 发布时间:2015/11/12 15:38:20
--
H2:=ref(high,1); tmph2:=ref(h2,1); tmph1:=ref(h1,1); bool:=close>open; if bool then BEGIN h2:=tmph2;h1:=tmph1; end
H1:=ref(H2,1);
最后再去引用,另外不要变量和变量之间来回引用,必须h1放在最后去引用,才是上一根k最后的h2
|
-- 作者:分析者
-- 发布时间:2015/11/12 16:45:37
--
这是您昨天说的两个方法之一,但这不能满足我的需求啊,我不能将H1放在所有代码的最后,因为在前面的代码中需要对其进行计算,而且那个IF语句的目的就是根据不同条件对H1做不同赋值。
|
-- 作者:分析者
-- 发布时间:2015/11/12 16:45:56
--
记得您昨天说还有一个方法的。
|
-- 作者:yukizzc
-- 发布时间:2015/11/12 16:53:37
--
没有办法的,你必须在最后去引用。
|