以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]所有的条件都成立了,请问为何调试的时候所有的参数都是0 。。连全局变量在声明的时候 都赋值成1了,调试的时候还是0. 请帮忙看看,谢谢。  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=53220)

--  作者:clant
--  发布时间:2013/6/20 11:01:10
--  [求助]所有的条件都成立了,请问为何调试的时候所有的参数都是0 。。连全局变量在声明的时候 都赋值成1了,调试的时候还是0. 请帮忙看看,谢谢。

所有的条件都成立了,请问为何调试的时候 所有的参数 gao ,di, ,nn1 都是0. 

不应该啊,连全局变量在声明的时候 都赋值成1了,调试的时候还是0.

郁闷啊。

 

请帮忙看看,谢谢。

 

//-----变量声明----
GLOBALVARIABLE:gao=1,di=1;


variable:nn1[1]=0,nn2[1]=0;

 

//--------存储高低点值------

IF MACD>0.5 AND VA2 AND VA2!=UU and gao=1 then nn1[gao]=MACD;
IF MACD>0.5 AND VA2 AND VA2!=UU and gao!=1 then gao=gao+1;
IF MACD>0.5 AND VA2 AND VA2!=UU then SETUBOUND(nn1,gao),nn1[gao]=MACD;
nn3:nn1;

 

 

 

 

源码如下:

 

//----MACD-----
DIF:EMA((CLOSE+h+l)/3,12)-EMA((CLOSE+h+l)/3,26);
DEA:EMA(DIF,9);
MACD:DIF;
STICKLINE(MACD>=0,MACD,0 ,5,0) ,COLORred;
STICKLINE(MACD<0,MACD,0 ,5,0 ),COLORGREEN;
STICKLINE(MACD>0 AND MACD<REF(MACD,1),MACD,0,5,0),COLORYELLOW;
STICKLINE(MACD<0 AND MACD<REF(MACD,1),MACD,0,5,0),COLORBLUE;

//------高低点计算------
VA1:=HHVBARS(MACD,BARSLAST(MACD<0)+1);
VA2:=CROSS(BACKSET(CROSS(0,MACD),REF(VA1,1)+2),0.5);
VA3:=LLVBARS(MACD,BARSLAST(MACD>0)+1);
VA4:=CROSS(BACKSET(CROSS(MACD,0),REF(VA3,1)+2),0.5);
QG:=CROSS(BACKSET(CROSS(0,MACD) OR (ISLASTBAR AND MACD>0),REF(VA1,1)+2),0.5);
前高:DRAWLINE(VA2,MACD,REF(VA2,1),REF(MACD,1),1),COLORMAGENTA;
终点:=IF(ISLASTBAR AND MACD>0 AND MACD=HHV(MACD,BARSLAST(MACD<0)),1,IF(FILTERX(QG,BARSCOUNT(C)),2,DRAWNULL));
UU:=(终点=1 OR 终点=2) AND MACD>0;

//--------获取MACD前高---------
DRAWTEXT(MACD>0.5 AND VA2 AND VA2!=UU,(MACD/10)*9,\'前\'),COLORWHITE;
DRAWTEXT(MACD>0.5 AND VA2 AND VA2!=UU,MACD/10,\'高\'),COLORWHITE;

//--------获取MACD前低---------
DRAWTEXT(MACD<-0.5 AND VA4 AND VA4!=UU,(MACD/10)*9,\'前\'),COLORWHITE;
DRAWTEXT(MACD<-0.5 AND VA4 AND VA4!=UU,MACD/10,\'低\'),COLORWHITE;

 

 

 

//-----变量声明----
GLOBALVARIABLE:gao=1,di=1;
variable:nn1[1]=0,nn2[1]=0;

//--------存储高低点值------

IF MACD>0.5 AND VA2 AND VA2!=UU and gao=1 then nn1[gao]=MACD;
IF MACD>0.5 AND VA2 AND VA2!=UU and gao!=1 then gao=gao+1;
IF MACD>0.5 AND VA2 AND VA2!=UU then SETUBOUND(nn1,gao),nn1[gao]=MACD;
nn3:nn1;


--  作者:jinzhe
--  发布时间:2013/6/20 11:06:44
--  

IF MACD>0.5 AND VA2 AND VA2!=UU and gao!=1 then gao=gao+1;
最后的是判断,不是赋值,

要改成gao:=gao+1;


--  作者:clant
--  发布时间:2013/6/20 11:10:38
--  
谢谢
--  作者:clant
--  发布时间:2013/6/20 11:14:19
--  

该成gao:=gao+1;了,运行后还是0。

 

连GLOBALVARIABLE:gao:=1,di:=1;这个全局变量也是0.。

 

郁闷啊


--  作者:jinzhe
--  发布时间:2013/6/20 11:17:50
--  请老师写个公式

用超全局变量是为了什么目的?


--  作者:clant
--  发布时间:2013/6/20 11:25:12
--  
记录  MACD>0.5 AND VA2 AND VA2!=UU  条件满足时的次数, 并扩充 数组变量 variable:nn1容量,    并将macd值 存入数组变量variable:nn1。
 
 
超全局变量GLOBALVARIABLE:gao:=1,  是用于记录 MACD>0.5 AND VA2 AND VA2!=UU  条件满足时 的次数。
IF MACD>0.5 AND VA2 AND VA2!=UU and gao!=1 then gao=gao+1;
 
 
 
并用于扩充 数组变量 variable:nn1的容量。 SETUBOUND(nn1,gao),
IF MACD>0.5 AND VA2 AND VA2!=UU then    SETUBOUND(nn1,gao),    nn1[gao]:=MACD;
 
 并将macd值 存入扩充后的 数组变量variable:nn1。
nn1[gao]:=MACD;

[此贴子已经被作者于2013/6/20 11:26:41编辑过]

--  作者:clant
--  发布时间:2013/6/20 11:36:51
--  
超全局变量GLOBALVARIABLE:gao:=1。明明在声明的时候已经初始化成1,单步调试运行到这里,居然是0.