以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助] 有个源码 看了N遍了,实在无法得想要的数值。请帮我看看,非常感谢!!  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=53206)

--  作者:clant
--  发布时间:2013/6/19 19:06:19
--  [求助] 有个源码 看了N遍了,实在无法得想要的数值。请帮我看看,非常感谢!!

求助   这源码 看了N遍了,实在无法得想要的数值

 

想取得满足( MACD>0.5 AND VA2 AND VA2!=UU) 条件下 macd 的值。

以及满足( MACD<-0.5 AND VA4 AND VA4!=UU) 条件下 macd 的值。

分别用2个 VARIABLE()存储。

 

 

请帮我改改,非常感谢!!

 

 

 

源码如下:

 

//----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;

 

//-----变量声明----
GLOBALVARIABLE:前高总量=3,前低总量=3;
VARIABLE:前高MACD值仓库[1]=0, 前低MACD值仓库[1]=0;

 

//------高低点计算------
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;

 


//--------存储高低点值------
 
//  IF MACD>0.5 AND VA2 AND VA2!=UU then 前高总量=前高总量+1;
// SETUBOUND(前高MACD值仓库,前高总量),
// 前高MACD值仓库[前高总量]=MACD;

[此贴子已经被作者于2013/6/19 19:06:52编辑过]

--  作者:jinzhe
--  发布时间:2013/6/20 9:22:06
--  

想取得满足( MACD>0.5 AND VA2 AND VA2!=UU) 条件下 macd 的值。

以及满足( MACD<-0.5 AND VA4 AND VA4!=UU) 条件下 macd 的值。

分别用2个 VARIABLE()存储。

 

 

variable:nn1=0,nn2=0;

nn1:valuewhen(MACD>0.5 AND VA2 AND VA2!=UU,macd);

nn2:valuewhen(MACD<-0.5 AND VA4 AND VA4!=UU,macd);


--  作者:clant
--  发布时间:2013/6/20 9:51:30
--  

编译提示错误:变量名“nn1”重复。。

 

 


--  作者:jinzhe
--  发布时间:2013/6/20 10:11:32
--  
就是nn1被用过了,改成nn5,nn6之类的都行
--  作者:clant
--  发布时间:2013/6/20 10:13:14
--  
终于明白了。

nn1:valuewhen(MACD>0.5 AND VA2 AND VA2!=UU,macd);

 

要改成

nn1:=valuewhen(MACD>0.5 AND VA2 AND VA2!=UU,macd);


--  作者:clant
--  发布时间:2013/6/20 10:13:49
--  公式怎样测评最科学?
谢谢!!