以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  有关EIXT语句在逐K线模式下使用的注意事项  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=43974)

--  作者:王锋
--  发布时间:2013/1/2 13:14:31
--  有关EIXT语句在逐K线模式下使用的注意事项

金字塔提供了 EXIT 控制语句,可以在公式的计算执行时直接退出整个公式的计算,但是在逐K线模式下使用了EXIT语句和统计性质函数时,应该特别注意EXIT语句的使用顺序,如果EXIT在统计类函数调用之前就退出了程序的计算,将会导致整个公式的计算结果出现意想不到的情况,举例如下:

 

if barpos<100 THEN exit;

cond1:=c>o;

wz1:BARSLAST(cond1),NODRAW,COLORWHITE;

xx:=c;
aa:=xx[BARPOS-wz1];

 

上述的公式,在逐K线模式下,当执行的BAR再小于100时就直接退出了整个公式的计算,初看起来是没有问题,但是仔细看确发现在EXIT语句之后还有BARSLAST函数,这样就会导致BARSLAST函数在100周期之前的没有得到有效的执行,从而导致整个计算结果出现异常。

 

这样调整公式就正常了:

 

cond1:=c>o;

wz1:BARSLAST(cond1),NODRAW,COLORWHITE;

 

if barpos<100 THEN exit;

 

xx:=c;
aa:=xx[BARPOS-wz1];

 

将EXIT放到统计类函数之后执行后,这样就可以得到正确完整的结果。

 

同理在IF语句中使用统计类函数时,同样存在这样的问题,详细请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130

 

 若需要禁止提示EXIT中的这个问题在代码中的最前面加入如下语句即可:

  WARNING_DISABLE:2;


--  作者:jinzhe
--  发布时间:2013/1/4 9:42:14
--  
学习了图片点击可在新窗口打开查看
--  作者:readonly
--  发布时间:2013/2/2 20:57:18
--  
这个改变太不合理了。

请问,如果我要用到一句:
aa:=high[barpos-1];

如果不加 if barpos<100 THEN exit; 那请问这句话如何才能使用?
要么是barpos被判断为负数,要么是exit不合法。
所有数组语句几乎都无法使用了。

--  作者:readonly
--  发布时间:2013/2/2 20:59:36
--  
以前实盘测试过没有错误的模型,含有exit的,现在全部不能编译了。



--  作者:王锋
--  发布时间:2013/2/2 23:59:51
--  
以下是引用readonly在2013-2-2 20:59:36的发言:
以前实盘测试过没有错误的模型,含有exit的,现在全部不能编译了。


 

搞清楚,只是提示你,并不是报错


--  作者:readonly
--  发布时间:2013/2/3 10:24:41
--  
我复制了两个原来正常工作的公式,新公式名字旁边出现灰色字体“(未编译)”,是怎么回事?
就是出了提示后,编译不了。点编译按钮也不行。

--  作者:王锋
--  发布时间:2013/2/3 10:26:09
--  

说明你公式出现了语法错误。

请将不能编译的公式贴过来,我们看看


--  作者:readonly
--  发布时间:2013/2/3 10:37:22
--  
急啊,升级了2.97后什么都弄不了了。

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


--  作者:readonly
--  发布时间:2013/2/3 10:39:22
--  
上千行,哪里错误也没提示啊。
点编译按钮,没弹出什么。

该模型以前是正常的,我完整复制它代码新建一个后,就出现未编译了。

--  作者:readonly
--  发布时间:2013/2/3 11:11:21
--  
发现一点规律,改一下公式名称下面的说明,然后直接点关闭,弹出是否保存,这个时候点保存,就不会出现未编译。

八路太狡猾了。