以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [分享]EXIT命令慎用,请确认一下  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=8865)

--  作者:vincentwoo
--  发布时间:2011/11/8 13:16:46
--  [分享]EXIT命令慎用,请确认一下

今天指标发现有异常,调试完成后,

 

发现前半段有一个EXIT的代码。在K线模式下,如果前一个K是状态是EXIT的,后一个K线,EXIT的语句,还有REF之类的语句取到的值就为0,请版主确认一下是为什么的呢?

 

 

M:=BARSLAST(DATE<>REF(DATE,1))+1;

IF M <= 3 THEN EXIT;

TESTMVALUE:M,LINETHICK0;

TESTC:REF(C,1),LINETHICK0;

 

 

m=4的时候,TESTC是零,为什么呀?????????????



--  作者:fly
--  发布时间:2011/11/8 13:43:51
--  

你用以下在图表上调试一下,看看就知道了

这里的IF M <= 3 THEN EXIT;根本就没起作用

 

M:=BARSLAST(DATE<>REF(DATE,1))+1;
IF M <= 3 THEN EXIT;

TESTMVALUE:M,LINETHICK0;
TESTC:REF(C,1);//这个画线一直是显示的,不管是序列还是逐周期

 

可能跟EXIT前的条件判断有关.

 

象以下写出来的,就是好好的.

//不是品种CU,不执行后续程序
if STRCMP(STRLEFT(STKLABEL,2) ,\'RU\')<>0 then exit;


--  作者:vincentwoo
--  发布时间:2011/11/8 14:20:52
--  

 

这里的 IF M <= 3 THEN EXIT;根本就没起作用

 

~~~~~~~~~

忘了告诉你,我是在3分钟K线模式下,做期货没有人用日K线吧。上面的代码,我是试过,才贴出来的!V2.75.... 今天这个版本还有发现其它的问题,信号有问题,重新开程序,或者滑点设置不一样,程序就会不一样。

[此贴子已经被作者于2011-11-8 14:23:54编辑过]

--  作者:fly
--  发布时间:2011/11/8 15:31:05
--  

代码,是分钟K线上使用的.

未在日K线上用


--  作者:admin
--  发布时间:2011/11/8 15:59:01
--  
 

M:=BARSLAST(DATE<>REF(DATE,1))+1;

TESTMVALUE:M,LINETHICK0;

TESTC:REF(C,1),LINETHICK0;

 

IF M <= 3 THEN EXIT;

 

这样改就好了

因为逐K线模式下,每个周期都要调用公式,REF等统计函数,需要每次调用时来保存上次调用的数据,你在他前面用了EXIT,结果将导致前面3个周期没有保存统计数据,结果造成出错


--  作者:vincentwoo
--  发布时间:2011/11/8 16:11:37
--  
这个说法让人信服,我在改策略了,尽量不用EXIT了。